本地版pylpt执行结果的格式转换与访问——以json为例

前文说了如何在本地安装pyltp。在官方的例子中,各功能的处理结果都是纯文本(plain text),这不太便于我们解析和使用其结果。经尝试,可以将他的处理结果转为json格式。我将pyltp的功能放到一个函数中,然后可以在项目的其它程序中调用它。仍以官方example为例,我直接在它上面修改的代码。【注:我没有考虑如何整合语义角色标注结果到json中】

common_callLTP.py,在这里封闭和改造pyltp功能

'''
Created on 2015-4-29

@author: 郭喜跃
'''
import sys, os
import json
from pyltp import Segmentor, Postagger, Parser, NamedEntityRecognizer, SementicRoleLabeller
ROOTDIR = os.path.join(os.path.dirname(__file__), os.pardir)
sys.path.append(os.path.join(ROOTDIR, "lib"))
# 设置模型文件的路径
MODELDIR=os.path.join(ROOTDIR, "ltp_data")

def callLTP(sentence):# 参数就是待处理的句子
    # sentence = "国家主席胡锦涛携夫人刘永青出访俄罗斯。"

    #分词功能
    segmentor = Segmentor()
    segmentor.load(os.path.join(MODELDIR, "cws.model"))
    words = segmentor.segment(sentence)
    #print ("\t".join(words)) 

    #词性标注功能
    postagger = Postagger()
    postagger.load(os.path.join(MODELDIR, "pos.model"))
    postags = postagger.postag(words)
    #print ("\t".join(postags))

    #句法依存关系
    parser = Parser()
    parser.load(os.path.join(MODELDIR, "parser.model"))
    arcs = parser.parse(words, postags)
    #print ("\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))

    #实体识别
    recognizer = NamedEntityRecognizer()
    recognizer.load(os.path.join(MODELDIR, "ner.model"))
    netags = recognizer.recognize(words, postags)
    #print ("\t".join(netags))

    #语义角色标注,这个我没有用到,所以全部注释了
    #labeller = SementicRoleLabeller()
    #labeller.load(os.path.join(MODELDIR, "srl/"))
    #roles = labeller.label(words, postags, netags, 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]))

    # 结果整合为json。这是重点。我把原代码的print全部注释。
    resultJson=[] #创建一个空列表,用于保存json数据。
    for index in range(len(words)):#遍历结果
        resultJson.append({'id':index,'cont':words[index],'pos':postags[index],'relate':arcs[index].relation,'ne':netags[index]}) #将各功能的结果对应地添加到json中    

    return resultJson # 返回函数结果

test.py,这里调用上述函数

import common_callLTP;
import json;

finalResult=common_callLTP.callLTP("国家主席胡锦涛携夫人刘永青出访俄罗斯。")
jsonStr=json.dumps(finalResult,ensure_ascii=False,indent=2);  #这两行代码用于美观显示json数据,你感受下。如果不这样,直接print(json变量)的话,默认是在一行上显示所有结果,非常不便于查看。
print(jsonStr)

结果:

至于说得到json数据如何遍历,请参考以下代码:

for eachItem in finalResult:
    print(eachItem['cont'])

作用是输出json中每一项的‘cont‘键的值。你可以举一反三去使用了。

时间: 2024-12-29 01:09:29

本地版pylpt执行结果的格式转换与访问——以json为例的相关文章

zw版【转发·台湾nvp系列Delphi例程】HALCON HImage与Bitmap格式转换

zw版[转发·台湾nvp系列Delphi例程]HALCON HImage与Bitmap格式转换 (Delphi Prism)namespace HImage_Bitmap_Prism;interfaceuses System.Drawing, System.Collections, System.Collections.Generic, System.Windows.Forms, System.ComponentModel, System.Drawing, System.Drawing.Imag

扩增子分析解读3格式转换 去冗余 聚类

