7

我想解决分词问题(从没有空格的长字符串中解析单词)。例如,我们想从somelongwordto中提取单词[some, long, word]

我们可以通过字典的一些动态方法来实现这一点,但我们遇到的另一个问题是解析歧义。即orcore=>or coreorc ore(我们不考虑短语含义或词性)。所以我考虑使用一些统计或机器学习方法。

我发现带有训练集的朴素贝叶斯和维特比算法可以用来解决这个问题。你能给我一些关于将这些算法应用于分词问题的信息吗?

UPD:我已经在 Clojure 上实现了这个方法,使用了 Peter Norvig代码中的一些建议

4

2 回答 2

4

我认为Peter Norvig 和 Sebastian Thurn 的幻灯片是一个很好的起点。它展示了谷歌制作的真实作品。

于 2012-03-12T10:43:25.473 回答
3

这个问题完全类似于许多没有明确编码词边界的亚洲语言(例如中文、泰语)中的分词。如果您想了解解决该问题的方法的背景知识,我建议您查看 Google Scholar 以了解当前的中文分词方法。

您可以从查看一些较旧的方法开始:Sproat、Richard 和 Thomas Emerson。2003. 首届国际汉语分词bakeoff(http://www.sighan.org/bakeoff2003/paper.pdf)

如果你想要一个现成的解决方案,我推荐 LingPipe 的教程(http://alias-i.com/lingpipe/demos/tutorial/chineseTokens/read-me.html)。我已经在未分段的英文文本上使用了它,效果很好。我在几百万字的新闻专线文本上训练了底层字符语言模型,但我怀疑对于这项任务,使用任何相对正常的英文文本语料库都会获得合理的性能。

他们使用拼写更正系统来推荐候选“更正”(候选更正与输入相同,但插入了空格)。他们的拼写校正器基于 Levenshtein 编辑距离;它们只是不允许替换和转置,并将允许的插入限制在一个空格内。

于 2012-03-13T16:28:35.857 回答