Я предполагаю, что проблема связана с частью кода: зачем нам нужен этот дополнительный шаг для создания корпуса?
Корпуса представляют собой объект R, который содержит текст и метаданные. Они создаются функцией tm::Corpus
. Он в основном преобразует коллекцию текстов в хорошо отформатированный объект, который может распознать другая функция интеллектуального анализа текста.
Однако документы могут быть разных форм. Рассмотрим два из них.
- Документы представляют собой кучу текстовых файлов на вашем компьютере, каждый из которых содержит один документ.
- Документы хранятся в символьном векторе в R, причем каждое наблюдение является документом.
Функция Corpus
не может отличить эти два источника самостоятельно. Здесь появляются различные функции Source
. Они формируют документы в соответствии с типом источника, так что Corpus
способен это понять.
Если, к примеру, что вы имели был каталог с именем shakespeare
на вашем компьютере, с одним текстовым файлом для каждой игры (midsummer.txt
, hamlet.txt
и т.д.), вы бы создать свой корпус, как это:
corpus <- Corpus(DirSource(directory="/path/to/shakespeare"))
Это будет читать файлы один за другим и добавлять их в качестве документов в корпус.
Если, как и в вашем учебнике, эти документы уже были прочитаны в R, например, readLines
и были сделаны в data.frame.
shakespeare <- data.frame(title=c("midsummer","hamlet"),
text=c("Love looks not with the eyes...","to be or not to be..."))
Тогда вы должны настроить и использовать VectorSource
corpus(VectorSource(shakespeare$text))
Для получения более подробной информации читайте ?Source
и ?Corpus
. Вы увидите, что есть другие источники, но я лично их никогда не использую.
По существу, корпус содержит набор документов, каждый из которых содержит в себе слова (плюс, возможно, различные метаданные о корпусе). Следующий шаг, обычно создающий матрицу терминов документа [tdm] из этого корпуса, рассматривает каждое слово (термин) и сколько раз он используется в каждом документе корпуса. Это создает разреженную матрицу с документами в виде столбцов и строк в качестве терминов, поскольку многие, многие из терминов не отображаются во многих документах (много нулей в матрице, другими словами). Это помогает? – lawyeR