pyltp依存句法分析_依存句法分析 python & pyltp实现

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-30 19:36   11   0

依存句法分析 python & pyltp实现

本文用python,借助pyltp实现依存句法分析。

有关pyltp的详细介绍可以查阅其官方网站。

说明:使用前需要先下载ltp的模型文件,下载地址:百度云

整体思路是先分词,在词性标注,最后依存句法分析

# -*- coding: utf-8 -*-

import os

## 加载模型文件

LTP_DATA_DIR = 'D:\SpyderWorkspace\parser\ltp_data' # ltp模型目录的路径

pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model`

cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model`

par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model') # 依存句法分析模型路径,模型名称为`parser.model`

## 分词

from pyltp import Segmentor

segmentor = Segmentor() # 初始化实例

segmentor.load_with_lexicon(cws_model_path,'dict1.txt') # 加载模型

words = list(segmentor.segment('栈是只允许一端删除和插入的线性表')) # 分词

segmentor.release() # 释放模型

print(words)

## 词性标注

from pyltp import Postagger

postagger = Postagger() # 初始化实例

postagger.load(pos_model_path) # 加载模型

postags = postagger.postag(words) # 词性标注

tags= list(''.join(postags))

#print (tags)

postagger.release() # 释放模型

## 依存句法分析

from pyltp import Parser

parser = Parser() # 初始化实例

parser.load(par_model_path) # 加载模型

arcs = parser.parse(words, postags) #句法分析

print ('arcs 的结果:','\t'.join("%d:%s" % (arc.head, arc.relation) for arc in arcs))

结果:

['栈', '是', '只', '允许', '一', '端', '删除', '和', '插入', '的', '线性表']

arcs 的结果: 2:SBV 0:HED 4:ADV 2:VOB 6:ATT 7:ADV 11:ATT 9:LAD 7:COO 7:RAD 4:VOB

其中arc.head代表父节点的索引,arc.relation代表依存弧的关系

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP