我得到了具有很多独特价值的员工指定数据。 我想将一个名称的多种形式组合在一起(例如“高级经理”,“高级经理”,“高级经理”,“高级经理”等)。同样,这些数据也存在拼写错误。
使用R将许多名称合并为一个的最佳技术是什么。
是解决此问题的最佳方法,还是其他一些技术可以更好地解决我的问题。
我尝试了“欧几里德距离”和k均值,但都没有令人满意的结果。
library(tm)
library(data.table)
library(SparseM)
library(cluster)
data <- readLines('RDATA.txt')
head(data)
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
答案 0 :(得分:1)
这不能通过这种方式工作。
只需考虑“狗”,“雾”。这些词是相似的,但是您不希望它们被聚类。这不仅仅是错字。
因此,您不能使用诸如群集之类的无监督方法。您需要对语言进行过培训的事情,典型的拼写错误,甚至可能是语音。