this postのコードは非常に役に立ちます。 (私はその記事にコメントを追加したいが、評判のポイントは50点ある)テキスト文書をクラスタリングし、重複するトップ用語を取得する
私は上記のコードで同じコードを使用したが、私自身のクラスタリングコードのデバッグに使用していたテスト文書を追加した。何らかの理由で、1つの文書の単語が両方のクラスタに表示されます。
コードは次のとおりです。
アップデート:私は、以下の文書を「ユニーク文」を追加しました。
documents = ["I ran yesterday.",
"The sun was hot.",
"I ran yesterday in the hot and humid sun.",
"Yesterday the sun was hot.",
"Yesterday I ran in the hot sun.",
"Unique sentence." ]
vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(documents)
#cluster documents
true_k = 2
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
model.fit(X)
#print top terms per cluster clusters
print("Top terms per cluster:")
order_centroids = model.cluster_centers_.argsort()[:, ::-1]
terms = vectorizer.get_feature_names()
for i in range(true_k):
print ("Cluster %d:" % i,)
for ind in order_centroids[i, :10]:
print(' %s' % terms[ind])
print
私が受け取る出力は次のようになります。
UPDATE:私は上記の「独特の文章を」反映するには、以下の出力を更新しました。
クラスタ0: 日 ホット 昨日 が 多湿 ユニーク 文 クラスタ1走った:あなたは湿気の多い「ことに注意しましょう 多湿 ホット
を走った ユニーク 文 昨日 日を"上記の文書の1行にすぎないにもかかわらず、両方のクラスターのトップタームとして表示されます。私はこのケースでは「湿っぽい」のようなユニークな言葉が、クラスターのうちの1つのクラスターのトップタームになると期待しています。
ありがとうございます!
ありがとうございました。 これは、「湿気の多い」「太陽」「暑い」「昨日」を含む1つの文によるものです。 私は各クラスタにユニークなメンバーがあったと思います。クラスターメンバーが複数のクラスターに属することができる共通語があるかのようです。 しかし、前の例の「湿気の多い」文章では、「sun」、「hot」、「yesterday」という単語が共有されていました。私は一意のセンテンスを含むように例を更新しました。また、サンプル出力を更新しました。一意の文の単語も両方のクラスタに表示されます(つまり、「一意」と「文」)。 – RandomTask