Лемматизация немецких глаголов с помощью тигрового корпуса - PullRequest
1 голос
/ 10 марта 2019

В последнее время я собираюсь создать сервис для лемматизации немецких слов.

Я нашел очень хорошую статью здесь

После того, как я выполнил все шаги, описанные в статье, мой сервис работает довольно хорошо, но во время тестирования я заметил, что некоторые глаголы не могут быть преобразованы в бесконечную форму.

например. кочст -> кочень. Основная причина в том, что мой POS-тегер дает мне ADV для 'kochst', тогда как должен VVFIN или, по крайней мере, V ..., поскольку это глагол.

Я также обнаружил, что исходный файл корпуса TIGER не содержит форму «kochst», а содержит только «kocht».

Я не знаком с форматом conll, но добавил еще одну строку, показанную ниже

50475_11    kochst  kochen  _   VVFIN   _   number=sg|person=2|tense=pres|mood=ind  _   0   _   --  _   _   _   _

и переобучил тэггер безуспешно, см. Листинг ниже

>>> import nltk
>>> corp = nltk.corpus.ConllCorpusReader('.', 'tiger_release_aug07.corrected.16012013.conll09',
...                                      ['ignore', 'words', 'ignore', 'ignore', 'pos'],
...                                      encoding='utf-8')
>>> 
>>> tagged_sents = corp.tagged_sents()
>>> 
>>> from ClassifierBasedGermanTagger.ClassifierBasedGermanTagger import ClassifierBasedGermanTagger
>>> tagger = ClassifierBasedGermanTagger(train=tagged_sents)
>>> tagger.tag(['kochst'])
[('kochst', u'ADV')]
>>> 
>>> 
>>> tagged_sents[-1]
[(u'kochst', u'VVFIN')]

Так что, возможно, я неправильно добавил запись 'kochst', или корпус TIGER не завершен (я обнаружил, что многих глаголов в форме второго лица нет), или я просто не понимаю что-то здесь, как обучить POS-тегер вернуть глагол для спряженных глаголов.

'kochst' просто пример, я думаю, что многие другие глаголы не могут быть распознаны

>>> tagger.tag(['fahre'])
[('fahre', u'XY')]
>>> tagger.tag(['musst'])
[('musst', u'PPER')]

1 Ответ

1 голос
/ 12 марта 2019

TIGER содержит только газетный текст, поэтому в нем не так много глаголов не от третьего лица.Статистическая модель не сможет много узнать об окончаниях глаголов, которые она едва видела.

Что может помочь:

  • Выберите лучший тегер.У того, что вы упомянули, есть несколько ограниченный набор функций, особенно с точки зрения префиксов и суффиксов.Я не знаком со всеми вариантами в NLTK (могут быть некоторые, которые одинаково хороши), но в качестве альтернативы я бы предложил попробовать сурок для пометки, плюс лемминг для лемматизации, от http://cistern.cis.lmu.de,, которые относительноБыстрый и простой в использовании.Есть также множество новых подходов к тегированию, которые могут быть немного лучше, но трудно сказать, как они сравниваются, потому что многие недавние оценки основаны на UD German корпус, который, к сожалению, имеет относительно низкое качество аннотации.

  • Тегеры полагаются на контекст, поэтому, когда вы добавляете некоторые новые обучающие данные, это помогает добавлять целые предложения или хотя бы целые фразы.

  • Даже большой аннотированный вручную корпусне будет охватывать множество словоформ, поэтому лексические ресурсы очень полезны для лемматизации.Я бы посмотрел морфологический анализатор Zmorge , основанный на данных немецкого викисловаря.Если вашей главной целью является лемматизация, я бы рекомендовал начать с чего-то вроде Zmorge и вернуться к статистическим моделям для двусмысленных или невидимых слов.

...