Есть ли бесплатная библиотека для морфологического анализа немецкого языка? - PullRequest
8 голосов
/ 25 марта 2009

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

Например:

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

(сейчас мой мозг кружится :))

Ответы [ 8 ]

7 голосов
/ 25 марта 2009

Я думаю, что вы ищете "алгоритм стемминга".

Подход Мартина Портера хорошо известен среди лингвистов. Стеммер Портера - это в основном алгоритм удаления аффиксов в сочетании с несколькими правилами замещения для этих особых случаев.

Большинство стволовых поставляют стволы, которые лингвистически "неверны" Например: и «красивая», и «красота» могут привести к основанию «красавица», что, конечно, не является настоящим словом. Это не имеет значения, если вы используете эти основы для улучшения результатов поиска в информационно-поисковых системах. Lucene поставляется с поддержкой стеммера Porter, например.

Портер также разработал простой язык программирования для разработки стеммеров, называемый Snowball.

В Snowball также доступны стеммеры для немецкого языка. Версия C, созданная на основе источника Snowball, также доступна на веб-сайте вместе с объяснением алгоритма в виде простого текста.

Вот немецкий стеммер в Snowball: http://snowball.tartarus.org/algorithms/german/stemmer.html

Если вы ищете соответствующий ствол слова, который вы нашли бы в словаре, вместе с информацией о части речи, вам нужно Google для «лемматизации».

5 голосов
/ 29 ноября 2012

(Отказ от ответственности: я связываю свои собственные проекты с открытым исходным кодом здесь)

Эти данные в форме списка слов доступны по адресу http://www.danielnaber.de/morphologie/. Их можно объединить с библиотекой разделителя слов (например, jwordsplitter), чтобы охватить составные существительные, которых нет в списке.

Или просто используйте LanguageTool из Java , в котором список слов встроен в виде компактного конечного автомата (плюс он также включает в себя сложное разбиение).

3 голосов
/ 21 февраля 2014

Взгляните на LemmaGen (http://lemmatise.ijs.si/)), который направлен на предоставление стандартизированной многоязычной платформы с открытым исходным кодом для лемматизации. Он делает именно то, что вам нужно.

3 голосов
/ 26 июня 2011

Вы спрашивали об этом некоторое время назад, но вы все еще можете попробовать его с morphisto .

Вот пример того, как это сделать в Ubuntu:

  1. Установка инструментов конечного преобразователя Штутгарта

    $ sudo apt-get install sfst

  2. Загрузите морфологическую морфологию, например, morphisto-02022011.a

  3. Компакт это, например

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

  4. Используйте это! Вот несколько примеров:

    $ echo Hochzeit | fst-proc morphisto-02022011.ac ^ Hochzeit / hohZeit <+ NN> / hohZeit <+ NN> / hohZeit <+ NN> / hohZeit <+ NN> / HOCHZEIT <+ NN> / HOCHZEIT <+ NN> / HOCHZEIT <+ NN> / HOCHZEIT <+ NN> / Hochzeit <+ NN> / Hochzeit <+ NN> / Hochzeit <+ NN> / Hochzeit <+ NN> $

    $ echo gearbeitet | fst-proc morphisto-02022011.ac ^ Gearbeitet / Arbeiten <+ ADJ> / Arbeiten <+ ADJ> / Arbeiten <+ V> $

2 голосов
/ 25 марта 2009

Не думаю, что это можно сделать без словаря.

Подходы, основанные на правилах, неизменно будут сталкиваться с такими вещами, как

gegessen -> эссенция
gegangen -> angen

(примечание для людей, которые не говорят по-немецки: во втором случае правильное решение - "gehen").

1 голос
/ 25 октября 2014

Есть несколько инструментов, которые вы можете использовать как морфинг. компонент в Matetools, Morphisto и т. д. Но боль в том, чтобы интегрировать их в вашу цепочку инструментов. Очень хорошая оболочка для множества этих лингвистических инструментов - DKpro (https://dkpro.github.io/dkpro-core/), - фреймворк, использующий UIMA. Он позволяет вам написать свой собственный конвейер предварительной обработки, используя различные лингвистические инструменты из разных ресурсов, которые все автоматически загружаются на ваш компьютер. и говорить друг с другом. Вы можете использовать Java, Groovy или даже Jython, чтобы использовать его. DKPro предоставляет вам легкий доступ к двум морфологическим анализаторам, MateMorphTagger и SfstAnnotator.

Вы не хотите использовать стеммер, такой как Портер, это уменьшит словоформа таким образом, который не имеет никакого смысла с лингвистической точки зрения и не имеет поведения, которое вы описываете. Если вы хотите найти только основную форму, для глагола, который был бы инфинитивом, а для существительного именительный падеж единственного числа, то вам следует использовать лемматизатор. Вы можете найти список немецких лемматизаторов здесь . Treetagger широко используется. Вы также можете использовать более сложный анализ, предоставляемый морфологическим анализатором, таким как SMORS. Это даст вам что-то вроде этого (пример с сайта SMORS ):

А вот анализ "unübersetzbarstes", показывающий префикс, суффикс и> градацию: ип Übersetzen бар <+ ADJ>

1 голос
/ 13 февраля 2012

Можно использовать morphisto с ParZu (https://github.com/rsennrich/parzu). ParZu - это анализатор зависимостей для немецкого языка.

Это означает, что ParZu также устраняет неоднозначность вывода из morphisto

1 голос
/ 25 марта 2009

Взгляните на Лев . Они предлагают данные, которые вы ищете, может быть, это дает вам некоторые идеи.

...