Вопрос

У меня есть проблема с кластеризацией огромного количества предложений в группы по их значениям. Это похоже на проблему, когда у вас много предложений и вы хотите сгруппировать их по их значениям.

Какие алгоритмы предлагаются это делать? Я не знаю количество кластеров заранее (и по мере того, как можно изменить больше данных, также могут измениться), какие функции обычно используются для представления каждого предложения?

Теперь я стараюсь самые простые функции с списком слов и расстояния между предложениями, определенными как:

enter image description here

(A и B являются соответствующими наборами слов в предложении A и B)

Это имеет смысл вообще?

Я пытаюсь подать заявку Средний сдвиг Алгоритм из библиотеки Scikit до этого расстояния, поскольку он не требует количества кластеров заранее.

Если кто -то будет посоветовать лучшие методы/подходы к проблеме - это будет очень ценить, поскольку я все еще новичок в этой теме.

Это было полезно?

Решение

Проверить Stanford NLP Groupпрограммное обеспечение с открытым исходным кодом (http://wwwnlp.stanford.edu/software), особенно, Стэнфордский классификатор (http://wwwnlp.stanford.edu/software/classifier.shtml) Программное обеспечение написано в Java, что, скорее всего, восхищает вас, но также имеет привязки для некоторых других языков. Обратите внимание лицензирование - Если вы планируете использовать их код в коммерческих продуктах, вы должны получить коммерческую лицензию.

Еще один интересный набор библиотек с открытым исходным кодом, IMHO, подходящий для этой задачи и многое другое, это Параллельная структура для машинного обучения график (http://select.cs.cmu.edu/code/graphlab), которая включает в себя кластеризационная библиотека, внедрение различных алгоритмов кластеризации (http://select.cs.cmu.edu/code/graphlab/clustering.html) Это особенно подходит для очень большой объем данных (как у вас есть), как он реализует MapReduce модели и, таким образом, поддерживает многократный а также многопроцессор параллельная обработка.

Скорее всего, вы знаете следующее, но я упомяну об этом на всякий случай. Натуральный язык инструментарий (NLTK) за Python (http://www.nltk.org) содержит модули для кластеризации/классификации/категоризации текста. Проверьте соответствующую главу в NLTK Book: http://www.nltk.org/book/ch06.html.

ОБНОВИТЬ:

Говоря о алгоритмы, кажется, что вы пробовали большинство из тех, кто scikit-learn, например, показано в этой теме пример извлечения: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html. Анкет Тем не менее, вы можете найти полезные другие библиотеки, которые реализуют широкий спектр Алгоритмы кластеризации, включая Незначательная матричная факторизация (NMF). Анкет Одна из таких библиотек - это Факторизация матрицы питона (PYMF) с домашней страницей в https://code.google.com/p/pymf и исходный код в https://github.com/nils-werner/pymf. Анкет Другая, еще более интересная библиотека, также на основе Python,-это Нимфа, который реализует различные Алгоритмы NMF: http://nimfa.biolab.si. Анкет Вот исследовательская работа, описывающая NIMFA: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf. Анкет Вот пример из его документации, который представляет решение для очень похожей проблемы обработки текста тема кластеризации: http://nimfa.biolab.si/nimfa.examples.documents.html.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top