【问题标题】:Is there a free library for morphological analysis of the German language?有免费的德语形态分析库吗?
【发布时间】:2009-03-25 09:51:57
【问题描述】:

我正在寻找一个可以对德语单词进行形态分析的库,即将任何单词转换为其根形式并提供有关所分析单词的元信息。

例如:

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
...

(我现在脑子里都在转:))

【问题讨论】:

    标签: morphological-analysis languagetool


    【解决方案1】:

    我认为您正在寻找“词干算法”。

    Martin Porter 的方法在语言学家中广为人知。 Porter 词干分析器基本上是一种词缀剥离算法,结合了一些针对这些特殊情况的替换规则。

    大多数词干分析器提供的词干在语言上是“不正确的”。例如:“beautiful”和“beauty”都可以导致词干“beauti”,当然,这不是一个真实的词。不过,如果您使用这些词干来改进信息检索系统中的搜索结果,这并不重要。例如,Lucene 支持 Porter 词干分析器。

    Porter 还设计了一种用于开发词干分析器的简单编程语言,称为 Snowball。

    Snowball 中还提供德语词干分析器。网站上还提供了从 Snowball 源代码生成的 C 版本,以及算法的纯文本说明。

    这是 Snowball 中的德语词干分析器:http://snowball.tartarus.org/algorithms/german/stemmer.html

    如果您要查找字典中的相应词干以及词性信息,则应在 Google 上搜索“词形还原”。

    【讨论】:

      【解决方案2】:

      (免责声明:我在这里链接我自己的开源项目)

      此数据以单词列表的形式出现在http://www.danielnaber.de/morphologie/。它可以与分词器库(如 jwordsplitter)结合使用,以覆盖不在列表中的复合名词。

      或者只使用LanguageTool from Java,它以紧凑的有限状态机的形式嵌入了单词列表(另外它还包括复合拆分)。

      【讨论】:

      • 感谢您发布您的答案!请务必仔细阅读FAQ on Self-Promotion。另请注意,每次链接到自己的网站/产品时,都要求发布免责声明。
      【解决方案3】:

      您前段时间问过这个问题,但您仍然可以使用morphisto 尝试一下。

      这是一个关于如何在 Ubuntu 中执行此操作的示例:

      1. 安装 Stuttgart 有限状态传感器工具

        $ sudo apt-get install sfst

      2. 下载morphisto形态,例如morphisto-02022011.a

      3. 压缩它,例如

        $ fst-compact morphisto-02022011.a morphisto-02022011.ac

      4. 使用它!以下是一些示例:

        $ echo Hochzeit | fst-proc morphisto-02022011.ac ^Hochzeit/hohZeit/hohZeit/hohZeit/hohZeit/HochZeit/HochZeit/HochZeit/HochZeit /Hochzeit/Hochzeit/Hochzeit/Hochzeit$

        $ echo gearbeitet | fst-proc morphisto-02022011.ac ^gearbeitet/arbeiten/arbeiten/arbeiten$

      【讨论】:

        【解决方案4】:

        看看 LemmaGen (http://lemmatise.ijs.si/),这是一个旨在为词形还原提供标准化开源多语言平台的项目。它正在做你想做的事。

        【讨论】:

          【解决方案5】:

          我认为没有字典就无法做到这一点。

          基于规则的方法总是会遇到诸如

          之类的问题

          gegessen -> 埃森
          格甘根 -> 安根

          (不会说德语的人注意:第二种情况的正确解决方案是“gehen”)。

          【讨论】:

            【解决方案6】:

            看看Leo。 他们提供你所追求的数据,也许它会给你一些想法。

            【讨论】:

              【解决方案7】:

              可以将morphisto 与 ParZu (https://github.com/rsennrich/parzu) 一起使用。 ParZu 是德语的依赖解析器。

              这意味着 ParZu 也消除了 morphisto 的输出歧义

              【讨论】:

                【解决方案8】:

                有一些工具可以像变形一样使用。 Matetools、Morphisto 等中的组件。但痛苦是将它们集成到您的工具链中。 DKpro (https://dkpro.github.io/dkpro-core/),一个使用 UIMA 的框架,对很多这些语言工具进行了很好的包装。它允许您使用来自不同资源的不同语言工具编写自己的预处理管道,这些工具都会自动下载到您的计算机上并相互对话。您可以使用 Java 或 Groovy 甚至 Jython 来使用它。 DKPro 让您可以轻松访问两个形态分析器,MateMorphTagger 和 SfstAnnotator。

                您不想使用像 Porter 这样的词干分析器,它会以一种在语言上没有任何意义并且没有您所描述的行为的方式来减少单词形式。如果你只想找到基本形式,动词是不定式,名词是单数主格,那么你应该使用词形还原器。您可以找到德国词形还原器列表here。 Treetagger 被广泛使用。您还可以使用 SMORS 等形态分析仪提供的更复杂的分析。它会给你这样的东西(来自SMORS 网站的例子):

                这里是对“unübersetzbarstes”的分析,显示了前缀、后缀和>渐变: unübersetzenbar

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-12-23
                  • 2011-06-18
                  • 2012-02-15
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-01-31
                  • 1970-01-01
                  相关资源
                  最近更新 更多