объясняя уродливые ошибки NLTK pos_tag

Я занимаюсь анализом текста с помощью Python3-NLTK. На этапе предварительной обработки я хотел реализовать разбиение на фрагменты имен-фраз, для чего требуется маркировка POS и выбор в соответствии с регулярное выражение (грамматика). Мои результаты были неудовлетворительными, например, у меня была фраза the president of, потому что pos_tag идентифицировал ее как DT,NN,NNP (как, черт возьми, of может быть именем собственным!)

поэтому я углубился в NLTK pos_tag и обнаружил такой своеобразный результат:

С

import nltk
nltk.help.upenn_tagset()

вы получите полный список доступных тегов в NLTK pos_tag. Это один из них:

CD: цифра, кардинальное число: середина 1890-х девять тридцать сорок два...

Как уже говорилось, слово mid-1980 означает компакт-диск. теперь это то, что у меня есть:

from nltk import pos_tag

t1 = 'it happened in the mid-1890s'
pos_tag(t1.split())[-1] # gives:('mid-1890s', 'NNS')

t2 = 'it happened in the mid-1890'
pos_tag(t2.split())[-1] # gives:('mid-1890', 'NN')

t3 = 'mid-1890'
pos_tag(t3.split())[-1] # gives:('mid-1890', 'NN')

t4 = 'mid-1890s'
pos_tag(t4.split())[-1] # gives:('mid-1890s', 'NNS')
  1. Разве это не странная ситуация?!

  2. Есть ли какой-либо (возможно, контролируемый) метод улучшения POS-тегов? Я работаю над более чем 11 000 документов (до 500 слов в каждом документе).


person Alireza    schedule 27.03.2017    source источник
comment
Нет, это не странно, explosion.ai/blog/part-of -speech-pos-tagger-in-python.   -  person alvas    schedule 27.03.2017
comment
Статистические POS-тегеры делают всевозможные странные вещи. Обычно нет смысла спрашивать, почему, потому что, хотя вы можете исправить конкретный пример, который вас беспокоит, нет хорошего способа улучшить производительность в целом, кроме как переключиться на лучший тегировщик. Так что да, это дубликат вопроса, на который указал Альвас.   -  person alexis    schedule 29.03.2017