Реализуйте программу для кластеризации заданного списка целевых слов в n групп на основе их распределенных шаблонов совместного использования - PullRequest
0 голосов
/ 06 марта 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...