本节课程,需要完成扩增子分析解读1质控 实验设计 双端序列合并和2提取barcode 质控及样品拆分 切除扩增引物 先看一下扩增子分析的整体流程,从下向上逐层分析 分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们提取barcode,质控及样品拆分,切除扩增引物,经历了两节课6步数据处理才拿到我们扩增的高质量目的片段(貌似基因组/RNA-Seq测序结果直接就是这个阶段了,可以直接mapping) 接下来我们将这些序列去冗余.聚类为OTU.再去除嵌合体,这样就可以获得

工具类涉及数据库连接、格式转换、文件操作、发送邮件等等

数据库连接工具类 数据库连接工具类——仅仅获得连接对象 ConnDB.javaimport java.sql.Connection; import java.sql.DriverManager; /** * 数据库连接工具类——仅仅获得连接对象 * */ public class ConnDB { private static Connection conn = null; private static final String DRIVER_NAME = "com.mysql.jdbc.Dri

ffmpeg下载安装和简单应用(C#音频格式转换)

ffmpeg下载安装和简单应用 先介绍一下ffmpeg:FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影.转换.流功能,包含了libavcodec -这是一个用于多个项目中音频和视频的解码器库,以及libavformat--一个音频与视频格式转换库.名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2].有些新手写信给"FFmpeg"的项目负责人,询问FF是不是代表"Fas

第八篇:使用字符串流对象进行格式转换

前言 字符串流对象有个很实用的功能就是格式转换.比如可以将整数类型的123转换成字符串格式的123,或者反过来.那么具体又是如何实现的?且看下文. 实现思路 对于整数转换成字符串格式,可设s是一个空的字符串流对象,” 整型变量 “存放目标整数.则当执行" s << 整型变量 "后,该整数将转成字符串格式并存进流中.随后代码中使用" s.str() "即可获取到该整数的字符串格式.对于字符串转换成整数格式,亦可设s是一个空的字符串流对象,” 整型变量 “存

开发利器_ImageMagick.基于Linux命令行的图片缩放/编辑/格式转换?

简单介绍: ImageMagick是一系列的用于修改,加工图像的命令行工具,能够快速地使用命令行对图片进行操作,对大量的图片进行批处理,它能执行相当多操作,本文涉及的只是开发中常用的技能. 快速安装: yum -y install epel-release yum install -y ImageMagick ImageMagick-devel 格式转换: convert 1.png 1.jpg 缩放图像: convert 1.jpg -resize 499x 1.jpg 说明: ImageMa

史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)

ffmpeg.exe是大名鼎鼎的视频处理软件,以命令行参数形式运行.网上也有很多关于ffmpeg的资料介绍.但是在用C#做实际开发时,却遇到了几个问题及注意事项,比如如何无损处理视频?如何在转换格式的同时添加水印,以提升处理效率?,ffmpeg的版本应该选择什么版本?.今天史林峰将用实战的方式来探索C#操作ffmpeg的奥秘. 关于ffmpeg的使用及其参数命令,这里就不做过多介绍了.主要以项目实战中为主. 因工作需要,笔者手头有近300部短视频需要处理,在网上找了不少工具,虽然能用,但是用起来

靠谱的录屏软件 + mp4格式转换软件

找一个靠谱的录屏软件不容易.有的有时间限制,有的有水印logo. 用到现在我比较满意的一款软件名字叫 ice cream screen recorder ,他没有水印 也没有时间限制. 唯一的缺点是录屏的同时不能同时录摄像头,录完之后文件的格式是mvk . 还需要下载一款格式转换工具把mvk格式的文件转为mp4文件. 这里推荐一个款格式转换工具bigasoft total video converter ,建议下载v5以上的中文破解版. 完美搞定.

使用Spire.Office自制一个进行批量格式转换(Pdf转换为Word)的工具

使用Spire.Office自制一个进行批量格式转换(Pdf转换为Word)的工具 本文文末提供一个可将PDF转换为Word的小工具供下载. +BIT祝威+悄悄在此留下版了个权的信说: Spire.Office 我一直想找一个工具能够把我收集的一些PDF资料转换为Word版.最近偶然发现一个超级强大的工具Spire.Office for .NET可以做到这一点. 而且Spire.Office提供C#.VB的DLL供调用,还提供了丰富简洁的示例项目可供学习. 如下图所示,Spire.Office