Распознавание именованных сущностей в НЛП с использованием Python - PullRequest
0 голосов
/ 03 января 2019

У меня много текстовых документов. При этом доступны разные форматы дат, например Дата рождения - 12-12-1995, Год опыта - 2000 НАСТОЯЩЕЕ или 1995-2005 или 5 лет опыта или 1995/2005, Дата присоединения - 5 марта 2015 года и т. д. Из этих данных я хочу извлечь только многолетний опыт. Как я могу сделать это в Python, используя NLP? Пожалуйста, ответьте.

Я пробовал со следующим:

#This gives me all the dates from documents
import datefinder
data = open("/home/system/Desktop/samplecv/5c22fcad79fcc1.33753024.txt")
str1 = ''.join(str(e) for e in data)
matches = datefinder.find_dates(str1)
for match in matches:
    print(match)

1 Ответ

0 голосов
/ 03 января 2019

Если вы уже извлекли даты, то похоже, что вам не хватает «типа даты» для каждого. Если DateFinder не может отслеживать позиционную структуру дат в корпусе, то извлечение даты с его использованием не будет слишком полезным.

Однако это не просто проблема распознавания сущностей. Вам придется связать NER с POS-тэгером (и, может быть, даже с синтаксическим анализатором зависимостей) Spacy - хороший вариант.

Сначала вы должны запустить POS-тегер на своем корпусе и посмотреть, подбирает ли он такие фразы, как «Опыт» или «История работы». Если нет, то вы должны добавить свои собственные ярлыки, чтобы он специально помечал эти слова по вашему желанию.

Тогда вы можете запустить NER, чтобы забрать даты. Имейте в виду, что NER в лучшем случае пометит все ваши даты как объекты DATE и не сможет найти различия между типами дат.

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

Например, вы можете связать все Даты, следующие за словом «Опыт», с тегом «POS Experience».

В качестве альтернативы вы можете попробовать NLTK (который является альтернативой Spacy, но вам также потребуется запустить тот же конвейер с ним). Читайте здесь , чтобы узнать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...