2015-08-07 2 views
1

Im делает следующий учебник по текстовой добычи: http://www.r-bloggers.com/text-mining-the-complete-works-of-william-shakespeare/Преобразование списка документов в корпус

Все вполне понятно, но есть одна вещь, которую я не получаю:

В определенный момент перечень документов преобразуется в корпус:

doc.vec <- VectorSource(shakespeare) 
doc.corpus <- Corpus(doc.vec) 

Может кто-нибудь объяснить мне на простом английском языке (желательно с примером), что happing под капотом здесь?

+0

По существу, корпус содержит набор документов, каждый из которых содержит в себе слова (плюс, возможно, различные метаданные о корпусе). Следующий шаг, обычно создающий матрицу терминов документа [tdm] из этого корпуса, рассматривает каждое слово (термин) и сколько раз он используется в каждом документе корпуса. Это создает разреженную матрицу с документами в виде столбцов и строк в качестве терминов, поскольку многие, многие из терминов не отображаются во многих документах (много нулей в матрице, другими словами). Это помогает? – lawyeR

ответ

0

The Corpus - это основная структура пакета tm. Подумайте, что это структура данных, используемая в tm для вашего списка документов. Позже все ваши аналитики и аналитики интеллектуального анализа текста будут получены в результате преобразований, сделанных для вашего Корпуса. Если вы хотите более подробно прочитать и понять, я предлагаю вам прочитать:

https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf Надеюсь, это поможет!

1

Я предполагаю, что проблема связана с частью кода: зачем нам нужен этот дополнительный шаг для создания корпуса?

Корпуса представляют собой объект 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. Вы увидите, что есть другие источники, но я лично их никогда не использую.

Смежные вопросы