N-Gram 算法用来做相似度比较

February 6th, 2010 by Bruce Dou

N-Gram有很多应用,但是我们只用来做相似分析。基本思路来自Grzegorz Kondrak 2005年的一篇论文。http://webdocs.cs.ualberta.ca/~kondrak/papers/spire05.pdf

最近在做Translation memory的时候用到比较字符串相似度的算法。在机器翻译或者语言识别领域之所以能使用相似度算法其实是基于一种假设,相似的词具有相似的意义。

什么是N-Gram算法?
N-Gram 模型基于这样一种假设,第n个词的出现只与前面n-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。在拼写检查里即是一个字母的出现概率只和前n-1个字母的出现概率相关,并且是前n-1个字母出现概率的乘积。
如何比较2个字符串的相似度?

一般情况我们会考虑用edit distance 或者LCS。前边的论文证实了这两种算法都是N-Gram的简化版本。

在搜索引擎里一般是用来做拼写检查或者提示,比如你在百度或者google输入一个词就会有相关的词提示出来。

Leave a Reply