前言:
使用输入法打字或者语音搜索时,用户的输入常常无法分辨,或者无法凭借声学,拼音无法准确判断。
这个时候可以用大量历史数据训练出一个N-Gram 模型,依靠模型来估计用户的输入。
今天就先看一下N-Gram相关的基本知识。
N-gram:
N-gram是计算机语言学和概率论范畴内的概念,是指给定的一段文本或者语音中的N个项目(item)的序列。
项目(item)可以是音节,字母,或者单词。
N=1时N-gram又被称作unigram,N=2时N-gram被称为bigram,N=3时被称为trigram,依此类推。实际应用通常是采用bigram和trigram进行计算。
一个例子:
今天又是元气满满的一天
这句话的bigram为:
今天,天又,又是,是元,元气,气满,满满,满的,的一,一天。
trigram就是:
今天又,天又是,又是元,是元气,元气满,气满满,满满的,满的一,的一天。
N-gram的用途:
输入法
用前几个字预测之后要输入的字,这个功能几乎存在于每一个我们用到的输入法中。
语音识别
同样,在前面提到过,N-gram模型也被应用在语音识别领域。比如用户在使用语音搜索的时候,输入的语音常常比较含糊,并且同音词无法通过声学原理来判断。这个时候往往就需要语音识别服务提供商通过历史搜索记录训练出一个N-gram模型,依靠模型来估计用户更有可能的输入。
模糊匹配
除了常了解到的字符间编辑距离之外,还可以利用N-gram距离,利用两个字符串的公共子串数量,能够比较字符串相似度,从而实现模糊匹配。
网友评论