Я недавно работал над проектом, который включает в себя распознавание имен и имен. Я создаю модель NER, предоставив свои собственные данные обучения. Проблема с NER заключается в том, что она перестает отмечать теги, когда она встречается с полной остановкой. Например, если у меня есть текст, какПометка «Распознавание сущности» в Стэнфорде помечается, когда в тексте есть полная остановка?
«Джон работает в Индии. Он работает в Intel Inc.»
Таггер ЕГО даст следующий результат для вышеприведенного текста
"John-NAME" "works-O" "in-O" "India-PLACE".
Он не обрабатывает последовательное предложение
"Он т.е. работает в Intel Inc."
Так что в основном это ломается при полной остановке (.).
Есть ли способ изменить это в NER? Можно ли решить эту проблему в файле свойств?
Данные выглядит следующим образом:
«1.John ест банан 2. он идет в офисе 3.he является капитаном команды 5.HE ЛЮБИТ CrickeT 6. ОН ИДЕТ плавательный 7.he нравится яблоко "
Так что в этом случае я не могу использовать sentence tokenizer
, поскольку он разделяет предложение на основе периодов (полная остановка).
И в связи с первоначальным вопросом о NER
, пометка ломается при первом вступлении периода (полная остановка).
Приговор токенизатор размечает выше приведенный текст, как указано в коде
text = "1.John eats a banana 2. he goes to office 3.he is the captain of the team 5.HE LIKES CRICKET 6. HE GOES SWIMMING 7.he likes apple"
sents = nltk.sent_tokenize(text)
Выход выглядит следующим образом: [ '1.John ест банан 2. он идет в офис 3.he является капитан команды 5.HE лЮБИТ CrickeT 6. «» он идет ПЛАВАНИЕ 7.he любит яблоко ']
Поскольку нет соответствующих периодов в тексте приговора токенизатор не может извлечь точные предложения.
Теперь я хочу передать весь фрагмент текста в NER. Я дал подготовки данных, которая выглядит как:
This is just a part of entire data
1 O
. O
John PER
eats O
a O
banana O
2 O
. O
he PER
goes O
to O
office O
3 O
. O
he PER
is O
the O
captain O
of O
the O
team O
5 O
. O
HE PER
LIKES O
CRICKET O
Теперь код для НЭКЕ, как это:
from nltk.tag.stanford import NERTagger
import os
java_path = "/Java/jdk1.8.0_45/bin/java.exe"
os.environ['JAVAHOME'] = java_path
st = NERTagger('../ner-model.ser.gz','../stanford-ner.jar')
tagging = st.tag(text.split())
Из приведенной выше коды мечения делаются только до совпадения первого периода (полная остановка).
Если предложение токенизатор сегментов в периоды и ваш NE распознаватель останавливается в первом периоде, что именно проблема? Если вам нужно распознавать NE, которые содержат периоды (например, сокращения), проблема прямо связана с вашим распознавателем, о котором вы ничего нам не говорите. – alexis
Просьба указать код, который вкратце показывает, что вы пробовали до сих пор. Мы не хотим тратить время на угадывание – Spaceghost
@StanfordNLPHelp Можете ли вы помочь с моей проблемой? –