小编在暑假实在没有什么事情,想着用crf++进行分词玩玩。用window版 CRF++很容易进行,并生成model。但真正的运用是用对model 进行加载。小编捣鼓了将近4个小时,终于实现了python调用model。并成功进行分词。下面小编带领大家来踩一下坑。。。。
首先:找网上的参考,很多都意义不大,好多都是unbantu的,但是小编的系统是windows 啊。。。找资源半小时终于找到一篇很重要的博客。。。
https://blog.csdn.net/lilong117194/article/details/81204349
一定要按照博客进行配置。
第二,将第一步弄完进行加载python代码。
小编直接上代码了。。
import codecs
import sys
import CRFPP
crf_model=”自己model路径”
def crf_segmenter(input_file, output_file, tagger):
input_data = codecs.open(input_file, ‘r’, ‘utf-8’)
output_data = codecs.open(output_file, ‘w’, ‘utf-8’)
for line in input_data.readlines():
tagger.clear()
for word in line.strip():
word = word.strip()
if word:
tagger.add((word + “\to\tB”).encode(‘utf-8’))
tagger.parse()
size = tagger.size()
xsize = tagger.xsize()
for i in range(0, size):
for j in range(0, xsize):
char = tagger.x(i, j).decode(‘utf-8’)
tag = tagger.y2(i)
if tag == ‘B’:
output_data.write(’ ’ + char)
elif tag == ‘M’:
output_data.write(char)
elif tag == ‘E’:
output_data.write(char + ’ ‘)
else:
output_data.write(’ ’ + char + ’ ‘)
output_data.write(‘\n’)
input_data.close()
output_data.close()
if name == ‘main‘:#
tagger = CRFPP.Tagger(“-m ” + crf_model)
crf_segmenter(“测试待分词路径”, “分词后路径.txt”, tagger)