【问题标题】:Performing clustering on a text column in a data frame对数据框中的文本列执行聚类
【发布时间】: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


【解决方案1】:

如果文本列任何一个包含带有cartv的字符串,在任何带有特殊字符的情况下,您可以删除特殊字符并检查字符串是否包含tv或@ 987654324@:

## Your dataframe
df <- data.frame(id = seq(7), text = c("tv","TV","T.v","Radio/TV","Car","car","CAR"))

## Remove special characters
df$text <- gsub("[[:punct:]]", "", df$text)

## Logicals for which df$text contain "tv" or "car"
tv <- grepl("tv",df$text,ignore.case = TRUE)
car <- grepl("car",df$text,ignore.case = TRUE)

## Create df$type column and assign values
df$type[tv] <- "tv"
df$type[car] <- "car"

如果您有更多名称要检查,您可以将最后两个步骤收集到 sapply,但是这种方法不是防故障的 - 例如如果文本包含类似cartv 的内容。

【讨论】:

  • 我看到您的方法适用于之前定义的案例,但我正在寻找不需要维护的东西。不过谢谢你的回答
猜你喜欢
  • 2015-06-22
  • 2018-12-04
  • 2011-03-31
  • 2020-10-30
  • 2013-06-04
  • 2022-01-25
  • 2018-11-28
  • 2020-10-10
  • 2011-04-08
相关资源
最近更新 更多