我正在寻找一个可以对德语单词进行形态分析的库,即它将任何单词转换为其根形式并提供有关所分析单词的元信息.
例如:
gegessen -> essen wurde [...] gefasst -> fassen Häuser -> Haus Hunde -> Hund
我的收藏:
它必须与名词和动词一起使用.
我知道鉴于德语的复杂性,这是一项非常艰巨的任务,因此我也在寻找仅提供近似值或可能只有80%准确度的库.
我更喜欢不与字典一起工作的图书馆,但是考虑到这些情况,我愿意接受妥协.
我也更喜欢C/C++/Delphi Windows库,因为这样可以更容易集成,但.NET,Java,...也可以.
它必须是一个免费的图书馆.(L)GPL,MPL,......
编辑:我知道没有任何字典就没有办法进行形态分析,因为不规则的单词.当我说,我更喜欢没有字典的图书馆,我的意思是那些完整的字典,它们映射每一个字:
arbeite -> arbeiten arbeitest -> arbeiten arbeitet -> arbeiten arbeitete -> arbeiten arbeitetest -> arbeiten arbeiteten -> arbeiten arbeitetet -> arbeiten gearbeitet -> arbeiten arbeite -> arbeiten ...
这些词典有几个缺点,包括巨大的尺寸和无法处理未知单词.
当然,所有异常只能用字典处理:
esse -> essen isst -> essen eßt -> essen aß -> essen aßt -> essen aßen -> essen ...
(我的思绪现在正在旋转:))
我认为你正在寻找一个"词干算法".
Martin Porter的方法在语言学家中是众所周知的.Porter词干分析器基本上是一个词缀剥离算法,结合了一些特殊情况的替换规则.
大多数词干分析者提供语言上"不正确"的词根.例如:"美丽"和"美丽"都会导致词干"美化",当然,这不是一个真正的词.但是,如果您使用这些词干来改进信息检索系统中的搜索结果,则无关紧要.例如,Lucene支持Porter stemmer.
Porter还设计了一种简单的编程语言来开发词干分析器,称为Snowball.
Snowball还提供德语词干分析器.从Snowball源生成的AC版本也可以在网站上获得,以及算法的纯文本说明.
这是Snowball中的德国词干分析师:http://snowball.tartarus.org/algorithms/german/stemmer.html
如果你正在寻找一个词的相应词干,就像你在词典中找到的那样,以及词性的信息,你应该谷歌"词典化".
(免责声明:我在这里链接我自己的开源项目)
这些数据以单词列表的形式可在http://www.danielnaber.de/morphologie/获得.它可以与分词器库(如jwordsplitter)结合使用,以涵盖列表中不在的复合名词.
或者只使用Java中的LanguageTool,它具有以紧凑有限状态机的形式嵌入的单词列表(加上它还包括复合分裂).