小编在暑假实在没有什么事情,想着用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)
来源:CSDN
作者:聂小闲
链接:https://blog.csdn.net/qq_34438672/article/details/81515313