您的位置:首页 > 其它

使用CRF++进行分词的原理和实现过程

2016-06-22 20:58 204 查看
使用CRF分词的原理和实现过程

目前业内分词效果最好的是CRF模型,而CRF++是CRF实现的比较成熟的工具,下面是用CRF++做分词的过程。

1.使用4-tags标记,对训练语料做预处理

分别用B代表词首,E代表词尾,M代表词中,S代表单字词。然后使用python将训练语料中的词处理成CRF输入的格式。

如句子:海內外  關注  的  一九九七  年  七月  一  日  終於  來到  。

处理为:

海 B

內 M

外 E

關 B

注 E

的 S

一 B

九 M

九 M

七 E

年 S

七 B

月 E

一 S

日 S

終 B

於 E

來 B

到 E

。 S

 

2.定义模版文件template。

# Unigram

U00:%x[-2,0]

U01:%x[-1,0]

U02:%x[0,0]

U03:%x[1,0]

U04:%x[2,0]

U05:%x[-2,0]/%x[-1,0]/%x[0,0]

U06:%x[-1,0]/%x[0,0]/%x[1,0]

U07:%x[0,0]/%x[1,0]/%x[2,0]

U08:%x[-1,0]/%x[0,0]

U09:%x[0,0]/%x[1,0]

 

# Bigram

B

3.使用crf_learn训练出model.

crf_learn -f 3 -c 4.0 template traindata/traincrf.data crf_model

训练出的模型文件为crf_model.

 

4.使用crf_learn对测试文件进行结果预测

crf_test -m crf_model testdata/testcrf.data > testresult/testcrf.result

预测的结果保存在testcrf.result中,最后一行为预测的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息