我成功地将句子分成带StringTokenizer
的单词。
是否有工具可以将Projektüberwachung
等复合词分成Projekt
和überwachung
甚至some longer ones?
分割复合词的原因是我想进行文本提取。我想将这些Projektplanung und -überwachung
之类的短语转换为Projektplanung
和Projektüberwachung
两部分。分裂复合词是我的第一步。
答案 0 :(得分:6)
今天早上在突触上随机看到了这个。以下是该网站的描述:
“jWordSplitter是一个小型Java库,它将复合词分成它们的部分。这对于像德语这样的语言特别有用,只需要附加名词即可形成无数个新单词(”Donaudampfschifffahrtskapitän“)。”
用法就像这样简单:
String word = "Donaudampfschifffahrtskapitän";
AbstractWordSplitter splitter = new GermanWordSplitter();
Collection<String> splittedWords = splitter.splitWord(word);
不幸的是,下载部分没有预先构建的库,但它很容易构建。以下是三个简单步骤的简要说明。
通过SVN检查来源:
svn co https://jwordsplitter.svn.sourceforge.net/svnroot/jwordsplitter/trunk jwordsplitter
打开Maven项目,例如在Netbeans
构建包含字典的库(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可以分解复合词。也许这可能适合您的需求?