中文分析3:基于语言模型的无监督分词

一、语言模型

1、什么是语言模型

语言模型就是计算条件概率的模型。

条件概率

其中w1,w2,…,wn−1是句子中的前n−1个词(或字),wn是第n个词(或字)。

2、如何计算语言模型

即如何计算这个条件概率呢?

1、统计+平滑(工具实现:kenlm

2、最大熵语言模型

3、CRF语言模型

4、神经网络模型

神经网络模型的大概思路是:p(wn|w1,w2,…,wn−1)是关于w1,w2,…,wnw1,w2,…,wn的一个函数,但是这个函数的具体形式我不知道,所以利用神经网络去拟合它,为了更好地拟合,并且减少模型参数,还把词语“嵌入”到实数空间中(one-hot的方式参数太多又稀疏所以用嵌入式表示为短向量),用短向量来表示词语,跟语言模型一起训练。从这个角度看,词向量只是语言模型的副产品。

二、基于字的语言模型进行分词

1、分词-最优切分路径-最大路径概率

分词的过程就是寻找最优切分路径的过程,路径概率最大的切分方式就是最优分词结果。

路径概率

一个长度为l的字符串s1,s2,…,sl,一种分词结果为w1,w2,…,wm,那么这种切分方式的路径概率计算为:概率乘积p(w1)p(w2)…p(wm)。

最大路径概率对应最优切分路径,对应最优分词。

2、如何计算路径概率?

我们既然要找到路径概率最大的切分方式,那路径概率p(w1)p(w2)…p(wm)怎么算呢?

贝叶斯展开求解最优路径,转化为语言模型即条件概率。

假如字符串s1,s2,s3…,sl,

A、如果不进行切分,那么它的路径概率应该是:

p(s1)p(s2)p(s3)…p(sl)

B、如果s1,s2应该合并为一个词,那么它的路径概率是:

p(s1s2)p(s3)…p(sl)=p(s1)p(s2|s1)p(s3)…p(sl)

C、如果s2,s3应该合并为一个词,那么它的路径概率是:

p(s1)p(s2s3)…p(sl)=p(s1)p(s2)p(s3|s2)…p(sl)

D、如果s1,s2,s3应该合并为一个词,那么它的路径概率是:

p(s1s2s3)…p(sl)=p(s1)p(s2|s1)p(s3|s1s2)…p(sl)

按照经验,词的平均长度不会很大,因此,我们只需要用n-gram语言模型就够了,其中n为4时效果就挺不错了。(只需要算unigram,2-gram,3-gram和4-gram即可)。

所以路径概率就是条件概率相乘。我们只需要提前算出来所有n-gram的概率,然后再结合切分路径去计算路径概率,路径概率最大的那个就是最优切分。(这个过程我们要借助viterbi算法来做)

3、具体分词时怎么操作

将分词转化为字标注问题

如果字语言模型取到4-gram,那么它相当于做了如下的字标注:

按照经验,词的平均长度不会很大,因此,我们只需要用n-gram语言模型就够了,其中n为4时效果就挺不错了。(只需要算unigram,2-gram,3-gram和4-gram即可)。

b:单字词或者多字词的首字

c:多字词的第二字

d:多字词的第三字

e:多字词的其余部分

想一想,是不是文本中每个字都会被标注为b,c,d,e的一种呢,而且对于超过4个字的长词也可以标注,比如‘克里斯汀·迪奥’,会被标注为'bcdeeee'。

所以,对于分词问题:

第一步:计算每个字分别被标注为b,c,d,e的概率;

第二步:用viterbi算法来寻找最优标注路径。

注意不是说某个词被标注为b的概率最大就一定会被标注为b,因为对于分词的标注有它自己的标注规则,比如b后面只能跟b和c,不能跟d和e吧,c后面只能跟d和b等等。所以用viterbi算法来寻找最优标注路径。

那第一步,如何去计算每个字分别被标注为b,c,d,e的概率呢?

计算每个字的标注概率

具体怎么算:

1、训练语言模型比如用统计+平滑的方式计算语言模型,选用工具kenlm来训练。这个工具可以得到grams的联合概率,如p(a),p(b),p(c),p(ab),p(bc),p(adc)。

2、计算条件概率即语言模型。

根据贝叶斯公式,就可以算出条件概率。如p(b/a)=p(ab)/p(a)

3、条件概率即是每个字被标注为b,c,d,e的概率值。

第二步,viterbi算法计算时,需要状态转移概率,即b,c,d,e之间的转移概率。结合刚才说的一些规则,不为0的转移概率如下:

p(b|b),p(c|b),p(b|c),p(d|c),p(b|d),p(e|d),p(b|e),p(e|e)

这些转移概率的取值可以统计获得,经验设定。

已知转移概率、条件概率(对应HMM中发射概率),代入viterbi算法,就可以得到最优切分路径。

为啥说条件概率对应HMM中的发射概率呢?

因为每个字的标注概率b,c,d,e的计算公式是条件概率,而发射概率本身的意思就是在字预测为b,c,d,e的概率。所以两者是一个东西。

三、代码实现

基于语言模型的无监督分词算法实现,见WordSegWithNgram

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354