我有一组数据,其中有一个文本字段,我试图根据文本字段自动将其标记为相关或不相关。我已经手动标记了数据,但正在尝试将自动标签与手动标签进行比较以计算自动标签的准确性。我正在使用 K 均值聚类将数据聚类到 2 个聚类中。我苦苦挣扎的地方是用我的原始数据和它们所在的集群创建一个 csv 文件。我的想法是我将有一个 csv 文件显示哪一行在哪个集群中,这样我就可以查看每个集群的大多数标签拥有该标签并将其分配给该集群中的每一行。然后我可以用它来做进一步的分析。
这是我拥有的数据的一个示例(非常简化)。相关性是我的手动标签。
Id <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Relevance <- c("Relevant", "Not Relevant", "Relevant", "Relevant", "Relevant", "Not Relevant", "Not Relevant", "Not Relevant", "Relevant", "Relevant")
Text <- c("Cat", "Dog", "Fish", "Cow", "Horse", "Fox", "Rat", "Bird", "Tiger", "Elephant")
Data <- cbind(Id, Relevance, Text)
这是我用于创建集群的代码:
Data<- read.csv("Desktop\\Data.csv", header=TRUE)
#creating a corpus using the text field of my data
corpus<-Corpus(VectorSource(Data$text))
#I did some pre-processing of the texts here eg remove punctuation
dtm <- DocumentTermMatrix(Data)
newdtm <- removeSparseTerms(dtm, 0.99)
#perform the k means clustering
d <- dist(t(newdtm), method="euclidian")
kfit<-kmeans(d, 2)
那么如何创建一个 csv 文件来显示我的原始数据以及显示每行所在的集群的附加列?
我正在寻找的输出看起来像这样的结果:
Id <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Relevance <- c("Relevant", "Not Relevant", "Relevant", "Relevant", "Relevant", "Not Relevant", "Not Relevant", "Not Relevant", "Relevant", "Relevant")
Text <- c("Cat", "Dog", "Fish", "Cow", "Horse", "Fox", "Rat", "Bird", "Tiger", "Elephant")
Cluster <- c(1, 2, 2, 2, 1, 1, 2, 2, 1, 1)
cbind(Id, Relevance, Text, Cluster)