0

テキストフィールドに基づいて、関連するかどうかを自動的にラベル付けしようとしているテキストフィールドを持つデータのセットがあります。手動でデータにラベルを付けましたが、自動ラベルと手動ラベルを比較して、自動ラベル付けの精度を計算しようとしています。K Means クラスタリングを使用して、データを 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)
4

1 に答える 1