Ltp介绍及实践(20200925)

2023-05-16

Ltp中源代码和模型包括:中文分词、词性标注、未登录词识别、依存句法、语义角色标注几个模块。

目录

1、标注集合

分词标注集

词性标注集

命名实体识别标注集

依存句法关系

语义角色类型

2、快速使用

载入模型

分句

用户自定义词典

分词

词性标注

命名实体识别

语义角色标注

依存句法分析

语义依存分析(树)

语义依存分析(图)


1、标注集合

分词标注集

标记

含义

举例

B

词首

__中__国

I

词中

哈__工__大

E

词尾

科__学__

S

单字成词

词性标注集

LTP 使用的是863词性标注集,其各个词性含义如下表。

Tag

Description

Example

Tag

Description

Example

a

adjective

美丽

ni

organization name

保险公司

b

other noun-modifier

大型, 西式

nl

location noun

城郊

c

conjunction

和, 虽然

ns

geographical name

北京

d

adverb

nt

temporal noun

近日, 明代

e

exclamation

nz

other proper noun

诺贝尔奖

g

morpheme

茨, 甥

o

onomatopoeia

哗啦

h

prefix

阿, 伪

p

preposition

在, 把

i

idiom

百花齐放

q

quantity

j

abbreviation

公检法

r

pronoun

我们

k

suffix

界, 率

u

auxiliary

的, 地

m

number

一, 第一

v

verb

跑, 学习

n

general noun

苹果

wp

punctuation

,。!

nd

direction noun

右侧

ws

foreign words

CPU

nh

person name

杜甫, 汤姆

x

non-lexeme

萄, 翱

命名实体识别标注集

NE识别模块的标注结果采用O-S-B-I-E标注形式,其含义为

标记

含义

O

这个词不是NE

S

这个词单独构成一个NE

B

这个词为一个NE的开始

I

这个词为一个NE的中间

E

这个词位一个NE的结尾

LTP中的NE 模块识别三种NE,分别如下:

标记

含义

Nh

人名

Ni

机构名

Ns

地名

依存句法关系

关系类型

Tag

Description

Example

主谓关系

SBV

subject-verb

我送她一束花 (我 <– 送)

动宾关系

VOB

直接宾语,verb-object

我送她一束花 (送 –> 花)

间宾关系

IOB

间接宾语,indirect-object

我送她一束花 (送 –> 她)

前置宾语

FOB

前置宾语,fronting-object

他什么书都读 (书 <– 读)

兼语

DBL

double

他请我吃饭 (请 –> 我)

定中关系

ATT

attribute

红苹果 (红 <– 苹果)

状中结构

ADV

adverbial

非常美丽 (非常 <– 美丽)

动补结构

CMP

complement

做完了作业 (做 –> 完)

并列关系

COO

coordinate

大山和大海 (大山 –> 大海)

介宾关系

POB

preposition-object

在贸易区内 (在 –> 内)

左附加关系

LAD

left adjunct

大山和大海 (和 <– 大海)

右附加关系

RAD

right adjunct

孩子们 (孩子 –> 们)

独立结构

IS

independent structure

两个单句在结构上彼此独立

核心关系

HED

head

指整个句子的核心

语义角色类型

语义角色类型

说明

ADV

adverbial, default tag ( 附加的,默认标记 )

BNE

beneficiary ( 受益人 )

CND

condition ( 条件 )

DIR

direction ( 方向 )

DGR

degree ( 程度 )

EXT

extent ( 扩展 )

FRQ

frequency ( 频率 )

LOC

locative ( 地点 )

MNR

manner ( 方式 )

PRP

purpose or reason ( 目的或原因 )

TMP

temporal ( 时间 )

TPC

topic ( 主题 )

CRD

coordinated arguments ( 并列参数 )

PRD

predicate ( 谓语动词 )

PSR

possessor ( 持有者 )

PSE

possessee ( 被持有 )

2、快速使用

载入模型


from ltp import LTP
ltp = LTP() # 默认加载 Small 模型
# ltp = LTP(path = "base|small|tiny")
# ltp = LTP(path = "tiny.tgz|tiny-tgz-extracted") # 其中 tiny-tgz-extracted 是 tiny.tgz 解压出来的文件夹
  

分句

使用LTP分句只需要调用ltp.sent_split函数


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

# [
#   "他叫汤姆去拿外衣。",
#   "汤姆生病了。",
#   "他去了医院。"
# ]
  

用户自定义词典


# user_dict.txt

负重前行
长江大桥
  

from ltp import LTP
ltp = LTP()
# user_dict.txt 是词典文件, max_window是最大前向分词窗口
ltp.init_dict(path="user_dict.txt", max_window=4)
# 也可以在代码中添加自定义的词语
ltp.add_words(words=["负重前行", "长江大桥"], max_window=4)
  

分词

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


from ltp import LTP

ltp = LTP()

segment, _ = ltp.seg(["他叫汤姆去拿外衣。"])
# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]

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

词性标注


from ltp import LTP

ltp = LTP()

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

命名实体识别


from ltp import LTP

ltp = 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 : 汤姆
  

语义角色标注


from ltp import LTP

ltp = 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 LTP

ltp = 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')
#     ]
# ]
  

语义依存分析(树)

与依存句法类似的,这里的下标也是从1开始。


from ltp import LTP

ltp = LTP()

seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
sdp = ltp.sdp(hidden, graph=False)
# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]
# [
#     [
#         (1, 2, 'Agt'),
#         (2, 0, 'Root'),   # 叫 --|Root|--> ROOT
#         (3, 2, 'Datv'),
#         (4, 2, 'eEfft'),
#         (5, 4, 'eEfft'),
#         (6, 5, 'Pat'),
#         (7, 2, 'mPunc')
#     ]
# ]
  

