【发布时间】:2012-06-16 19:06:13
【问题描述】:
我正在设计一个文本处理程序,该程序将从一个长的逐项文本文档中生成一个关键字列表,并为含义相似的单词组合条目。那里有一些指标,但是我遇到了一个新问题,即处理不在我正在使用的字典中的单词。
我目前正在使用 nltk 和 python,但我这里的问题具有更抽象的性质。给定一个不在字典中的单词,将其解析为字典中的单词的有效方法是什么?我目前唯一的解决方案是遍历字典中的单词并从输入的单词中选择具有最短 Levenshtein 距离(编辑距离)的单词。
显然,这是一种非常缓慢且不切实际的方法,我实际上并不需要字典中的绝对最佳匹配,只要它是包含的单词并且非常接近即可。在解决方案中,效率对我来说更为重要,但也需要基本的准确性。
关于如何将一些未知单词通常解析为字典中的已知单词有什么想法吗?
【问题讨论】:
-
虽然它们都非常酷,而且肯定在正确的轨道上,但我正在寻找不会像 Levenshtein Automata 中那样拒绝任何单词的东西,并且不需要那么大的存储空间BK 树可以。
-
这是否意味着您想找到与字典任意距离的单词的匹配项? (例如,在
supercalifragilisticexpiladocious中寻找the,pneumonoultramicroscopicsilicovolcanoconiosis仍然应该给出结果?) -
听起来很傻,是的。我很可能正在处理我的工作集中的常见单词,这些单词与我的字典相距甚远,我希望它们解析为同一个单词,尽管它们解析为哪个单词并不是很重要。有什么办法可以从激进的词干提取器链接兰开斯特向后工作?
-
如果您正在寻找具有相似含义的单词,那么您确实需要词库而不是 Levenshtein 距离。或者,Soundex 可能比 Levenshtein 更快,至少在第一次通过时。
标签: python language-agnostic machine-learning nlp oov