文章目录

  • LTP
    • 开始使用LTP
    • 快速上手
    • 分词
    • 词性标注
  • LTP高级操作
    • 命名实体识别
    • 语义角色标注
    • 依存句法分析
    • LTP总结

博文配套视频课程:自然语言处理与知识图谱


LTP

开始使用LTP

使用LTP4.0,您仅仅需要pip install ltp,就能轻松体验自然语言处理技术。您也可以 点击这里下载历史版本的LTP。强烈建议选择LTP4.x的版本对Python非常友好。

  1. 基于多任务学习框架进行统一学习,使得全部六项任务可以共享语义信息,达到了知识迁移的效果。既有效提升了系统的运行效率,又极大缩小了模型的占用空间
  2. 基于预训练模型进行统一的表示 ,有效提升了各项任务的准确率
  3. 基于教师退火模型蒸馏出单一的多任务模型,进一步提高了系统的准确率
  4. 基于PyTorch框架开发,提供了原生的Python调用接口,通过pip包管理系统一键安装,极大提高了系统的易用性

快速上手

使用LTP分句只需要调用ltp.sent_split函数。一般来说一篇文章首先要拆分成独立句子,然后在通过句子进行分词,最后再来实现词性、词义、依存语法分析等操作。

from ltp import LTP
ltp = LTP()
sents = ltp.sent_split(["他叫汤姆去拿外衣。", "汤姆生病了。他去了医院。"])
sents
# [
#   "他叫汤姆去拿外衣。",
#   "汤姆生病了。",
#   "他去了医院。"
# ]

分词

使用LTP分词非常简单,下面是一个简短的例子:

from ltp import LTPltp = LTP()segment, _ = ltp.seg(["他叫汤姆去拿外衣。"])
# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]# 对于已经分词的数据
segment, hidden = ltp.seg(["他/叫/汤姆/去/拿/外衣/。".split('/')], is_preseged=True)

词性标注

from ltp import LTPltp = LTP()seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
pos = ltp.pos(hidden)
# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]
# [['r', 'v', 'nh', 'v', 'v', 'n', 'wp']]

LTP高级操作

命名实体识别

词性标注在本质上是分类问题,将语料库中的单词按词性分类。一个词的词性由其在所属语言的含义、形态和语法功能决定。以汉语为例,汉语的词类系统有18个子类,包括7类体词,4类谓词、5类虚词、代词和感叹词。词类不是闭合集,而是有兼词现象,例如“制服”在作为“服装”和作为“动作”时会被归入不同的词类,因此词性标注与上下文有关。对词类的理论研究可以得到基于人工规则的词性标注方法,这类方法对句子的形态进行分析并按预先给定的规则赋予词类。

from ltp import LTPltp = LTP()seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
ner = ltp.ner(hidden)
# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]
# [[('Nh', 2, 2)]]tag, start, end = ner[0][0]
print(tag,":", "".join(seg[0][start:end + 1]))
# Nh : 汤姆

语义角色标注

自然语言分析技术大致分为三个层面:词法分析、句法分析和语义分析。语义角色标注是实现浅层语义分析的一种方式。在一个句子中,谓词是对主语的陈述或说明,指出“做什么”、“是什么”或“怎么样,代表了一个事件的核心,跟谓词搭配的名词称为论元。语义角色是指论元在动词所指事件中担任的角色。主要有:施事者(Agent)、受事者(Patient)、客体(Theme)、经验者(Experiencer)、受益者(Beneficiary)、工具(Instrument)、处所(Location)、目标(Goal)和来源(Source)等

from ltp import LTPltp = LTP()seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
srl = ltp.srl(hidden)
# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]
# [
#     [
#         [],                                                # 他
#         [('ARG0', 0, 0), ('ARG1', 2, 2), ('ARG2', 3, 5)],  # 叫 -> [ARG0: 他, ARG1: 汤姆, ARG2: 去拿外衣]
#         [],                                                # 汤姆
#         [],                                                # 去
#         [('ARG0', 2, 2), ('ARG1', 5, 5)],                  # 拿 -> [ARG0: 汤姆, ARG1: 外衣]
#         [],                                                # 外衣
#         []                                                 # 。
#     ]
# ]
#   srl = ltp.srl(hidden, keep_empty=False)
# [
#     [
#         (1, [('ARG0', 0, 0), ('ARG1', 2, 2), ('ARG2', 3, 5)]), # 叫 -> [ARG0: 他, ARG1: 汤姆, ARG2: 去拿外衣]
#         (4, [('ARG0', 2, 2), ('ARG1', 5, 5)])                  # 拿 -> [ARG0: 汤姆, ARG1: 外衣]
#     ]
# ]

依存句法分析

使用语义依存刻画句子语义,好处在于不需要去明白词汇本身的意思,而是通过词汇所承受的语义框架来描述该词汇,而其数目相对词汇来说数量是小很多的。这样一来,大部分的句子都可以用这个框架来表示,同时,我们又能总结出这句话大概讲了些什么。需要注意的是,在依存句法当中,虚节点ROOT占据了0位置,因此节点的下标从1开始。

from ltp import LTPltp = LTP()seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
dep = ltp.dep(hidden)
# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]
# [
#     [
#         (1, 2, 'SBV'),
#         (2, 0, 'HED'),    # 叫 --|HED|--> ROOT
#         (3, 2, 'DBL'),
#         (4, 2, 'VOB'),
#         (5, 4, 'COO'),
#         (6, 5, 'VOB'),
#         (7, 2, 'WP')
#     ]
# ]