语义依存分析(图)

与依存句法类似的,这里的下标也是从1开始。


from ltp import LTP

ltp = LTP()

seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
sdp = ltp.sdp(hidden, graph=True)
# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]
# [
#     [
#         (1, 2, 'Agt'),
#         (2, 0, 'Root'),   # 叫 --|Root|--> ROOT
#         (3, 2, 'Datv'),
#         (3, 4, 'Agt'),
#         (3, 5, 'Agt'),
#         (4, 2, 'eEfft'),
#         (5, 4, 'eEfft'),
#         (6, 5, 'Pat'),
#         (7, 2, 'mPunc')
#     ]
# ]  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ltp介绍及实践(20200925) 的相关文章

  • 旋翼回收火箭系列博客3——控制系统设计(PX4火箭)

    绪论 为了缩短研制周期和提高产品可靠性 xff0c 本系统采用商用开源自动驾驶仪PX4 xff0c 实现旋翼空中展开并回收的功能 PX4是全球最为成熟的开源自动驾驶仪 xff0c 可实现自动起飞 降落 执行航点等基本任务 然而此次火箭比赛要
  • 创建进程的系统调用

    Unix采用fork exec两个系统调用来完成新进程的创建 fork 创建调用该命令的进程的副本 子进程与父进程几乎处处相同 xff0c fork后两个进程执行的程序是一样的 xff0c id不一样 xff0c 相应变量就不一致 xff0
  • vscode解决git提交冲突

    我的场景 xff1a master分支在一台电脑上被修改提交到远程后 xff0c 在另一台电脑上没有拉取远程更改 xff0c 也进行了更改提交 点击vscode看到合并冲突文件为index js 点击查看冲突如下 有颜色的是冲突位置代码 x
  • LZW压缩算法(数据无损压缩)

    目录 一 LZW算法介绍 二 算法介绍 1 LZ xff37 算法的基本概念 2 LZW压缩的基本原理 3 LZW算法流程 xff1a 零 常用无损数据压缩算法 字典算法 游程编码 基于字典编码技术的LZW算法 基于哈夫曼编码原理的压缩算法
  • sftp账号创建和权限设置

    操作前需先开启telnet服务 xff0c 防止修改sshd config后 xff0c sshd服务启不了 systemctl span class token keyword start span telnet span class t
  • Python【列表】

    文章目录 1 列表的方法及注释2 其他修改列表的办法2 列表推导式3 列表的切片4 列表转换4 1 字符串转列表 xff1a 4 2 列表转字符串 list 列表 是一个可变序列 1 列表的方法及注释 列表的方法注释append x 将元素
  • FTP的port模式和pasv模式

    FTP的port模式和pasv模式 FTP具有两种模式 xff0c 分别是port模式 也叫主动模式 和pasv模式 也叫被动模式 主动模式 主动模式的FTP是指服务器主动连接客户端的数据端口 xff0c 可以理解为服务端主动给客户端传输文
  • shell for循环多个变量

    1 使用花括号 var1 var2 var3 a 61 span class token string 34 apple 34 span span class token punctuation span b 61 span class t
  • shell 基本运算符

    文章目录 1 算数运算2 关系运算符3 布尔运算符4 逻辑运算符5 字符串运算符6 文件测试运算符知识点 1 算数运算 方法一 sum1 61 96 expr 3 span class token operator 43 span 5 96
  • Dockerfile简介

    1 什么是dockerfile Dockerfile是一个包含用于组合映像的命令的文本文档 可以使用在命令行中调用任何命令 Docker通过读取Dockerfile中的指令自动生成映像 docker build命令用于从Dockerfile
  • 容器通信之跨链接通信

    前言 同一主机下搭建容器应用栈的环境 xff0c 只需要完成容器互联来实现容器间的通信即可 xff0c 这里采用docker run link选项建立容器间的互联关系 docker官方已不推荐使用docker run link来链接2个容器
  • Linux进程间通信

    1 unix域套接字 域套接字 xff1a 1 只能用于同一设备上不同进程之间的通信 xff1b 2 效率高于网络套接字 域套接字仅仅是复制数据 xff0c 并不走协议栈 xff1b 3 可靠 xff0c 全双工 xff1b 2 IP套接字
  • 什么是API

    1 什么是API API是Application Programming Interface xff08 应用程序接口 xff09 的缩写 是一些预先定义的函数 xff0c 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力
  • FreeRTOS(二)任务基础知识

    一 前后台系统与RTOS 前后台系统 61 死循环 xff08 通常为1个 xff09 43 中断服务程序 xff08 通常为若干个 xff09 应用程序是一个无限循环 xff0c 循环中调用 API 函数完成所需的操作 xff0c 这个大
  • SBUS协议(20200210)

    最近看到很多sbus协议 xff0c 就专门搜集了一些资料学习一下 1 介绍 SBUS是一个接收机串行总线输出 xff0c 通过这根总线 xff0c 可以获得遥控器上所有通道的数据 目前很多模型及无人机电子设备都支持SBUS总线的接入 使用
  • 【openmv专题】串口通信

    这篇文章主要讲述openmv串口通信过程中会出现错位 xff0c 因缓存空间不足带来的串口报错问题 xff0c 直接进入正题 xff1a 串口通信有同步和异步之分 xff0c 而openmv用的是异步通信 xff0c 需要有缓存区 xff0
  • FreeRTOS任务上下文切换与任务状态切换的区别及联系

    FreeRTOS 中的任务上下文切换和任务状态切换是两个不同的概念 1 任务状态切换是指任务从一种状态切换到另一种状态 FreeRTOS 中的任务状态包括就绪态 阻塞态和运行态 当任务从就绪态切换到运行态时 xff0c 任务开始执行 xff

随机推荐