LTP分词与词性标注(使用用户词典)

#coding:utf-8

from pyltp import Segmentor
from pyltp import Postagger

def read_and_seg_pos(file_dir):
    segmentor = Segmentor()
    postagger = Postagger()
    segmentor.load_with_lexicon("模型地址/cws.model","用户词典/fulluserdict")
    postagger.load_with_lexicon("模型地址/pos.model","用户词典/fulluserdict")
    #用户词典为纯文本,第一列为词,第二列为词性
    file_read = open(file_dir,"r")
    texts = file_read.readlines()    #这里是一次性全部读取,对于大语料,往往采用readline(),一次读取一行
    file_write_seg = open(file_dir+"_seg","w")
    file_write_pos = open(file_dir+"_pos","w")
    for text in texts:
        words = segmentor.segment(text)#分词
        file_write_seg.write(" ".join(words)+"\n")#将以空格分好的词写入文档
        postags = postagger.postag(words)         #必须先分词再词性标注
        words_and_pos = zip(words,postags)
        words_and_pos.append(('$','$'))   #'$'作为判断一句话结束的标志
        for word,pos in words_and_pos:
            if word != '$':
                file_write_pos.write(word+" "+pos+" ")
            else:
                file_write_pos.write('\n')


    file_read.close()
    file_write_seg.close()
    file_write_pos.close()
    segmentor.release()
    postagger.release()

read_and_seg_pos("./corpus")
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 38
    评论
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值