Как извлечь значимые ключевые слова из запроса?

Я работаю над проектом веб-аналитики, в котором мне нужно создать систему, которая принимает пользовательские запросы и извлекает значимые ключевые слова. Скажем, например, пользователь вводит запрос «How to do socket programming in Java», тогда я должен игнорировать "how", "to", "do", "in" и взять "socket", "programming", "java" для дальнейшей обработки и кластеризации, например. сокет и программирование - это два разных значимых ключевых слова, но их можно использовать вместе как ключевое слово, которое дает разное значение. Я ищу какой-то алгоритм, например TF-IDF, для решения этой проблемы. Любая помощь будет оценена.


person Ananda    schedule 18.09.2012    source источник
comment
Как насчет того, чтобы просто удалить стоп-слова, а затем разбить строку на пробелы? Достаточно хорошо?   -  person HappyTimeGopher    schedule 18.09.2012
comment
Я ищу решения, основанные на интеллекте. Удаление стоп-слов само по себе не всегда будет работать, и я должен сделать словарь стоп-слов.   -  person Ananda    schedule 18.09.2012
comment
Для извлечения терминов я смог получить действительно хорошие результаты без использования лошадиных сил НЛП или даже TF-IDF. Результаты, по крайней мере, соответствуют инструменту Yahoo, который вы упомянули в комментарии. Стоит изучить...   -  person HappyTimeGopher    schedule 18.09.2012


Ответы (1)


Хорошо, что вы ищете решение для текстовой аналитики.

Я использовал только R для этой цели, но один из способов взглянуть на это: вам нужен список слов, которые вы считаете незначимыми ключевыми словами, это часто называют «стоп-словами». Вы можете найти онлайн-списки стоп-слов практически для любого популярного языка. После этого вы, возможно, захотите получить пару сотен входных данных и рассчитать частоту каждого ключевого слова там (уже удалив стоп-слова, а также пунктуацию и весь текст в нижнем регистре) и попытаться определить другие ключевые слова, которые вы считаете неуместны и добавьте их в свой список слов для удаления.

После этого есть масса вариантов, которые вы можете изучить; примером может служить основа, которая получает основной термин каждого слова, так что «страницы» и «страница» считаются одним и тем же ключевым словом. (по мере углубления вы найдете массу информации в Интернете, чтобы отточить свой подход)

Надеюсь это поможет.

person jpsfer    schedule 18.09.2012
comment
Спасибо за ваше предложение, оно весьма полезно, я хочу создать что-то вроде этого developer.yahoo.com/search/content/V1/termExtraction.html - person Ananda; 18.09.2012