哈工大LTP:Windows系统Python本地调用

本文介绍了在64位Windows 10系统中,使用Python3.6.2调用哈工大LTP3.3.1版本的详细步骤,包括下载LTP项目和模型文件,正确放置文件夹结构,安装必要的库,以及Python程序的基本调用方法。
部署运行你感兴趣的模型镜像

本文实验环境为64位win10系统,python3.6.2,LTP项目文件和模型文件使用的3.3.1版本

1.LTP下载

(1)LTP项目文件ltp-3.3.1-win-x86.zip(下载链接

(2)LTP模型文件3.3.1(下载链接

Windows系统直接下载编译好的二进制文件ltp-3.3.1-win-x86.zip,不用管编译。使用较新版本时,注意项目文件与模型文件版本的匹配性,否则可能会出错。

2.文件夹放置

(1)新建一个项目文件夹,比如:D:\myprojects\LTP;

(2)将模型文件解压后的ltp_data文件夹放入项目文件夹;

(3)将ltp-3.3.1-win-x86.zip解压后的dll、exe文件全部拷入项目文件夹。

最后文件夹列表如下:

说明:因为内部默认路径的关系,这样放置可以使ltp_data文件夹处在默认路径上。

3.Python使用ltp_test

LTP提供的模型包括:(在ltp_data文件夹里面)
cws.model         分句模型,单文件
pos.model         词性标注模型,单文件
ner.model         命名实体识别模型,单文件
parser.model    依存句法分析模型,单文件
srl_data/ 语义角色标注模型,多文件(文件夹srl)

ltp_test是一个整合LTP中各模块的命令行工具。它完成加载模型,依照指定方法执行分析的功能。

主要参数:线程数、最终步骤、输入文件路径、模型路径、词典路径等。

具体可通过CMD运行ltp_test.exe查看。

4.其他准备工作

(1)下载安装Visual C++ 2015(下载链接

(2)pip install pyltp

5.Python程序简单调用

程序代码如下:

# -*- coding: utf-8 -*-
import os
LTP_DATA_DIR = 'D:\myprojects\LTP\ltp_data'  # ltp模型目录的路径
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')  # 分词模型路径,模型名称为`cws.model`
pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model')  # 词性标注模型路径,模型名称为`pos.model`
ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model')  # 命名实体识别模型路径,模型名称为`pos.model`
par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model')  # 依存句法分析模型路径,模型名称为`parser.model`
srl_model_path = os.path.join(LTP_DATA_DIR, 'srl')  # 语义角色标注模型目录路径,模型目录为`srl`。注意该模型路径是一个目录,而不是一个文件。

from pyltp import SentenceSplitter
from pyltp import Segmentor
from pyltp import Postagger
from pyltp import NamedEntityRecognizer
from pyltp import Parser
from pyltp import SementicRoleLabeller

#分句,也就是将一片文本分割为独立的句子
def sentence_splitter(sentence='人生苦短。我用python。你呢?'):
    sents = SentenceSplitter.split(sentence)  # 分句
    print ('\n'.join(sents))

#分词
def segmentor(sentence='我是中国人'):
    segmentor = Segmentor()  # 初始化实例
    segmentor.load(cws_model_path)  # 加载模型
    words = segmentor.segment(sentence)  # 分词
    #默认可以这样输出
    print ('\t'.join(words))
    # 可以转换成List 输出
    words_list = list(words)
    segmentor.release()  # 释放模型
    return words_list
 
def posttagger(words):
    postagger = Postagger() # 初始化实例
    postagger.load(pos_model_path)  # 加载模型
    postags = postagger.postag(words)  # 词性标注
    for word,tag in zip(words,postags):
        print (word+'/'+tag)
    postagger.release()  # 释放模型
    return postags
 
#命名实体识别
def ner(words, postags):
    recognizer = NamedEntityRecognizer() # 初始化实例
    recognizer.load(ner_model_path)  # 加载模型
    netags = recognizer.recognize(words, postags)  # 命名实体识别
    for word, ntag in zip(words, netags):
        print (word + '/' + ntag)
    recognizer.release()  # 释放模型
    return netags
 
#依存语义分析
def parse(words, postags):
    parser = Parser() # 初始化实例
    parser.load(par_model_path)  # 加载模型
    arcs = parser.parse(words, postags)  # 句法分析
    print ("\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))
    parser.release()  # 释放模型
    return arcs
 
#角色标注
def role_label(words, postags, netags, arcs):
    labeller = SementicRoleLabeller() # 初始化实例
    labeller.load(srl_model_path)  # 加载模型
    roles = labeller.label(words, postags, netags, arcs)  # 语义角色标注
    for role in roles:
        print (role.index, "".join(
            ["%s:(%d,%d)" % (arg.name, arg.range.start, arg.range.end) for arg in role.arguments]))
    labeller.release()  # 释放模型

#测试分句子
print('******************测试将会顺序执行:**********************')
sentence_splitter()
print('###############以上为分句子测试###############')
#测试分词
words=segmentor()
print('###############以上为分词标注测试###############')
#测试标注
tags = posttagger(words)
print('###############以上为词性标注测试###############')
#命名实体识别
netags = ner(words,tags)
print('###############以上为命名实体识别测试###############')
#依存句法识别
arcs = parse(words,tags)
print('###############以上为依存句法测试###############')
#角色标注
roles = role_label(words,tags,netags,arcs)
print('###############以上为角色标注测试###############')

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值