pyltp依存句法分析_pyltp的简单使用

pyltp依存句法分析_pyltp的简单使用上一篇我们搭建了 pyltp 的基本环境 现在我们用简单的示例来测试它的使用 因为还是新手 肯定会有很多不全面的地方 后面我慢慢补充 我们采用 PyCharm 作为编辑器 进行示例 0 检查 pyltp 首先先检查下 python27 Lib site packages 目录下是否存在 pyltp 的相关文件夹 pyltp 的安装位置 1 创建项目 1 1 创建一个新的 python 项目创建一个新的 pyth

上一篇我们搭建了pyltp的基本环境,现在我们用简单的示例来测试它的使用,因为还是新手,肯定会有很多不全面的地方,后面我慢慢补充。

我们采用PyCharm作为编辑器,进行示例。

0.    检查pyltp

首先先检查下python27/Lib/site-packages/目录下是否存在pyltp的相关文件夹:

format,png

pyltp的安装位置

1.    创建项目

1.1 创建一个新的python项目

创建一个新的python项目,并取名为:firstLtp

注意更改PyCharm的以下设置,因为你的pyltp是安装在这里的,所以如此设置你的pyltp才能够正常使用:

format,png

新手注意~

1.2 创建src

在venv目录下,创建src文件夹。

format,png

如上

2.    基本组件的使用

2.1 分词模块使用

(1)创建SentenceSplitterTest.py

# — coding: utf-8 —

#测试分句使用-SentenceSplitter

from pyltp import Sentence

Splittersentence = SentenceSplitter.split(‘测试分句,这是分句1。这是分句2。这个是,分句3。’)

for i in range(len(sentence)):

print i+1,’:’,sentence[i]

(2)获得结果

C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/SentenceSplitterTest.py

1 : 测试分句,这是分句1。

2 : 这是分句2。

3 : 这个是,分句3。

Process finished with exit code 0

2.2 分词使用

(1)SegmentorTest.py

# — coding: utf-8 —

#测试分词使用 – Segmentor

import os

LTP_DATA_DIR = ‘F:/zou/LTP/ltp_data/ltp_data’ #v3.3.1报错Segmentor: Model not loaded!,使用新版本模型v3.4.0运行成功

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

from pyltp import Segmentorsegmentor = Segmentor() # 初始化实例

segmentor.load(cws_model_path) # 加载模型

words = segmentor.segment(‘欧几里得是西元前三世纪的希腊数学家。’) # 分词

print ‘ ‘.join(words)segmentor.release() # 释放模型,但是人名并未识别,以下方法可以识别出人名

path_name = ‘F:/zou/LTP/Names-Corpus-master/Names-Corpus/testName.txt’segmentor = Segmentor() # 初始化实例

segmentor.load_with_lexicon(cws_model_path, path_name) # 加载模型地址,参数lexicon是自定义词典的文件路径

words = segmentor.segment(‘欧几里得是西元前三世纪的希腊数学家。’)print ‘ ‘.join(words)segmentor.release()

format,png

(2)获得结果

C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/SegmentorTest.py

欧 几 里 得 是 西元前 三 世纪 的 希腊 数学家 。

[INFO] 2019-03-10 13:23:55 loaded 3 lexicon entries

欧几里得 是 西元前 三 世纪 的 希腊 数学家 。

Process finished with exit code 0

将欧几里得添加到用户字典里,于是可以识别到欧几里得为一个词(人名),改善结果并提高准确率。

2.3  词性标注使用

(1)PostaggerTest.py

# — coding: utf-8 —

#测试词性标注- Postagger

LTP_DATA_DIR =’F:/zou/LTP/ltp_data/ltp_data’ #v3.3.1同样报错模型未加载,采用v3.4.0

import os

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

from pyltpimport Postagger

postagger = Postagger()# 初始化实例

postagger.load(pos_model_path)# 加载模型

words = [‘欧几里得’,’是’,’西元前’,’三’,’世纪’,’的’,’希腊’,’数学家’,’。’]

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

for iin range(len(words)):

print words[i],'(‘,

print postags[i],’)’,

postagger.release()# 释放模型

(2)获得结果

C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/PostaggerTest.py

欧几里得 ( nh ) 是 ( v ) 西元前 ( nt ) 三 ( m ) 世纪 ( n ) 的 ( u ) 希腊 ( ns ) 数学家 ( n ) 。 ( wp )

Process finished with exit code 0

词性标注对应如下:附录

format,png

863词性标注集

2.4 命名实体识别使用

(1)NamedEntityRecognizerTest.py

# — coding: utf-8 —

#命名实体识别测试- NamedEntityRecognizer

LTP_DATA_DIR =’F:/zou/LTP/ltp_data/ltp_data’ #v3.3.1同样报错模型未加载,采用v3.4.0

import os

ner_model_path = os.path.join(LTP_DATA_DIR,’ner.model’)# 命名实体识别模型路径,模型名称为`ner.model`

