R 字符串的无监督聚类
我有1000多个关键字的列表,我想按相似性分组 例如:R 字符串的无监督聚类,r,machine-learning,nlp,cluster-analysis,k-means,R,Machine Learning,Nlp,Cluster Analysis,K Means,我有1000多个关键字的列表,我想按相似性分组 例如: “庭院家具” “客厅家具” “旧椅子” “新椅子” 我想把“家具”和“椅子”这两个词组合在一起 我知道有一种方法可以做到这一点,那就是指定一些预先选定的“质心”项,然后计算每个项的Levenshtein距离,并使用kmeans对它们进行聚类 但我感兴趣的是如何在不预先指定质心术语(如“椅子”和“家具”)的情况下做到这一点 谢谢。您可以使用stringdist包计算距离矩阵: str <- c("patio furniture",
- “庭院家具”
- “客厅家具”
- “旧椅子”
- “新椅子”
谢谢。您可以使用
stringdist
包计算距离矩阵:
str <- c("patio furniture",
"living room furniture",
"used chairs",
"new chairs")
library(stringdist)
d <- stringdistmatrix(str, str)
hclust
有许多不同的方法。请参见?hclust
。要创建固定数量的组(此处为2个),请执行以下操作:
但是,这可能是许多可能的解决方案之一 您可以使用
stringdist
包计算距离矩阵:
str <- c("patio furniture",
"living room furniture",
"used chairs",
"new chairs")
library(stringdist)
d <- stringdistmatrix(str, str)
hclust
有许多不同的方法。请参见?hclust
。要创建固定数量的组(此处为2个),请执行以下操作:
但是,这可能是许多可能的解决方案之一 基本上,它可以通过使用分层聚类来实现:
cl <- hclust(as.dist(d))
plot(cl)
library(tm)
library(arules) # or other package with (dis)similarity measures...
docs <- c("patio furniture", "living room furniture", "used chairs", "new chairs")
dtm <- as.matrix(DocumentTermMatrix(Corpus(VectorSource(docs))))
# comparse & choose measure, e.g. Jaccard vs Dice Distance
plot(hc <- hclust(dist(dtm, method="binary")), main="Jaccard Dist")
plot(hc <- hclust(dissimilarity(dtm, method="Dice")), main="Dice Dist")
# determine cutting distance (e.g. 0.6)_
clusters <- cutree(hc, h=.6)
# result
cbind.data.frame(docs, clusters)
# docs clusters
# 1 patio furniture 1
# 2 living room furniture 1
# 3 used chairs 2
# 4 new chairs 2
library(tm)
库(arules)#或具有(dis)相似性度量的其他包。。。
docs基本上,它可以使用分层聚类进行如下工作:
cl <- hclust(as.dist(d))
plot(cl)
library(tm)
library(arules) # or other package with (dis)similarity measures...
docs <- c("patio furniture", "living room furniture", "used chairs", "new chairs")
dtm <- as.matrix(DocumentTermMatrix(Corpus(VectorSource(docs))))
# comparse & choose measure, e.g. Jaccard vs Dice Distance
plot(hc <- hclust(dist(dtm, method="binary")), main="Jaccard Dist")
plot(hc <- hclust(dissimilarity(dtm, method="Dice")), main="Dice Dist")
# determine cutting distance (e.g. 0.6)_
clusters <- cutree(hc, h=.6)
# result
cbind.data.frame(docs, clusters)
# docs clusters
# 1 patio furniture 1
# 2 living room furniture 1
# 3 used chairs 2
# 4 new chairs 2
library(tm)
库(arules)#或具有(dis)相似性度量的其他包。。。
文件