allowed_words = ['A', 'B', 'C', 'D','K','Z']
documents = [['A', 'B'], ['C', 'B', 'K'],['A', 'B', 'C', 'D', 'Z'],['A', 'B', 'C', 'D']]
words_cooc_matrix, word_to_id = create_co_occurrences_matrix(allowed_words, documents)
для слова и документа, я вычислил матрицу совместного вхождения
words_cooc_matrix:
[[0 3 2 2 0 1]
[3 0 3 2 1 1]
[2 3 0 2 1 1]
[2 2 2 0 0 1]
[0 1 1 0 0 0]
[1 1 1 1 0 0]]
Какую модель выбрать для использования этой матрицы, я использовал KNN, но результат сбивает с толку.
true_k = 2
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
model.fit(words_cooc_matrix.toarray())
print("Top terms per cluster:")
order_centroids = model.cluster_centers_.argsort()[:, ::-1]
terms = ['A', 'B', 'C', 'D','K','Z']
for i in range(true_k):
print("Cluster %d:" % i),
for ind in order_centroids[i, :30]:
print(' %s' % terms[ind]),
print
и вот результат
Top terms per cluster:
Cluster 0:
C
A
D
Z
K
B
Cluster 1:
B
C
D
A
Z
K