聊天机器人:入门、进阶与实战
上QQ阅读APP看书,第一时间看更新

2.2.3 N-Gram用途

N-Gram模型可以用于词性标注、文本分类、汉语分词、语音识别、机器翻译等。下面选取几个应用场景进行简单的说明。

(1)词性标注

词性标注是一个序列标注问题,对句子中每个词所属的词性进行标注。常见的词性包括名词、动词、形容词等,而一个词可能属于多种词性。比如“爱”在一个句子当中,有可能是名词,也有可能是动词。由于一个词的词性受到上下文的影响,可以使用N-Gram进行词性标注。

对“我很爱深度学习”一句中的“爱”使用Bigram进行词性标注。

假设目前已知“爱”之前出现的“很”的词性为副词,那么,“爱”为动词的概率可以由以下公式得到:

P(“爱”(动词)|副词)=C(副词,“爱”(动词))/C(副词,“爱”)

其中,C(副词,“爱”(动词))为语料库中“爱”为动词时前面出现副词的次数;C(副词,“爱”)为“爱”出现时前面出现副词的次数。

“爱”为名词出现在副词“很”后面的概率可以由以下公式计算得到:

P(“爱”名词|副词)=C(副词,“爱”(名词)/C(副词,“爱”)

其中,C(副词,“爱”(名词))为语料库中“爱”为名词时前面出现副词的次数;C(副词,“爱”)为“爱”出现时前面出现副词的次数。

比较概率计算结果的大小,选取概率最大的词性作为“爱”在这一句子当中的词性进行标注即可。

(2)机器翻译

机器翻译是一个非常复杂的过程,N-Gram语言模型作为其中的一部分,有着十分重要的作用。

对于“我爱深度学习”的英文翻译,可能存在以下几种组合:

A.I love deep learning.

B.I love learning deep.

C.I deep love learning.

这三句话中词语的翻译都正确,从词语翻译的角度无法确定哪一句是最正确的翻译结果,此时可以使用Trigram进行判断,如下所示。

A的概率由P(I|〈S〉〈S〉)*P(love|〈S〉,I)*P(deep|I,love)*P(learning|love,deep)公式可计算得到。

B的概率由P(I|〈S〉〈S〉)*P(love|〈S〉,I)*P(learning|I,love)*P(deep|love,learning)公式可计算得到。

C的概率由P(I|〈S〉〈S〉)*P(deep|〈S〉,I)*P(love|I,deep)*P(learning|deep,love)公式可计算得到。

计算发现,第1句的概率远大于第2、3句,因此选择第1句作为最后的翻译结果。

(3)文本分类

N-Gram可以进行文本分类,是一种结合贝叶斯方法和语言模型的分类器。

下面以识别垃圾短信为例进行说明。垃圾短信的识别一般分为以下几个步骤:

·对短信文本以句尾标点符号为分隔符进行断句;

·依次判断语句是否为敏感语句;

·当文本中敏感语句数量超过阈值时,判断整个文本为垃圾短信。

其中,敏感语句就可以使用N-Gram来进行判断。

例如,要使用Bigram判断“日赚百万”这一句子是否为垃圾短信中的敏感语句。分别计算这一语句在正常短信文本和垃圾短信文本当中出现的概率,计算公式如下:

P(日|〈S〉,c)*P(赚|日,c)*P(百|赚,c)*P(万|百,c)

其中c为类别标记,选取概率较高的类别作为语句标记即可。