LTP总结

我们有了以上的一些基础工具之后,可以对无监督的文本进行一个三元组关系的抽取。三元组是组成知识图谱的最重要的单元。下一篇文章我们就采用LTP实现图谱三元组抽取和保存操作

07_LTP语言技术平台相关推荐

  1. Python下的自然语言处理利器-LTP语言技术平台 pyltp 学习手札

    1 什么是pyltp 语言技术平台(LTP) 是由 哈工大社会计算与信息检索研究中心 11 年的持续研发而形成的一个自然语言处理工具库,其提供包括中文分词.词性标注.命名实体识别.依存句法分析.语义角 ...

  2. python语音标注平台_Python下的自然语言处理利器-LTP语言技术平台 pyltp 学习手札...

    1 什么是pyltp 语言技术平台(LTP) 是由 哈工大社会计算与信息检索研究中心 11 年的持续研发而形成的一个自然语言处理工具库,其提供包括中文分词.词性标注.命名实体识别.依存句法分析.语义角 ...

  3. 哈工大信息检索研究室 语言技术平台相关技术简介

    模块名称:中文文本自动断句模块 哈工大信息检索研究室 语言技术平台相关技术简介 平台总指导:刘挺教授 平台架构及程序实现负责人:郎君 下列模块按平台处理顺序列出 模块名称:中文文本自动断句模块 负责人 ...

  4. 【ChatBot开发笔记】使用LTP(语言技术平台)进行自然语言处理

    目录 准备工作 测试示例 测试代码 1.ltp.py run.py 测试结果及分析 中文分词 词性标注 依存语句分析 命名实体识别 语义角色标注 语义依存 (依存树) 分析 语义依存 (依存图) 分析 ...

  5. 编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码

    JDK:java version "1.8.0_31" Java(TM) SE Runtime Environment (build 1.8.0_31-b13) Java HotS ...

  6. java疯狂的兔子_语言云(语言技术平台云 LTP-Cloud)

    FAQ 1. 分词时候需要进行扩展字典,自定义字典的格式是怎样的,如何把自定义的字典加载进去? 需要在本地编译ltp(推荐使用linux),编译后调用静态链接库,具体方法见这里:从源代码编译安装LTP ...

  7. 对话微软黄学东:语音语言技术是镶在 AI 皇冠上的明珠

    来源:AI科技评论 AI 科技评论按:上一次你和你的电脑进行有意义的对话,并感受到它能真正地理解你,是什么时候?如果微软技术研究员.微软的语言语音小组组长黄学东博士做到了的话,那么你也将可以做到.并且 ...

  8. 百度工程师深度好文, 横评3大企业级区块链技术平台

    百度工程师深度好文, 横评3大企业级区块链技术平台! 区块链从独立的技术范式,慢慢扩展到企业区块链的融合范式,是下一代区块链的核心特征.在区块链技术与AI.大数据.云计算技术加速融合的今天,区块链如何 ...

  9. 某大型国企技术平台建设

    一整月都在编写某国企的技术平台建设方案. 该企业是一个某500强大型国有企业,他们希望能建设统一的一个软件平台(技术平台+业务平台):各专业部门基于该平台开发相应的专业级插件,并发布到统一的插件平台中 ...

  10. 要闻君说:谷歌云重磅发布两大技术平台;以后可以打飞滴了?SAP重组动荡;微软宣布 Azure Functions 支持 Java...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

最新文章

  1. Office 365离线安装
  2. linux shell 字符串操作(长度,查找,替换)详解 BASH
  3. 线上使用zabbix报警脚本(含图片)
  4. 虚拟键码对照表与ASCII对照表的区别
  5. ActiveMQ消息传递的两种方式
  6. winform之窗体固定
  7. USB 设备类协议入门【转】
  8. html加上百度统计,vue单页面应用加入百度统计
  9. swift网络数据请求方法
  10. 【Java多线程】写入同一文件,自定义线程池与线程回收利用2
  11. 空间数据引擎oracle_Oracle-Spatial空间数据库基础
  12. 声音采集播放以及I2S接口
  13. 关于长江的题目_高中关于长江的作文题目加优秀范文
  14. SpringCloud微服务使用Feign如何暴露接口并整合SpringBoot测试
  15. Linux服务器间传文件SCP命令使用方法
  16. linux--服务器降频
  17. 用PHP写了个 标签 按点击率的 字体大小和颜色的 显示效果
  18. 高级篇之使用ENC编码器实现USBCam摄像头竖屏直播的方法
  19. 无业务不技术:那些誓用区块链重塑的行业,发展怎么样了?
  20. linux下usb充电问题,如何解决在Ubuntu上iPad不能充电的问题

热门文章

  1. 《局域网技术与组网工程实验》学习笔记
  2. 【转ITAA上justdoit的一篇帖子】 验证OSPF中对外部路由路由的选择规则【留档】
  3. 从数据库导出数据到EXCEL换行的问题解决方法(即数据库字段太长自动换行)
  4. 安装AD软件后,无法打开PCB,打开后一直提示advpcb.dll丢失,然后一直是停不下来的滚动条,解决方法。
  5. TimeLine学习笔记
  6. windows下CoffeeScript 的实现
  7. 学习用PS美化软件界面
  8. HijackThis使用详解
  9. 测试象棋水平用哪个软件好,最新象棋软件作弊名单公布,软件测试员都被封,哪些网络象棋主播...
  10. pspice仿真过程中出现Less than 2 connections at node