有没有一个工具可以在java中拆分德语复合词?

时间:2011-08-27 11:26:24

标签: java string text-processing tokenize

我成功地将句子分成带StringTokenizer的单词。

是否有工具可以将Projektüberwachung等复合词分成Projektüberwachung甚至some longer ones

分割复合词的原因是我想进行文本提取。我想将这些Projektplanung und -überwachung之类的短语转换为ProjektplanungProjektüberwachung两部分。分裂复合词是我的第一步。

3 个答案:

答案 0 :(得分:6)

JWordSplitter

今天早上在突触上随机看到了这个。以下是该网站的描述:

“jWordSplitter是一个小型Java库,它将复合词分成它们的部分。这对于像德语这样的语言特别有用,只需要附加名词即可形成无数个新单词(”Donaudampfschifffahrtskapitän“)。”

用法就像这样简单:

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

不幸的是,下载部分没有预先构建的库,但它很容易构建。以下是三个简单步骤的简要说明。

  1. 通过SVN检查来源:

    svn co https://jwordsplitter.svn.sourceforge.net/svnroot/jwordsplitter/trunk jwordsplitter

  2. 打开Maven项目,例如在Netbeans

  3. 构建包含字典的库(jwordsplitter-3.2.jar,300kB)

答案 1 :(得分:1)

我一直非常不喜欢你的例子中的连字类型:Projektplanung und -überwachung。 :-(所以即使我同意JB Nizet,没有简单的非复合名词的列表或字典,也无法知道,也许有一种方法来进行智能猜测,至少德国人。让我们重新团聚Projekt和-überwachung!

您可以创建辅音群列表,并记下这些群集的划分位置。例如该对中第一个单词中的 ktpl 将除以:kt-pl。 Geschwindigkeitsbegrenzung tsb分割ts-b。我没有想到它 - 并且可能需要额外的元数据。

该算法将在单词中找到最“中心定位”的辅音簇。例如。它会忽略'schw'和'nd'和'gr'和'nz'并在 Geschwindigkeitsbegrenzung 中查看'tsb'。

答案 2 :(得分:0)

Lucene有Token Filter可以分解复合词。也许这可能适合您的需求?