用泰格语料对德语动词进行词缀化

时间:2019-03-10 17:41:38

标签: nlp nltk lemmatization

最近我正在训练为德语单词的词素化服务。

我发现非常好的文章here

完成本文描述的所有步骤后,我的服务效果很好,但是在测试时,我注意到某些动词无法转换为不定式形式。

例如科赫斯特->科兴。 根本原因是我的POS标记器给我'kochst'的ADV,而应该给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 个答案:

答案 0 :(得分:1)

TIGER仅包含报纸文字,因此没有很多非第三人称动词。统计模型将无法了解很少见的动词结尾。

可能有帮助的事情

  • 选择一个更好的标记器。您提到的功能集有些有限,尤其是在前缀和后缀方面。我对NLTK中的所有选项都不熟悉(可能有些选项同样不错),但作为替代方案,我建议尝试使用http://cistern.cis.lmu.de中的土拨鼠进行标记,再进行lemmatization进行lemming。快速和容易使用。还有许多较新的标记方法可能要好一些,但是很难说出它们如何进行比较,因为最近的许多评估都是基于UD德语语料库的,不幸的是其注释的质量相对较低。

  • 标记符依赖于上下文,因此,当您添加一些新的训练数据时,它有助于添加完整的句子或至少完整的短语。

  • 即使大型的手动注释语料库也不会覆盖大量的单词形式,因此词汇资源对于词素化非常有帮助。我来看看Zmorge,这是一种基于德国维克蒂奇语的数据的形态分析仪。如果您的主要目标是去词义化,那么我建议从Zmorge之类的东西开始,然后再回到含糊不清或看不见的单词的统计模型。