我想解决单词分裂问题(从没有空格的长字符串解析单词)。
例如,我们需要从somelongword
到[some, long, word]
提取单词。
我们可以通过使用字典的一些动态方法来实现这一点,但我们遇到的另一个问题是解析模糊性。即orcore
=> or core
或orc ore
(我们不会考虑词组含义或词性)。所以我考虑使用一些统计或ML方法。
我发现带有火车组的Naive Bayes和Viterbi算法可以用来解决这个问题。你能指点一些关于这些算法应用于分词问题的信息吗?
UPD:我已经在Clojure上实现了这个方法,使用了Peter Norvig的一些建议code答案 0 :(得分:4)
我认为Peter Norvig和Sebastian Thurn的slideshow是一个很好的起点。它介绍了谷歌的实际工作。
答案 1 :(得分:3)
这个问题完全与许多亚洲语言中的分词无关,这些语言没有明确地编码单词边界(例如中文,泰文)。如果您想了解问题解决方法的背景知识,我建议您查看Google学术搜索,了解当前的中文分词方法。
您可以从查看一些较旧的方法开始: Sproat,Richard和Thomas Emerson。 2003.第一个国际中文分词烘焙(http://www.sighan.org/bakeoff2003/paper.pdf)
如果您需要现成的解决方案,我建议使用LingPipe的教程(http://alias-i.com/lingpipe/demos/tutorial/chineseTokens/read-me.html)。我在未分段的英文文本上使用它并取得了良好的效果。我在几百万字的新闻专线文本上训练了基础的人物语言模型,但我怀疑,对于这项任务,你可以使用任何相对正常的英文文本语料获得合理的表现。
他们使用拼写校正系统来推荐候选“校正”(其中候选校正与输入相同但插入了空格)。他们的拼写校正器基于Levenshtein编辑距离;他们只是禁止替换和换位,并将允许的插入限制在一个空格中。