此博客均为对下面这个文档的复现,非原创!!!!
使用 pyltp — pyltp 0.2.0 文档
1.安装pyltp
首先激活你的虚拟环境,然后输入下面语句即可,如果出现问题的话可以更换为清华源。
pip install pyltp
然后下载你自己所需要的ltp模型,这里附上3.4.0版本的
http://model.scir.yunfutech.com/model/ltp_data_v3.4.0.zip
2.使用的简单举例
2.1分句
import pyltp
import torch
from pyltp import SentenceSplitter
sents = SentenceSplitter.split('元芳你怎么看?我就趴窗口上看呗!') # 分句
print( '\n'.join(sents))
2.2分词:这个过程切记要注意设置utf-8编码
# -*- coding: utf-8 -*-
import os
#print(os.getcwd())
LTP_DATA_DIR = 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0' # ltp模型目录的路径
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model`
print(cws_model_path)
from pyltp import Segmentor
segmentor = Segmentor() # 初始化实例
segmentor.load(cws_model_path) # 加载模型
words = segmentor.segment('元芳你怎么看') # 分词
#print(list(words))
print( '\t'.join(words))
segmentor.release() # 释放模型
2.3 使用分词外部词典
pyltp 分词支持用户使用自定义词典。分词外部词典本身是一个文本文件(plain text),每行指定一个词,编码同样须为 UTF-8,样例如下所示
苯并芘
亚硝酸盐
# -*- coding: utf-8 -*-
import os
LTP_DATA_DIR = 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0' # ltp模型目录的路径
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model`
from pyltp import Segmentor
segmentor = Segmentor() # 初始化实例
segmentor.load_with_lexicon(cws_model_path, 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0⃐\lexicon.txt') # 加载模型,第二个参数是您的外部词典文件路径
words = segmentor.segment('亚硝酸盐是一种化学物质')
print ('\t'.join(words))
segmentor.release()
2.4 词性标注
# -*- coding: utf-8 -*-
import os
LTP_DATA_DIR = 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0' # ltp模型目录的路径
pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model`
from pyltp import Postagger
postagger = Postagger() # 初始化实例
postagger.load(pos_model_path) # 加载模型
words = ['元芳', '你', '怎么', '看'] # 分词结果
postags = postagger.postag(words) # 词性标注
res = zip(words,list(postags))
for r in res:
print(r)
print( '\t'.join(postags))
postagger.release() # 释放模型
2.5 命名体识别
LTP 采用 BIESO 标注体系。B 表示实体开始词,I表示实体中间词,E表示实体结束词,S表示单独成实体,O表示不构成命名实体。
LTP 提供的命名实体类型为:人名(Nh)、地名(Ns)、机构名(Ni)。
B、I、E、S位置标签和实体类型标签之间用一个横线 -
相连;O标签后没有类型标签
# -*- coding: utf-8 -*-
import os
LTP_DATA_DIR = 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0' # ltp模型目录的路径
ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model') # 命名实体识别模型路径,模型名称为`pos.model`
from pyltp import NamedEntityRecognizer
recognizer = NamedEntityRecognizer() # 初始化实例
recognizer.load(ner_model_path) # 加载模型
words = ['元芳', '你', '怎么', '看']
postags = ['nh', 'r', 'r', 'v']
netags = recognizer.recognize(words, postags) # 命名实体识别
res = zip(words,list(netags))
for r in res:
print(r)
print ('\t'.join(netags))
recognizer.release() # 释放模型
2.6 依存句法分析
arc.head
表示依存弧的父节点词的索引。ROOT节点的索引是0,第一个词开始的索引依次为1、2、3…
arc.relation
表示依存弧的关系。
arc.head
表示依存弧的父节点词的索引,arc.relation
表示依存弧的关系
# -*- coding: utf-8 -*-
import os
LTP_DATA_DIR = '/path/to/your/ltp_data' # ltp模型目录的路径
par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model') # 依存句法分析模型路径,模型名称为`parser.model`
from pyltp import Parser
parser = Parser() # 初始化实例
parser.load(par_model_path) # 加载模型
words = ['元芳', '你', '怎么', '看']
postags = ['nh', 'r', 'r', 'v']
arcs = parser.parse(words, postags) # 句法分析
print "\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs)
parser.release() # 释放模型