【发布时间】:2016-06-18 03:54:55
【问题描述】:
我有一个数据框 (df),它有两列名为“id”和“text”
id text
1 TV
2 Tv
3 T.V
4 Radio/TV
5 Car
6 CAR
7 car
我想在“文本”列中标记/标记相似类型的行
预期输出:
id text type
1 TV tv
2 Tv tv
3 T.V tv
4 Radio/TV tv
5 Car car
6 CAR car
7 car car
我在研究时发现了以下内容,我得到了这里的逻辑并且它也执行了,但我不知道如何重新创建我的想法(预期输出)
# Importing the library
library(tm)
# Importing the data
corpus.tmp<-Corpus(VectorSource(df$text))
#Cleaning up
corpus.tmp<- tm_map(corpus.tmp,removePunctuation)
corpus.tmp<- tm_map(corpus.tmp, stripWhitespace)
corpus.tmp <- tm_map(corpus, content_transformer(tolower))
corpus.tmp<- tm_map(corpus.tmp, removeWords, stopwords("english"))
# Document Matrix
TDM <- TermDocumentMatrix(corpus.tmp)
inspect(TDM)
tdm_tfxidf<-weightTfIdf(TDM)
# Converting to matrix
m<- as.matrix(tdm_tfxidf)
rownames(m)<- 1:nrow(m)
norm_eucl<- function(m)
m/apply(m,1,function(x) sum(x^2)^.5)
m_norm<-norm_eucl(m)
# Performing K means clustering
results<-kmeans(m_norm,5,5)
【问题讨论】:
-
文本列可以包含
cartv这样的字符串吗?如果没有,您可以从除acrtv之外的所有字符中删除文本列 -
不,但可以有多种变体,并且列表可以不断增长!集群对我来说很有意义
-
k-means 不期望距离矩阵。不,这种方法行不通。您需要一个语言模型,而不是像 k-means 之类的最小方差方法(它是为连续的数值数据而构建的)。
标签: r nlp cluster-analysis