当前位置:   article > 正文

【PYLTP】pyltp(SentenceSplitter、Segmentor、Postagger、NamedEntityRecognizer、Parserr)个人理解(含可执行代码)

pyltp

此博客均为对下面这个文档的复现,非原创!!!!

使用 pyltp — pyltp 0.2.0 文档 

附录 — LTP4 4.1.4 文档

1.安装pyltp

  首先激活你的虚拟环境,然后输入下面语句即可,如果出现问题的话可以更换为清华源。

pip install pyltp

然后下载你自己所需要的ltp模型,这里附上3.4.0版本的

http://model.scir.yunfutech.com/model/ltp_data_v3.4.0.zip

2.使用的简单举例

2.1分句

  1. import pyltp
  2. import torch
  3. from pyltp import SentenceSplitter
  4. sents = SentenceSplitter.split('元芳你怎么看?我就趴窗口上看呗!') # 分句
  5. print( '\n'.join(sents))

 2.2分词:这个过程切记要注意设置utf-8编码

  1. # -*- coding: utf-8 -*-
  2. import os
  3. #print(os.getcwd())
  4. LTP_DATA_DIR = 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0' # ltp模型目录的路径
  5. cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model`
  6. print(cws_model_path)
  7. from pyltp import Segmentor
  8. segmentor = Segmentor() # 初始化实例
  9. segmentor.load(cws_model_path) # 加载模型
  10. words = segmentor.segment('元芳你怎么看') # 分词
  11. #print(list(words))
  12. print( '\t'.join(words))
  13. segmentor.release() # 释放模型

2.3 使用分词外部词典 

pyltp 分词支持用户使用自定义词典。分词外部词典本身是一个文本文件(plain text),每行指定一个词,编码同样须为 UTF-8,样例如下所示

  1. 苯并芘
  2. 亚硝酸盐
  1. # -*- coding: utf-8 -*-
  2. import os
  3. LTP_DATA_DIR = 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0' # ltp模型目录的路径
  4. cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model`
  5. from pyltp import Segmentor
  6. segmentor = Segmentor() # 初始化实例
  7. segmentor.load_with_lexicon(cws_model_path, 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0⃐\lexicon.txt') # 加载模型,第二个参数是您的外部词典文件路径
  8. words = segmentor.segment('亚硝酸盐是一种化学物质')
  9. print ('\t'.join(words))
  10. segmentor.release()

2.4 词性标注

  1. # -*- coding: utf-8 -*-
  2. import os
  3. LTP_DATA_DIR = 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0' # ltp模型目录的路径
  4. pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model`
  5. from pyltp import Postagger
  6. postagger = Postagger() # 初始化实例
  7. postagger.load(pos_model_path) # 加载模型
  8. words = ['元芳', '你', '怎么', '看'] # 分词结果
  9. postags = postagger.postag(words) # 词性标注
  10. res = zip(words,list(postags))
  11. for r in res:
  12. print(r)
  13. print( '\t'.join(postags))
  14. postagger.release() # 释放模型

 2.5 命名体识别

LTP 采用 BIESO 标注体系。B 表示实体开始词,I表示实体中间词,E表示实体结束词,S表示单独成实体,O表示不构成命名实体。

LTP 提供的命名实体类型为:人名(Nh)、地名(Ns)、机构名(Ni)。

B、I、E、S位置标签和实体类型标签之间用一个横线 - 相连;O标签后没有类型标签

  1. # -*- coding: utf-8 -*-
  2. import os
  3. LTP_DATA_DIR = 'F:\Torrch_learn\pyltp\ltp_data_v3.4.0' # ltp模型目录的路径
  4. ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model') # 命名实体识别模型路径,模型名称为`pos.model`
  5. from pyltp import NamedEntityRecognizer
  6. recognizer = NamedEntityRecognizer() # 初始化实例
  7. recognizer.load(ner_model_path) # 加载模型
  8. words = ['元芳', '你', '怎么', '看']
  9. postags = ['nh', 'r', 'r', 'v']
  10. netags = recognizer.recognize(words, postags) # 命名实体识别
  11. res = zip(words,list(netags))
  12. for r in res:
  13. print(r)
  14. print ('\t'.join(netags))
  15. recognizer.release() # 释放模型

 2.6 依存句法分析

arc.head 表示依存弧的父节点词的索引。ROOT节点的索引是0,第一个词开始的索引依次为1、2、3…

arc.relation 表示依存弧的关系。

arc.head 表示依存弧的父节点词的索引,arc.relation 表示依存弧的关系

  1. # -*- coding: utf-8 -*-
  2. import os
  3. LTP_DATA_DIR = '/path/to/your/ltp_data' # ltp模型目录的路径
  4. par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model') # 依存句法分析模型路径,模型名称为`parser.model`
  5. from pyltp import Parser
  6. parser = Parser() # 初始化实例
  7. parser.load(par_model_path) # 加载模型
  8. words = ['元芳', '你', '怎么', '看']
  9. postags = ['nh', 'r', 'r', 'v']
  10. arcs = parser.parse(words, postags) # 句法分析
  11. print "\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs)
  12. parser.release() # 释放模型

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/343294
推荐阅读
相关标签
  

闽ICP备14008679号