赞
踩
一、环境
win10,python 3.6,vs2017
二、离线安装
pip install pyltp未安装成功
1、下载:
https://github.com/hit-scir/pyltp
https://github.com/hit-scir/ltp
2、将下载后的ltp文件夹,复制并覆盖pyltp文件夹里面的ltp文件夹
3、cd到pyltp文件夹
执行:
python setup.py build(需要较长时间)
python setup.py install
在cmd中 pip list 可查看是否安装成功
三、下载ltp模型(3.4.0)
ltp_data_v3.4.0.zip
解压后1G多
四、使用
- import os
- from pyltp import NamedEntityRecognizer
- from pyltp import Segmentor
- from pyltp import Postagger
-
- ROOT_PATH = "D:/model/ltp-model/ltp_data_v3.4.0/"
-
- # LTP 采用 BIESO 标注体系。
- # B 表示实体开始词,I表示实体中间词,E表示实体结束词,S表示单独成实体,O表示不构成命名实体。
-
- # LTP 提供的命名实体类型为:人名(Nh)、地名(Ns)、机构名(Ni)。
- # B、I、E、S位置标签和实体类型标签之间用一个横线 - 相连;O标签后没有类型标签。
-
- # https://pyltp.readthedocs.io/zh_CN/latest/api.html#id21
-
- def ltp_ner(sentence):
-
- print("句子长度:{0}".format(len(sentence)))
-
- seg_model = os.path.join(ROOT_PATH,"cws.model")
- pos_model = os.path.join(ROOT_PATH,"pos.model")
- ner_model = os.path.join(ROOT_PATH,"ner.model")
-
- # 分词
- segmentor = Segmentor()
- segmentor.load(seg_model)
- words = segmentor.segment(sentence)
- segmentor.release()
-
- word_list = list(words)
- print(word_list)
-
- # 词性标注
- postagger = Postagger()
- postagger.load(pos_model)
- postags = postagger.postag(words)
- postagger.release()
-
- # 实体识别
- recognizer = NamedEntityRecognizer()
- recognizer.load(ner_model)
- netags = recognizer.recognize(words,postags)
- recognizer.release()
-
- tag_list = list(netags)
- print(tag_list)
-
- # 人名
- nh_list = []
- # 地名
- ns_list = []
- # 机构名
- ni_list = []
-
- flag = False
- entity = ""
- for i,tag in enumerate(tag_list):
- # 单独实体
- if tag[0] == 'S':
- tag_type = tag.split('-')[1]
- if tag_type == 'Nh':
- nh_list.append(word_list[i])
- if tag_type == 'Ns':
- ns_list.append(word_list[i])
- if tag_type == 'Ni':
- ni_list.append(word_list[i])
-
- # 非单独实体
- if tag[0] == 'B':
- flag = True
- entity += word_list[i]
- if tag[0] == 'I':
- entity += word_list[i]
- if tag[0] == 'E':
- entity += word_list[i]
- tag_type = tag.split('-')[1]
- if tag_type == 'Nh':
- nh_list.append(entity)
- if tag_type == 'Ns':
- ns_list.append(entity)
- if tag_type == 'Ni':
- ni_list.append(entity)
-
- flag = False
- entity = ""
-
- print(nh_list)
- print(ns_list)
- print(ni_list)
-
-
-
- if __name__ == "__main__":
-
- sentence = "《流浪地球》是由中国电影股份有限公司、北京京西文化旅游股份有限公司、北京登峰国际文化传播有限公司、郭帆文化传媒(北京)有限公司出品的科幻片,由郭帆执导,吴京特别出演,屈楚萧、李光洁、吴孟达、赵今麦领衔主演。该片于2019年2月5日(农历大年初一)在中国内地上映。"
-
-
- ltp_ner(sentence)
结果:
- ['《', '流浪', '地球', '》', '是', '由', '中国', '电影', '股份', '有限公司', '、', '北京', '京西', '文化', '旅游', '股份', '有限公司', '、', '北京
- ', '登峰', '国际', '文化', '传播', '有限公司', '、', '郭帆', '文化', '传媒', '(', '北京', ')', '有限公司', '出品', '的', '科幻片', ',', '由', '郭帆', '执导', ',', '吴', '京', '特别', '出演', ',', '屈楚萧', '、', '李光洁', '、', '吴孟达', '、', '赵今麦', '领衔', '主演', '。', '该片', '于
- ', '2019年', '2月', '5日', '(', '农历', '大年初一', ')', '在', '中国', '内地', '上映', '。']
- ['O', 'O', 'O', 'O', 'O', 'O', 'B-Ni', 'I-Ni', 'I-Ni', 'E-Ni', 'O', 'B-Ni', 'I-Ni', 'I-Ni', 'I-Ni', 'I-Ni', 'E-Ni', 'O', 'B-Ni', 'I-Ni', 'I-Ni', 'I-Ni', 'I-Ni', 'E-Ni', 'O', 'B-Ni', 'I-Ni', 'I-Ni', 'I-Ni', 'I-Ni', 'I-Ni', 'E-Ni', 'O', 'O', 'O', 'O', 'O', 'S-Nh', 'O', 'O', 'S-Nh', 'O', 'O', 'O', 'O', 'S-Nh', 'O', 'S-Nh', 'O', 'S-Nh', 'O', 'S-Nh', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'S-Ns', 'O', 'O', 'O']
- ['郭帆', '吴', '屈楚萧', '李光洁', '吴孟达', '赵今麦']
- ['中国']
- ['中国电影股份有限公司', '北京京西文化旅游股份有限公司', '北京登峰国际文化传播有限公司', '郭帆文化传媒(北京)有限公司']
五、参考:
安装:
https://blog.csdn.net/weixin_40899194/article/details/79702468
词性:
https://ltp.readthedocs.io/zh_CN/latest/appendix.html#id4
使用方法:
https://pyltp.readthedocs.io/zh_CN/latest/api.html#id21
下载:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。