Я хочу использовать скрытое выделение дирихле для проекта, и я использую Python с библиотекой gensim. После нахождения тем я хотел бы кластеризовать документы, используя алгоритм, такой как k-means (в идеале я хотел бы использовать хороший для перекрывающихся кластеров, поэтому любая рекомендация приветствуется). Мне удалось получить темы, но они в форме:
0,041 * министр + 0,041 * ключ + 0,041 * моменты + 0,041 * спорный + 0,041 * премьер
Чтобы применить алгоритм кластеризации и исправить меня, если я ошибаюсь, я считаю, что должен найти способ представить каждое слово в виде числа, используя tfidf или word2vec.
Есть ли у вас какие-либо идеи о том, как я мог бы «убрать» текстовую информацию, например, из списка, чтобы сделать это, а затем поместить их обратно, чтобы сделать соответствующее умножение?
Например, как я понимаю, если слово «министр» имеет вес tfidf 0,042 и т. Д. Для любого другого слова в той же теме, я должен вычислить что-то вроде:
0.041 * 0.42 + ... + 0.041 * tfidf (Prime) и получите результат, который позже будет использован для кластеризации результатов.
Спасибо за ваше время.
источник
Ответы:
Предполагая, что LDA подготовило список тем и поставило оценку по каждой теме для каждого документа, вы можете представить документ и его оценки в виде вектора:
Чтобы получить оценки для каждого документа, вы можете запустить документ. как мешок слов, через обученную модель LDA. Из документации gensim:
Затем вы можете запустить k-средних в этой матрице, и она должна сгруппировать документы, которые похожи друг на друга. K-means по умолчанию является жестким алгоритмом кластеризации, подразумевающим, что он классифицирует каждый документ в один кластер. Вы можете использовать мягкие механизмы кластеризации, которые дадут вам оценку вероятности того, что документ вписывается в кластер - это называется нечетким k-средним . https://gist.github.com/mblondel/1451300 - это Python-гист, показывающий, как вы можете сделать это с помощью scikit learn.
PS: я не могу опубликовать более 2 ссылок
источник
В дополнение к предыдущему ответу вам лучше не просто запускать kmeans непосредственно для композиционных данных, полученных из дистрибутива lda topic-doc, а использовать некоторое преобразование композиционных данных для проецирования их в евклидово пространство, такое как ilr или clr.
( Пример )
источник