Распознавание именованных сущностей

Введение в обработку естественного языка на Python

Katharine Jarmul

Founder, kjamistan

Что такое распознавание именованных сущностей?

  • Задача NLP: выявление именованных сущностей в тексте
    • Люди, места, организации
    • Даты, государства, произведения искусства
    • ... и другие категории!
  • Можно использовать вместе с определением тематики
    • ... или самостоятельно!
  • Кто? Что? Когда? Где?
Введение в обработку естественного языка на Python

Пример NER

NER на статье Википедии

(Источник: Europeana Newspapers (http://www.europeana-newspapers.eu))

Введение в обработку естественного языка на Python

nltk и библиотека Stanford CoreNLP

  • Библиотека Stanford CoreNLP:
    • Интегрируется в Python через nltk
    • Написана на Java
    • Поддерживает NER, кореференцию и деревья зависимостей
Введение в обработку естественного языка на Python

Использование nltk для распознавания именованных сущностей

import nltk
sentence = '''In New York, I like to ride the Metro to 
              visit MOMA and some restaurants rated 
              well by Ruth Reichl.'''
tokenized_sent = nltk.word_tokenize(sentence)

tagged_sent = nltk.pos_tag(tokenized_sent)
tagged_sent[:3]
[('In', 'IN'), ('New', 'NNP'), ('York', 'NNP')]
Введение в обработку естественного языка на Python
print(nltk.ne_chunk(tagged_sent))
(S
  In/IN
  (GPE New/NNP York/NNP) 
  ,/,
  I/PRP
  like/VBP
  to/TO
  ride/VB
  the/DT
  (ORGANIZATION Metro/NNP)
  to/TO
  visit/VB
  (ORGANIZATION MOMA/NNP)
  and/CC
  some/DT
  restaurants/NNS
  rated/VBN
  well/RB
  by/IN
  (PERSON Ruth/NNP Reichl/NNP) 
  ./.)
Введение в обработку естественного языка на Python

Давайте потренируемся!

Введение в обработку естественного языка на Python

Preparing Video For Download...