运行环境ubuntu+python3

安装pyltp
sudo pip3 install pyltp
下载ltp_data_v3.4.0模型
http://ltp.ai/
分句
from pyltp import SentenceSplitter #分句,对句子进行切分
sentence = SentenceSplitter.split("我是逗号,我是句号。我是问好?我是感叹号!")
print("\n".join(sentence))
打印结果:
我是逗号,我是句号。
我是问好?
我是感叹号!
分词
import os

LTP_DATA_DIR = "/home/lizhenlong/pyltp/ltp_data_v3.4.0/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(cws_model_path) #加载模型
words = segmentor.segment("上海明天天气怎么样?") #进行分词
print(type(words))
print(" ".join(words))
segmentor.release() #释放模型
打印结果:
<class 'pyltp.VectorOfString'>
上海 明天 天气 怎么样 ?
添加自定义词典

自定义词典lexicon.txt

苯丙胺
亚硝酸盐
import os
LTP_DATA_DIR='/home/lizhenlong/pyltp/ltp_data_v3.4.0/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, 'lexicon.txt') # 加载模型,第二个参数是您的外部词典文件路径
words = segmentor.segment('亚硝酸盐是一种化学物质')
print('\t'.join(words))
segmentor.release()
打印结果:
[INFO] 2018-08-16 19:18:03 loaded 2 lexicon entries
亚硝酸盐 是 一 种 化学 物质
词性标注
import os
LTP_DATA_DIR = "/home/lizhenlong/pyltp/ltp_data_v3.4.0/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 = ['上海','明天','天气','怎么样'] #分词结果
postages = postagger.postag(words) #词性标注
print(" ".join(postages))
postagger.release() #释放模型
打印结果:
ns nt n r
命名实体识别
import os
LTP_DATA_DIR = "/home/lizhenlong/pyltp/ltp_data_v3.4.0/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) # 命名实体识别 print('\t'.join(netags))
recognizer.release() # 释放模型
打印结果:
S-Nh O O O
依存句法分析
mport os
LTP_DATA_DIR='/home/lizhenlong/pyltp/ltp_data_v3.4.0/ltp_data_v3.4.0' # 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(" ".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))
parser.release() # 释放模型
打印结果:
4:SBV 4:SBV 4:ADV 0:HED
语义角色标注
import os
LTP_DATA_DIR='/home/lizhenlong/pyltp/ltp_data_v3.4.0/ltp_data_v3.4.0' # ltp模型目录的路径
srl_model_path = os.path.join(LTP_DATA_DIR, 'pisrl_win.model') # 语义角色标注模型目录路径,模型目录为`srl`。注意该模型路径是一个目录,而不是一个文件。 from pyltp import SementicRoleLabeller
labeller = SementicRoleLabeller() # 初始化实例
labeller.load(srl_model_path) # 加载模型 words = ['元芳', '你', '怎么', '看']
postags = ['nh', 'r', 'r', 'v']
# arcs 使用依存句法分析的结果
roles = labeller.label(words, postags, 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() # 释放模型
打印结果:
[dynet] random seed: 1676210130
[dynet] allocating memory: 2000MB
[dynet] memory allocation done.
3 A0:(1,1)ADV:(2,2)

例如上面的例子,由于结果输出一行,所以“元芳你怎么看”有一组语义角色。 其谓词索引为3,即“看”。这个谓词有三个语义角色,范围分别是(0,0)即“元芳”,(1,1)即“你”,(2,2)即“怎么”,类型分别是A0、A0、ADV。

角色关系参考:https://ltp.readthedocs.io/zh_CN/latest/appendix.html#id6

python3调用哈工大ltp的更多相关文章

  1. 使用哈工大LTP进行句法分析

    作者注:本教程旨在对哈工大LTP在github上的LTP4J(LTP的java版本)教程的补充,请结合以下参考网站一起食用. 参考网站: [1]哈工大语言技术平台云官网--LTP使用文档 http:/ ...

  2. 哈工大LTP

    http://ltp.ai/ http://pyltp.readthedocs.io/zh_CN/latest/ http://www.cnblogs.com/Denise-hzf/p/6612886 ...

  3. Python3调用Hadoop的API

    前言: 上一篇文章 我学习使用pandas进行简单的数据分析,但是各位...... Pandas处理.分析不了TB级别数据的大数据,于是再看看Hadoop. 另附上人心不足蛇吞象 对故事一的感悟:   ...

  4. python3 调用 salt-api

    使用python3调用 salt-api 在项目中我们不能使用命令行的模式去调用salt-api,所以我们可以写一个基于salt-api的类,方便项目代码的调用.在这里特别附上两种方式实现的pytho ...

  5. 3. 哈工大LTP解析

    1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 哈工大语言技术平台Language Technology ...

  6. python3 调用 beautifulSoup 进行简单的网页处理

    python3 调用 beautifulSoup 进行简单的网页处理 from bs4 import BeautifulSoup file = open('index.html','r',encodi ...

  7. 利用python3 调用zabbix接口完成批量加聚合图形(screens)

    在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形! 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢 ...

  8. Python3调用hessian

    领导派了个任务,实现服务器日志文件调用hessian接口保存到数据库 研究了半天python调用hessian的办法 首先使用hessian for python的链接: http://hessian ...

  9. 哈工大LTP进阶使用-三元组事件抽取

    哈工大LTP基本使用-分词.词性标注.依存句法分析.命名实体识别.角色标注 上一节我们讲了LTP的基本使用,接下来我们使用其进行事件抽取. 参考代码:https://github.com/liuhua ...

随机推荐

  1. Python PyInstaller安装和使用教程

    安装 PyInstalle Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块. 安装 PyInstaller 模块与安装其他 Python 模块 ...

  2. 【转】小波与小波包、小波包分解与信号重构、小波包能量特征提取 暨 小波包分解后实现按频率大小分布重新排列(Matlab 程序详解)

    转:https://blog.csdn.net/cqfdcw/article/details/84995904 小波与小波包.小波包分解与信号重构.小波包能量特征提取   (Matlab 程序详解) ...

  3. html 小游戏合集(1.0)

    最近做了个小游戏合集,有点沙雕,毕竟是1.0,将就看看. <!DOCTYPE html> <html> <head> <meta charset=" ...

  4. es lucene搜索及聚合流程源码分析

    本文以TermQuery,GlobalOrdinalsStringTermsAggregator为例,通过代码,分析es,lucene搜索及聚合流程.1:协调节点收到请求后,将search任务发到相关 ...

  5. GC 为什么要挂起用户线程? 什么愁什么怨?

    GC 为什么要挂起用户线程? 什么愁什么怨? 前言 JVM 系列文章的第一篇.敬请期待后续. 故障描述 某年某月某日 上午,线上发生故障,经过排查,发现某核心服务 Dubbo 接口超时. 故障根源 查 ...

  6. Netty快速入门(06)Netty介绍

    前面简单的介绍了Java I/O 和NIO,写了示例程序. Java I/O是阻塞的,为了让它支持多个并发,就要针对每个链接启动线程,这种方式的结果就是在海量链接的情况下,会创建海量的线程,就算用线程 ...

  7. 从源码角度了解SpringMVC的执行流程

    目录 从源码角度了解SpringMVC的执行流程 SpringMVC介绍 源码分析思路 源码解读 几个关键接口和类 前端控制器 DispatcherServlet 结语 从源码角度了解SpringMV ...

  8. 干货!SQL性能优化,书写高质量SQL语句

    写SQL语句的时候我们往往关注的是SQL的执行结果,但是是否真的关注了SQL的执行效率,是否注意了SQL的写法规范? 以下的干货分享是在实际开发过程中总结的,希望对大家有所帮助! 1. limit分页 ...

  9. Windows10系统配置telnet服务的方法

    通常情况下,Windows10正式版系统的telnet服务都是处于关闭状态的,需要我们手动开启才可以.telnet服务可以调试端口,其重要性不容小视.今天,系统城小编就教大家如何配置telnet服务. ...

  10. 彻底理解Future模式

    先上一个场景:假如你突然想做饭,但是没有厨具,也没有食材.网上购买厨具比较方便,食材去超市买更放心. 实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材.所以,在主线程里面另起一个子线 ...