NLTK Именованное распознавание объектов с пользовательскими данными
Я пытаюсь извлечь именованные объекты из своего текста, используя NLTK. Я считаю, что NLTK NER не очень точен для моей цели, и я хочу добавить еще несколько тегов. Я пытался найти способ обучить собственный NER, но, похоже, я не могу найти нужные ресурсы.
У меня есть пара вопросов относительно NLTK -
- Могу ли я использовать свои собственные данные для обучения именному распознавателю Entity Recognizer в NLTK?
- Если я могу тренироваться с использованием моих собственных данных, это файл named_entity.py, который нужно изменить?
- Должен ли формат входного файла быть в IOB, например. Eric NNP B-PERSON?
- Есть ли какие-либо ресурсы - помимо nLTK cookbook и nlp с питоном, который я могу использовать?
Я бы очень признателен за помощь в этом отношении
Ответы
Ответ 1
Вы намерены использовать NLTK/Python? Я столкнулся с теми же проблемами, что и вы, и имел гораздо лучшие результаты, используя распознаватель именной сущности Stanford: http://nlp.stanford.edu/software/CRF-NER.shtml. Процесс обучения классификатора с использованием ваших собственных данных очень хорошо документирован в FAQ.
Если вам действительно нужно использовать NLTK, я бы попал в список рассылки для некоторых советов от других пользователей: http://groups.google.com/group/nltk-users.
Надеюсь, это поможет!
Ответ 2
Вы можете легко использовать Stanford NER вместе с nltk.
Питон script похож на
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())
Чтобы обучить свои собственные данные и создать модель, вы можете обратиться к первому вопросу о часто задаваемых вопросах Стэнфордского НЭР.
Ссылка http://nlp.stanford.edu/software/crf-faq.shtml
Ответ 3
У меня также была эта проблема, но мне удалось ее решить.
Вы можете использовать свои собственные данные обучения. Я документировал основные требования/шаги для этого в моем репозитории github.
Я использовал NLTK-trainer, поэтому вы должны получить данные обучения в правильном формате (токен NNP B-tag), и запустите обучение script. Для получения дополнительной информации просмотрите мой репозиторий.