1、语言模型
语言模型是用来计算一个句子的概率的概率模型,它通常基于一个语料库来构建,那一个句子的概率该怎么算呢?
给定一个N个词的字符串S,即S={W1,W2,...Wn},Wn代表这个句子中的每个词,则该句子的概率是:
P(s)=P(w1,w2,...wn)=P(w1)*P(w2|w1)*...P(wn|w1,w2,w3,...wn-1)
该概率的意义是:第一个词确定后,看后面的词在前面的词出现的情况下出现的概率。比如 句子“I want to eat Chinese food” 这句话的概率就是:
P(I want to eat Chinese food) = P(I) * P(want|I) * P(to|I,want) * P(eat|I,want,to) * P(Chinese|I,wnat,to,eat) * P(food|I,want,to,eat,Chinese)
P(I)表示"I"这个词在语料库里出现的概率
P(want|I) 表示"want"词出现在"I"后面在语料库中的概率
....
把这些概率连乘起来,就得到的就是这句话在语料库中的概率,但是这样计算会出很多问题,参数空间过大,信息矩阵严重稀疏
有一些方法来优化该概率的计算:n-gram模型、决策树、最大熵模型、最大熵马尔科夫模型、条件随机场、神经网络等
2、n-gran模型