Инструментарий Stanford NER - распознавание строчных букв - PullRequest
5 голосов
/ 21 ноября 2010

Я новичок в NLP и пытаюсь выяснить, как распознаватель именованных сущностей комментирует именованные сущности. Я экспериментирую с инструментарием NER Стэнфорда. Когда я использую NER в стандартных, более формальных наборах данных, в которых соблюдаются все соглашения об именах для представления именованных сущностей, таких как новостные ленты или новостные блоги, NER правильно аннотирует сущности. Однако, когда я запускаю NER с неофициальными наборами данных, такими как twitter, где именованные объекты не могут быть написаны заглавными буквами, как должно быть, NER не аннотирует объекты. Классификатор, который я использую, является сериализованным классификатором 3-CRF. Кто-нибудь может дать мне знать, как заставить NER распознавать строчные буквы? Любые полезные предложения о том, как взломать NER и где это улучшение должно быть высоко оценено. Заранее спасибо за вашу помощь.

Ответы [ 5 ]

5 голосов
/ 12 декабря 2014

Я знаю, что это старая ветка, но надеюсь, что она кому-нибудь поможет. Как ответил Кристофер Мэннинг, способ обнаружения строчных букв состоит в том, чтобы заменить english.muc.7class.distsim.crf.ser.gz на english.muc.7class.caseless.distsim.crf.ser.gz, который можно получить, когда вы разархивируйте основной файл nlp.

Например, в моем файле python я сохранил все то же самое, кроме перехода на новый файл, и он работает отлично (ну, в большинстве случаев)

st = NERTagger('/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/classifiers/english.muc.7class.caseless.distsim.crf.ser.gz', '/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/stanford-ner.jar')
4 голосов
/ 15 декабря 2010

Боюсь, что нет простого способа заставить обучаемые модели, которые мы распространяем, игнорировать информацию о случаях во время выполнения. Так что, да, они обычно обозначают только заглавные буквы. Можно было бы обучить модель без учета кейса, которая бы работала разумно (но не так хорошо, как на корпусном тексте, так как кейс является большой подсказкой в ​​английском (но не в немецком, китайском, арабском и т. Д.).

2 голосов
/ 07 июня 2012

Вместе с предложениями других людей. Если вы используете классификатор, основанный на функциях, я бы определенно добавил в 100-200 наиболее распространенных подстрок 3-4 букв в именах людей или создании газетира под одну распознанную функцию. Существуют определенные шаблоны, которые непременно обнаруживаются в личных именах, которые не очень часто встречаются в других типах слов, таких как «eli».

1 голос
/ 15 июня 2012

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

Один из возможных способов обучения классификатора для нижнего регистра - это запустить классификатор верхнего регистра, который у вас уже естьс большим набором данных правильного английского языка, затем обработайте этот текст с тегами, чтобы удалить регистр.Затем у вас есть помеченный корпус, который вы можете использовать для обучения нового классификатора.Этот новый классификатор не будет идеален против Твиттера из-за особенностей твитов, но это быстрый способ его загрузки.

1 голос
/ 21 ноября 2010

Я думаю, что Twitter будет очень сложным для этого приложения.Заглавные буквы - большая подсказка, которая, как вы говорите, часто отсутствует в Twitter.Проверка словаря для удаления действительных английских слов имеет ограниченное применение, поскольку тексты в Твиттере содержат огромное количество сокращений, и они часто уникальны.

Возможно, использование тегов Речи речи и частотный анализ могут помочь улучшитьопределение имен собственных?

...