实践参照博文:中文分词入门之字标注法4
步骤如下:
1. 下载 CRF++-0.58.tar.gz, 解压到 C:\path\crf++-0.58 下
2. 用 SWIG 工具得到 _CRFPP.pyd,CRFPP.py 两个文件。参见本博:Windows 7 x64系统安装CRFsuite给Python使用
3. 创建 模板文件 tmpl.txt 如下:
# Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-1,0]/%x[0,0]
U06:%x[0,0]/%x[1,0]
U10:%x[-2,1]
U11:%x[-1,1]
U12:%x[0,1]q
U13:%x[1,1]
U14:%x[2,1]
U15:%x[-2,1]/%x[-1,1]
U16:%x[-1,1]/%x[0,1]
U17:%x[0,1]/%x[1,1]
U18:%x[1,1]/%x[2,1]
U20:%x[-2,1]/%x[-1,1]/%x[0,1]
U21:%x[-1,1]/%x[0,1]/%x[1,1]
U22:%x[0,1]/%x[1,1]/%x[2,1]
# Bigram
B
4. 编译 crf_learn.exe,crf_test.exe,或下载 CRF++-0.58.zip
5. 从 Bakeoff 2005 下载训练及测试语料 icwb2-data
6. 将需要用到的文件复制到同一目录
7. 用下列代码将训练语料转换成crf++需要的格式,python make_crf_train_data.py pku_train.utf8 pku_training_out.utf8
make_crf_train_data.py 代码:
# coding: utf-8
'''
make_crf_train_data.py
得到CRF++要求的格式的训练文件
用法:命令行--python make_crf_train_data.py input_file output_file
4 tags for character tagging: B(Begin), E(End), M(Middle), S(Single)
'''
import codecs
import sys
def character_tagging(input_file, output_file):
'''
将输入文件内容进行标注输出到 output_file
'''
input_data = codecs.open(input_file, 'r', 'utf-8')
output_data = codecs.open(output_file, 'w', 'utf-8')
for line in input_data.readlines():
word_list = line.strip().split()
for word in word_list:
if len(word) == 1:
output_data.write(word + " S\n")
else:
output_data.write(word[