结巴分词和哈工大ltp词性标注结合使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoleiniu1314/article/details/79815139

根据自己的语料,发现使用结巴分词的粒度更适合,并且在使用外部词典进行分词时,哈工大的分词模块对于外部词典中的词会有不识别的现象。
对于词性标注而言,经过调研,各种分词工具都专注于做分词,词性标注做的都不是太好,结合语料比较之后决定使用哈工大ltp的词性标注模块。

代码如下:

import jieba
from pyltp import Postagger
import os

MODELDIR = "ltp_data"

def fenci_ltp():
    fin = open('input.txt', 'r')    # 需要进行分词的文件,每行一句话

    jieba.load_userdict('mydict.txt')
    postagger = Postagger()    # 初始化实例
    postagger.load(os.path.join(MODELDIR, "pos.model"))    # 加载模型

    for eachLine in fin:  
        line = eachLine.strip()
        words = jieba.cut(line)    # jieba分词返回的是可迭代的generator,里面的词是unicode编码
        words = [word.encode('utf-8') for word in words]    # 将unicode编码的单词以utf-8编码
        postags = postagger.postag(words)    # 词性标注
        words_postags = []
        for word,postag in zip(words, postags):
            words_postags.append(word + '/' + postag)
        print ' '.join(words_postags)

    postagger.release()    # 释放模型

if __name__ == '__main__':
    fenci_ltp()

说明:
1、运行以上代码需要安装 jieba 和 pyltp,pip install jieba,pip install pyltp;
2、需要下载pyltp的模型文件,链接如下,这里只用到了其中的词性标注模型 pos.model;
https://pan.baidu.com/share/link?shareid=1988562907&uk=2738088569#list/path=%2Fltp-models%2F3.4.0
3、结巴分词使用了外部词典 mydict.txt,格式:一个词占一行;每一行分三部分,一部分为词语,另一部分为词频(可省略),最后为词性(可省略),用空格隔开 ;

欢迎提问。

猜你喜欢

转载自blog.csdn.net/xiaoleiniu1314/article/details/79815139