哈工大PYLTP安装使用教程

1 篇文章 0 订阅

一、环境

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)

http://ltp.ai/download.html

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

下载:

http://ltp.ai/download.html

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值