Распознавание именованных сущностей с регулярным выражением: NLTK

Я играл с инструментарием NLTK. Я часто сталкивался с этой проблемой и искал решение в Интернете, но нигде не получил удовлетворительного ответа. Поэтому я размещаю свой запрос здесь.

Много раз NER не помечает последовательные NNP как один NE. Я думаю, что редактирование NER для использования RegexpTagger также может улучшить NER.

Пример:

Входные данные:

Барак Обама отличный человек.

Выход:

Tree ('S', [Tree ('PERSON', [('Barack', 'NNP')]), Tree ('ORGANIZATION', [('Obama', 'NNP')]), ('is', 'VBZ'), ('a', 'DT'), ('great', 'JJ'), ('person', 'NN'), ('.', '.')])

в то время как

вход:

Бывший вице-президент Дик Чейни сказал консервативной радиоведущей Лоре Ингрэхэм, что его «удостоили чести» сравнивать с Дартом Вейдером, когда он был в офисе.

Выход:

Tree ('S', [('Former', 'JJ'), ('Vice', 'NNP'), ('President', 'NNP'), Tree ('NE', [('Dick', ' NNP '), (' Чейни ',' NNP ')]), (' сказали ',' VBD '), (' консервативны ',' JJ '), (' радио ',' NN '), (' хозяин ' , «NN»), Tree («NE», [(«Laura», «NNP»), («Ingraham», «NNP»)]), («that», «IN»), («он», 'PRP'), ('', ''), (' was ',' VBD '), (' honored ',' VBN '), ("' '", "' '"), (' to ',' TO '), (' be ', 'VB'), ('сравниваемые', 'VBN'), ('to', 'TO'), Tree ('NE', [('Darth', 'NNP'), ('Vader', 'NNP' )]), ('while', 'IN'), ('in', 'IN'), ('office', 'NN'), ('.', '.')])

Здесь вице / NNP, президент / NNP, (Дик / NNP, Чейни / NNP), правильно извлечен.

Поэтому я думаю, что если сначала используется nltk.ne_chunk, а затем, если два последовательных дерева являются NNP, есть большие шансы, что оба ссылаются на одну сущность.

Любое предложение будет по достоинству оценено. Я ищу недостатки в моем подходе.

Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос