Создать матрицу частоты документов в R - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь создать матрицу частоты документа в R.

В настоящее время у меня есть фрейм данных (df_2), который состоит из 2 столбцов:

  1. doc_num: какая информация о том, из какого документа происходит каждый термин, взята из

  2. text_token: которая содержит каждое токенизированное слово, относящееся к каждому документу.

Current Dataframe

Размеры df: 79,447 * 2.

Однако в 79,447 строках всего 400 фактических документов.

Я пытался создайте этот dfm с помощью пакета tm.

Я попытался создать корпус (vectorsource), а затем попытаться преобразовать его в dfm с помощью команды с соответствующим именем "dfm".

Однако это указывает, что «dfm () работает только с объектами персонажей, корпусов, dfm, токенов». Я понимаю, что мои данные в настоящее время не в правильном формате для работы команды dfm. Моя проблема в том, что я не знаю, как перейти от моей текущей точки к матрице, как показано ниже.

Пример того, как я хотел бы, чтобы матрица выглядела после завершения:

Example Matrix

Где 2 - количество раз, когда cat появляется в doc_2.

Любая помощь по этому вопросу будет принята с благодарностью.

is mise le measure.

1 Ответ

0 голосов
/ 21 марта 2020

Будет полезно для вас и других, если все ваши данные будут доступны вместе с вашим кодом - например, использование пакета quanteda для dfm (). Если основной текст настроен правильно, dfm () даст вам то, что вы ищете - это именно то, для чего он настроен. Вот симуляция:

library(tm)
library(quanteda)
# install.packages("readtext")
library(readtext)

doc1 <- "COVID-19 can be beaten if all ensure social distance, social distance is critical"     
doc2 <- "COVID-19 can be defeated through early self isolation, self isolation is your responsibility" 
doc3 <- "Corona Virus can be beaten through early detection & slowing of spread, Corona Virus can be beaten, Yes, Corona Virus can be beaten" 
doc4 <- "Corona Virus can be defeated through maximization of social distance"  

write.table(doc1,"doc1.txt",sep="\t",row.names=FALSE, col.names = F)
write.table(doc2,"doc2.txt",sep="\t",row.names=FALSE, col.names = F)
write.table(doc3,"doc3.txt",sep="\t",row.names=FALSE, col.names = F)
write.table(doc4,"doc4.txt",sep="\t",row.names=FALSE, col.names = F)
# save above into your WD
getwd()
txt <- readtext(paste0("Your WD/docs", "/*"))
txt

corp <- corpus(txt)
x <- dfm(corp)
View(x)

Если проблема заключается в форматировании / очистке ваших данных, чтобы вы могли запустить dfm (), то вам нужно опубликовать новый вопрос, который предоставляет необходимые данные о ваших данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...