Использование библиотеки nltk для извлечения ключевых слов - PullRequest
2 голосов
/ 08 июня 2011

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

  1. Токенизация каждого необработанного диалога (вывод хранится в виде списка строк)
  2. Удалить стоп-слова
  3. Использование стеммера (алгоритм стеблинга Портера)

До сих пор nltk предоставляет все инструменты, которые мне нужны. После этого, однако, мне нужно как-то «ранжировать» эти слова и придумать наиболее важные слова. Кто-нибудь может подсказать, какие инструменты из nltk могут быть использованы для этого?

Спасибо Nihit

1 Ответ

3 голосов
/ 08 июня 2011

Полагаю, это зависит от вашего определения "важного". Если вы говорите о частоте, то вы можете просто создать словарь, используя слова (или основы) в качестве ключей, а затем считать значения. После этого вы можете отсортировать ключи в словаре по их количеству.

Что-то вроде (не проверено):

from collections import defaultdict

#Collect word statistics
counts = defaultdict(int) 
for sent in stemmed_sentences:
   for stem in sent:
      counts[stem] += 1

#This block deletes all words with count <3
#They are not relevant and sorting will be way faster
pairs = [(x,y) for x,y in counts.items() if y >= 3]

#Sort (stem,count) pairs based on count 
sorted_stems = sorted(pairs, key = lambda x: x[1])
...