条件随机场应用于中文地址切分

条件随机场应用于中文地址切分

一、模型结果

条件随机场简称CRF,常用于标注或分析序列资料,如自然语言文字或是生物序列。条件随机场应用于中文地址切分,就是根据训练样本中文字的上下文关系及标注信息将地址进行切分并将切分后的省市区县等地名进行标注,图1为模型结果展示

图1 /city表示城市,/county表示区县,/township表示乡镇或工业区,/road表示道路,/roadno表示门牌号,/desc表示描述信息,/direction表示方向信息。

二、模型原理

1、准备语料库。必须得准备一个已经分好词的语料库,用于机器学习,如下图2所示:

图2 词性标注的表示符号为_

2、条件随机场的初步学习是对训练样本中字的状态来进行状态分析,对于一个字来说,它有4个状态,分别是:词头(Begin)、词中(Middle)、词尾(End)、单字成词(Single),简称B,M,E,S。因此需要根据上一步的语料库,分析出每一个字的状态,例如:“北京市”的状态分析为:“北|B 京|M 市|E”, 通过对语料库的每一个分好的词,添加状态信息,如图3

图3

3、特征学习。经过上一步中字的状态分析,接下来就相对容易多了,特征学习是整个过程中非常重要的部分,在进行特征学习之前,必须了解要学习哪些特征?如下:
特征一、某一个字一共在语料库中出现了多少次?例如“市”字一共出现了60多万次。

特征二、某一个字出现在词头(B),词中(M),词尾(E),单字成词(S)的概率是多少?即出现60多万次“市”字的时候,“市”作为词尾的概率是多少,词中的概率是多少,依次类推。

特征三、 某一个字,当为词头(B)状态的时候,它下一个字的状态是(M、E之一)的概率是多少?每一个字都有属于自己的状态,但是这个字的后面一个字,也有属于自己的状态,那么当前字的状态,到下一个字的状态(或许是B、M、E、S之一)的概率是多少。例如“市”字,当“市”的状态为E的时候,后面跟的字中,状态为B的有60多万个,状态为M的有0个,状态为E的有0个,状态为S的有0个。依次统计“市”的状态为B,M,S的时候,下一字的状态。此过程俗称:状态转移概率计算。此项会形成一个4X4的矩阵。

4、通过前面三个特征学习,条件随机场学习了上下文关系,学习了某一个字出现的时候,后面字出现的是什么,概率为多少?例如当状态为B的“北”字出现时,下一个字是“京”的概率为95%,状态为E的“市”字出现时,上一个字是“京”的概率为99%,下一个字是“朝”的概率为6%等等。因此,就可以根据条件随机场学习得到的每个字上下文关系的概率表达,对地址进行切分。还有,为提高地址切分的准确率,特征学习时,不仅仅只记录上一个字和下一个字的上下文关系,还可以记录上两个字和下两个字的上下文关系。