пакет тм. проблемы с kmeans - PullRequest
2 голосов
/ 10 ноября 2011

У меня вопрос о кластеризации k-средних в R. На самом деле я делаю все в соответствии с этой статьей .Все основано на примерах в пакете tm, поэтому не требуется импорт данных.ACQ содержит 50 документов и грубых 20 документов.

library(tm)
data("acq")
data("crude")
ws <- c(acq, crude)
wsTDM <- Data(TermDocumentMatrix(ws)) #First problem here
wsKMeans <- kmeans(wsTDM, 2)
wsReutersCluster <- c(rep("acq", 50), rep("crude", 20))
cl_agreement(wsKMeans, as.cl_partition(wsReutersCluster), "diag")

Error in lapply(X, FUN, ...) : 
(list) object cannot be coerced to type 'integer'

Я действительно хочу создать матрицу перекрестного соглашения.Но эта статья была написана в 2008 году, с тех пор многое изменилось.Функция данных доступна только в пакете RSurvey, но я сомневаюсь, что это то же самое.И я думаю, что главная проблема в том, что TermDocumentMatrix был классом S4, а теперь - S3.Я знаю, что это возможно сделать только с текстом.Но я хочу сделать это так, потому что в TDM можно удалить стоп-слова, знаки препинания и т. Д. Для достижения лучших результатов.Так что, если у кого-то есть какое-то решение, которое было бы потрясающим.

1 Ответ

3 голосов
/ 10 ноября 2011

TDM хранится в виде разреженной матрицы, как описано в ?TermDocumentMatrix.Это также видно из простой проверки объекта, например str(wsTDM).Эта старая функция Data() была просто способом доступа к содержимому в виде обычной матрицы.Это больше не нужно.Просто наберите kmeans(wsTDM, 2), и вы увидите, что результат соответствует ожидаемому: кластеры определены для 2775 наблюдений (терминов) по 70 объектам (документам).Удачи!

...