在R中将相似的文本分组

时间:2018-06-29 10:18:42

标签: r cluster-analysis text-mining

我得到了具有很多独特价值的员工指定数据。 我想将一个名称的多种形式组合在一起(例如“高级经理”,“高级经理”,“高级经理”,“高级经理”等)。同样,这些数据也存在拼写错误。

使用R将许多名称合并为一个的最佳技术是什么。

是解决此问题的最佳方法,还是其他一些技术可以更好地解决我的问题。

我尝试了“欧几里德距离”和k均值,但都没有令人满意的结果。

library(tm)
library(data.table)
library(SparseM)
library(cluster)
    data <- readLines('RDATA.txt')
    head(data)

enter image description here

        data <- data[1:50]
        source <- VectorSource(data)
        corpus <- Corpus(source)
        corpus <- tm_map(corpus, content_transformer(tolower))
        corpus <- tm_map(corpus, removeNumbers)
        corpus <- tm_map(corpus, removePunctuation)
        corpus <- tm_map(corpus, stripWhitespace)
        corpus <- tm_map(corpus, removeWords, stopwords('english'))
    dtm = DocumentTermMatrix(corpus,
                             control = list(
                               wordLengths=c(4, 15),

                             ))
    m  <- as.matrix(dtm)
    distMatrix <- dist(m, method="euclidean")
    groups <- hclust(distMatrix,method="ward.D" )
    groups2 <-cutree(groups, k=10)
    clus_data <-cbind(data,groups2)
    clus_data

1 个答案:

答案 0 :(得分:1)

这不能通过这种方式工作。

只需考虑“狗”,“雾”。这些词是相似的,但是您不希望它们被聚类。这不仅仅是错字。

因此,您不能使用诸如群集之类的无监督方法。您需要对语言进行过培训的事情,典型的拼写错误,甚至可能是语音。