Python: кластеризация ключевых слов поисковой системы - PullRequest
6 голосов
/ 28 марта 2011

Python: кластеризация ключевых слов поисковой системы

Привет, у меня есть CSV, до 20 000 строк (у меня было 100 000+ для разных веб-сайтов), каждая строка содержит ключевое слово (то есть ключевое слово, введенное кем-то впоисковая система для поиска нужного веб-сайта) и количество посещений.

Я собираюсь сгруппировать эти ключевые слова в кластеры «аналогичного значения» и создать иерархию кластеров (структурирована в порядке суммирования общего числа поисков в кластере).

Пример кластера - "женская одежда" - в идеале должен содержать ключевые слова по следующим направлениям: женская одежда, 1000 женской одежды, 300 женской одежды, 50 женской одежды, 6 женской одежды, 2

Я мог бы использовать что-то вроде Python Natural Language Toolkit: http://www.nltk.org/ и WordNet, но я предполагаю, что для некоторых веб-сайтов ссылочные ключевые слова будут словами/ фразы, о которых WordNet ничего не знает.Например, если веб-сайт знаменитостей, WordNet вряд ли что-нибудь узнает о «Lady Gaga», хуже ситуация, если веб-сайт новостной.

Итак, я также предполагаю, что решение имеетбыть тем, который использует только исходные данные.

Мой запрос очень похож на тот, который был поднят на Как кластеризовать ключевые слова поисковой системы? , только я где-то ищучтобы начать, но используя Python вместо Java.

Мне также было интересно, могут ли Google Predict и / или Google Refine быть полезными.

В любом случае, любые мысли / предложения приветствуются,

Спасибо, C

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

Мне очень нравится Woosh. Это чистый поисковый движок Python, который обеспечивает, помимо прочего, такую ​​функциональность. Проверьте это.

http://packages.python.org/Whoosh/index.html

Функция, которую вы ищете, называется "результаты граненого поиска"

http://packages.python.org/Whoosh/facets.html

Hernan

0 голосов
/ 28 марта 2011

Ну, я сам нуб ... Но я думаю, что это можно сделать с помощью nltk и wordnet. (Как вы уже сказали)

Сначала удалите все числа и любые специальные символы (в основном, очиститеключевые слова)

Проверка на совпадения основных строк / совпадений подстрок

Tag POS-теги, (примите тегер по умолчанию в качестве существительного) Если он отличается от существительного, тогда используйте wordnet для получения всех его синонимов омонимов игетеронимы и совпадают с ними.Если это существительное, используйте некоторые базовые приемы, такие как наименьшее совпадение общих подстрок или расстояние лавенштейна, дерево B / K и т. Д.

Вы можете вкладывать уровни в соответствии с вашими потребностями в ложных срабатываниях /негативы

Что касается кластеризации высокого уровня, вы можете использовать модуль машинного обучения Python (например, PyML, Reverend и т. д.) и использовать уже заданные данные для обучения, например, данные ngram в Google на LDC * 1014.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...