Кластерные фразы аналогичного значения в R - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу объединить фразы аналогичного значения и построить дендрограмму.Я также хочу показать список сгруппированных фраз.Я могу только показать дендрограмму с индексным номером в качестве вывода, а не саму фразу.Также у меня есть сотни фраз, которые я хотел бы показать как сгруппированный список, отсортированный по наибольшей группе.

strings.to.cluster <- c("how do i find the bus times", 
                    "where do i find the bus time tables", 
                    "where is the bus times",
                    "is there a bus time table", 
                    "where is the bus time table", 
                    "what is the meaning of life", 
                    "the quick brown fox", 
                    "how do i find the bus times", 
                    "where is the bus times")
library(tm)
library(Matrix)
x <- TermDocumentMatrix( Corpus( VectorSource( strings.to.cluster ) ) )
y <- sparseMatrix( i=x$i, j=x$j, x=x$v, dimnames = dimnames(x) )  
plot( hclust(dist(t(y))) )

1 Ответ

0 голосов
/ 23 сентября 2018

Если вы используете пакет tm и sparseMatrix, вы превращаете строки в слова.Ваша дендрограмма будет состоять из слов, а не из предложений.Проверьте, что произойдет, если вы не транспонируете свою матрицу и используете plot(hclust(dist(y))).Вы увидите, что вы получаете слова, но не ваши предложения.

Используя пакет stringdist, мы можем вычислить расстояние между всеми предложениями, а затем использовать эту матрицу расстояний для hclust.Используя опцию useNames = "strings", мы добавляем строки в качестве меток в матрицу расстояний, и они будут использоваться в качестве меток в объекте hclust.

cl <- hclust(stringdist::stringdistmatrix(strings.to.cluster, method = "cosine", useNames = "strings"))
plot(cl)

enter image description here

Если вас больше интересуют отдельные кластеры слов, вы можете проверить функции, доступные в пакете quanteda.Но обязательно прочитайте тему моделирования.

...