Я переучиваю систему Stanford NER для извлечения названий технологий и имен организации из текста.
Если я хочу переучивать модель stanford ner, мы должны предоставить данные обучения в формате:
She O
works O
on O
C# TECHNOLOGY
at O
New ORGANIZATION
York ORGANIZATION
TImes ORGANIZATION
and O
Microsoft ORGANIZATION
in O
New LOCATION
York LOCATION
Достаточно ли просто указывать названные объекты таким образом? Нужно ли указывать часть речевой информации в некотором формате, когда мы переучиваем модель? Кроме того, если у нас есть сущности, которые являются многословными, то это правильный способ их аннотировать?
Это подход, которым я придерживался: правильно ли подход?
Используется эта команда из часто задаваемых вопросов stanford ner:
java -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop austen.prop
Да, достаточно просто аннотировать сущности, как показано. Stanford NER также поддерживает классификаторы обучения, которые используют информацию POS во время классификации, но она добавляет очень мало точности, когда используются другие методы, такие как кластеры сходства распределения. В моделях, которые мы распространяем, мы не используем информацию POS для простоты (и поэтому NER можно запускать самостоятельно без тегов POS).
Для аннотирования нескольких словных объектов существует несколько стратегий. Вышеупомянутая кодировка иногда называется "IO" (внутри снаружи). Он имеет преимущества простой интерпретации и быстрой работы, но недостаток, заключающийся в том, что нельзя выделить два смежных объекта одного и того же класса, - вы должны предположить, что запуск слов одной и той же категории состоит из одного большого объекта. Мы используем его по умолчанию, потому что это просто и быстро, несмотря на этот недостаток. (Смежные объекты той же категории встречаются очень редко для человека/организации/местоположения, но они могут быть гораздо более распространены в некоторых других областях.)
Но вы также можете аннотировать данные и обучать модель, используя другие схемы кодирования, такие как IOB, который имеет противоположные свойства (более сложный, теггер работает медленнее, может представлять смежные объекты той же категории). См. Этот вопрос SO для деталей.