Есть ли инструмент для разделения немецких составных слов в Java? - PullRequest
2 голосов
/ 27 августа 2011

Я успешно разделяю предложения на слова с StringTokenizer.

Есть ли инструмент, который может разбить составные слова, такие как Projektüberwachung на их части Projekt и überwachung или даже некоторые более длинные ?

Причина разделения составных слов заключается в том, что я хочу сделать извлечение текста. Я хочу преобразовать подобные фразы Projektplanung und -überwachung в две части Projektplanung и Projektüberwachung. И разделение составного слова - мой первый шаг.

Ответы [ 3 ]

6 голосов
/ 27 августа 2011

JWordSplitter

Случайно видел это на синаптике этим утром. Вот описание с сайта:

"jWordSplitter - это небольшая библиотека Java, которая разбивает составные слова на части. Это особенно полезно для таких языков, как немецкий, где бесконечное число новых слов может быть образовано просто добавлением существительных (" Donaudampfschifffahrtskapitän ")."

Использование так просто:

String word = "Donaudampfschifffahrtskapitän";
AbstractWordSplitter splitter = new GermanWordSplitter();
Collection<String> splittedWords = splitter.splitWord(word);

К сожалению, в разделе загрузки нет встроенной библиотеки, но ее легко собрать. Вот краткое описание того, как сделать это в три простых шага.

  1. Проверка источников через SVN:

    svn co <a href="https://jwordsplitter.svn.sourceforge.net/svnroot/jwordsplitter/trunk" rel="noreferrer">https://jwordsplitter.svn.sourceforge.net/svnroot/jwordsplitter/trunk</a> jwordsplitter

  2. Откройте проект Maven, например, в Netbeans

  3. Сборка библиотеки, включающей словарь (jwordsplitter-3.2.jar, 300kB)

1 голос
/ 27 августа 2011

Мне всегда очень не нравился тип переноса слов в вашем примере: Projektplanung und -überwachung.:-( Поэтому, хотя я согласен с Дж. Б. Низетом, что без списка или словаря простых несоставных существительных невозможно узнать, может быть, есть способ сделать интеллектуальное предположение на немецком языкепо крайней мере. Давайте воссоединим Projekt и -überwachung!

Вы можете создать список из согласных кластеров и отметить, где эти кластеры делятся. Например, ktpl в первомслово пары поделилось бы так: kt-pl. Geschwindigkeitsbegrenzung имеет tsb, который делит ts-b. Я не думал об этом до конца - и дополнительные метаданные могут быть необходимы.

Алгоритм найдет наиболее «центрально» расположенный кластер согласных в слове, например, он будет игнорировать «schw» и «nd», «gr» и «nz» и искать «tsb» в Geschwindigkeitsbegrenzung .

0 голосов
/ 27 августа 2011

Lucene имеет Token Filter , который может разлагать составные слова.Возможно, это может удовлетворить ваши потребности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...