from pyltpimport NamedEntityRecognizer

recognizer = NamedEntityRecognizer()# 初始化实例

recognizer.load(ner_model_path)# 加载模型

words = [‘欧几里得’,’是’,’西元前’,’三’,’世纪’,’的’,’希腊’,’数学家’,’。’]

postags = [‘nh’,’v’,’nt’,’m’,’n’,’u’,’ns’,’n’,’wp’]

nertags = recognizer.recognize(words, postags)# 命名实体识别

print ‘ ‘.join(nertags)

recognizer.release()# 释放模型

(2)获得结果

C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/NamedEntityRecognizerTest.py

S-Nh O O O O O S-Ns O O

Process finished with exit code 0

format,png

NamedEntityRecognizer

2.5 依存句法分析的使用

(1)ParserTest.py

# — coding: utf-8 —

#依存句法分析测试- Parser

LTP_DATA_DIR =’F:/zou/LTP/ltp_data/ltp_data’ #v3.3.1同样报错模型未加载,采用v3.4.0

import os

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

from pyltpimport Parser

parser = Parser()# 初始化实例

parser.load(par_model_path)# 加载模型

words = [‘欧几里得’,’是’,’西元前’,’三’,’世纪’,’的’,’希腊’,’数学家’,’。’]

postags = [‘nh’,’v’,’nt’,’m’,’n’,’u’,’ns’,’n’,’wp’]

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

rely_id = [arc.headfor arcin arcs]# 提取依存父节点id

relation = [arc.relationfor arcin arcs]# 提取依存关系

heads = [‘Root’ if id ==0 else words[id-1]for idin rely_id]# 匹配依存父节点词语

for iin range(len(words)):

print relation[i] +'(‘ + words[i] +’, ‘ + heads[i] +’)’

parser.release()# 释放模型

(2)获得结果

C:\Python27\python.exe E:/for_study/PyCharmSpace/firstLtp/venv/src/ParserTest.py

SBV(欧几里得, 是)

HED(是, Root)

ATT(西元前, 世纪)

ATT(三, 世纪)

ATT(世纪, 数学家)

RAD(的, 世纪)

ATT(希腊, 数学家)

VOB(数学家, 是)

WP(。, 是)

Process finished with exit code 0

format,png

依存句法关系

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215688.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午1:40
下一篇 2026年3月18日 下午1:40


相关推荐

  • pycharm 安装numpy库失败

    pycharm 安装numpy库失败在 pycharm 安装 numpy 显示 ModuleNotFou Nomodulename numpy 解决 打开电脑运行框中输入 python mpipinstalln 进行安装开始下载

    2026年3月17日
    2
  • 数据分析中常见问题「建议收藏」

    数据分析中常见问题「建议收藏」1. 如何检验数据是否服从正态分布?一、图示法(1)P-P图。以样本的累积频率作为横坐标,以安装正太分布计算的相应累计概率作为纵坐标,把样本值表现为直角坐标系中的散点,如果服从正太分布,则样本点围绕第一象限的对角线分布。(2)Q-Q图。以样本的分位数作为横坐标,以按照正态分布计算的相应分位点作为纵坐标,把样本表现为指教坐标系的散点。如果资料服从正态分布,则样本点应该呈一条围绕第一象限对…

    2022年6月3日
    33
  • java字符串分割方法

    java字符串分割方法java分割字符串split()方法实现功能编写一个将字符串分段的类,传入:需分段的字符串与字符个数(以此个数进行分段),输出:按指定字符个数进行分段后的若干字符串(汉字算单个字符)。功能实现要求分析字符串传入字符串分段字符串输出实现思路Java是一个面向对象设计类语言,自身提供了很多方法帮助我们实现想要的功能。那么如何实现字符串传入功能?我们需要了解一个Java类—-Scanner类,这是一个用于扫描输入文本的新的实用程序。自Java5版本添加了java.util.Sc

    2022年6月9日
    34
  • instanceof的用法

    instanceof的用法instanceof 运算符返回一个布尔值 表示对象是否为某个构造函数的实例 如下 functionPers this name wang varp1 newPerson console log p1instanceof trueinstance 运算符的左边是实例对象 右边是构造函数 它会检查右边构造函数的原型对象 prototype 是否在左边对象的原型链上 因此 下面这种写法是等价的 console log Perso

    2026年3月18日
    2
  • PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()

    PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()

    2021年11月10日
    47
  • 机器人操作系统ROS简介

    机器人操作系统ROS简介一 历史随着机器人领域的快速发展和复杂化 代码的复用性和模块化的需求原来越强烈 而已有的开源机器人系统又不能很好的适应需求 2010 年 WillowGarage 公司发布了开源机器人操作系统 ROS robotoperati 很快在机器人研究领域展开了学习和使用 ROS 的热潮 ROS 系统是起源于 2007 年斯坦福大学人工智能实验室的项目与机器人技术公司 WillowGarage 的个人机器人项目 PersonalRobo 之间

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号