Распознавание именованных сущностей с использованием NLTK. Актуальность извлеченных ключевых слов - PullRequest
4 голосов
/ 16 апреля 2011

Я проверял функцию распознавания именованных объектов в NLTK.Можно ли выяснить, какое из извлеченных ключевых слов наиболее соответствует исходному тексту?Кроме того, возможно ли узнать тип (Персона / Организация) извлеченных ключевых слов?

1 Ответ

7 голосов
/ 24 ноября 2011

Если у вас есть обученный тегер, вы можете сначала пометить свой текст, а затем использовать классификатор NE, поставляемый с NLTK.

Текст с тегами должен быть представлен в виде списка

sentence = 'The U.N.'
tagged_sentence = [('The','DT'), ('U.N.', 'NNP')]

Тогда классификатор ne будет вызываться следующим образом

nltk.ne_chunk(tagged_sentence)

Возвращает дерево.Классифицированные слова будут отображаться как узлы дерева внутри основной структуры.Результат будет включать, если это ЛИЦО, ОРГАНИЗАЦИЯ или GPE.

Чтобы узнать наиболее релевантные термины, вы должны определить меру «релевантности».Обычно используется tf / idf , но если вы рассматриваете только один документ, частоты может быть достаточно.

С помощью NLTK легко вычислить частоту каждого слова в документе.Сначала вам нужно загрузить свой корпус, и как только вы загрузите его и получите текстовый объект, просто вызовите:

relevant_terms_sorted_by_freq = nltk.probability.FreqDist(corpus).keys()

Наконец, вы можете отфильтровать все слова в релевантном_термсе_сортированном_б_фреке, которые не принадлежат списку сетевых элементов.слов.

NLTK предлагает онлайн-версию полной книги , которую я считаю интересной начать с

...