【问题标题】:German verbs lemmatization with Tiger corpus使用 Tiger 语料库的德语动词词形还原
【发布时间】:2019-08-01 02:21:00
【问题描述】:

最近我正在训练为德语单词的词形还原构建服务。

我找到了很好的文章here

在完成文章中描述的所有步骤后,我的服务运行良好,但在测试时我注意到某些动词无法转换为不定式。

例如科赫斯特->科钦。 根本原因是我的词性标注器给了我“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')]

【问题讨论】:

    标签: nlp nltk lemmatization


    【解决方案1】:

    TIGER 只包含报纸文本,所以没有很多非第三人称动词。统计模型无法了解很多关于它几乎看不到的动词词尾。

    可能有帮助的事情:

    • 选择更好的标记器。你提到的那个有一些有限的功能,特别是在前缀和后缀方面。我不熟悉 NLTK 中的所有选项(可能有一些同样不错),但作为替代方案,我建议尝试使用 marmot 进行标记,加上来自 http://cistern.cis.lmu.de 的 lemming 进行词形还原,它们相对较快并且使用方便。还有很多更新的标记方法可能会更好一些,但很难说它们之间的比较,因为最近的许多评估都是基于 UD 德语语料库,不幸的是,它的注释质量相对较低。

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

    • 即使是大型手动注释的语料库也不会涵盖大量单词形式,因此词汇资源对于词形还原非常有帮助。我会看一下Zmorge,这是一个基于德国维基词典数据的形态分析器。如果您的主要目标是词形还原,我建议您从 Zmorge 之类的东西开始,然后再使用统计模型来处理模棱两可或看不见的单词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多