当前位置: 首页 > article >正文

SiameseUIE中文-base实战教程:Python requests调用7860端口抽取接口示例

SiameseUIE中文-base实战教程Python requests调用7860端口抽取接口示例1. 引言告别复杂配置三步搞定信息抽取你是不是也遇到过这样的场景面对一堆非结构化的文本数据比如新闻、报告、用户评论想从中自动提取人名、地点、事件或者情感倾向但一想到要自己搭建模型、处理数据、写复杂的代码头就大了。传统的做法要么是写一堆规则维护起来累死人要么是训练专门的模型一个任务就得搞一套费时费力。现在有个更聪明的办法摆在你面前。今天要介绍的SiameseUIE中文-base模型就是一个“万能钥匙”。它基于阿里达摩院的先进技术你只需要告诉它你想抽什么通过一个简单的Schema它就能从文本里给你找出来。无论是人名地名、实体关系还是事件要素、产品评价它都能处理。更棒的是你不用关心模型怎么训练、怎么部署。我们已经把它封装成了一个开箱即用的Web服务运行在7860端口。你只需要用Python里最简单的requests库发个HTTP请求就能拿到结构化的抽取结果。这篇教程我就手把手带你用不到10行核心代码玩转这个强大的信息抽取接口。你会发现原来从文本中挖宝可以这么简单。2. 核心概念五分钟看懂SiameseUIE在动手写代码之前花几分钟了解下背后的原理用起来会更得心应手。别担心我们不用公式就用大白话讲。2.1 它到底能干什么你可以把SiameseUIE想象成一个高度智能的文本“阅读理解机”。你给它一篇文章和一份“抽题清单”Schema它就能精准地找到答案。命名实体识别从“马云是阿里巴巴的创始人”中抽出“马云”人物和“阿里巴巴”组织机构。关系抽取从“谷爱凌在北京冬奥会获得了金牌”中不仅抽出“谷爱凌”和“北京冬奥会”还能告诉你他们的关系是“参赛地点”。事件抽取从一则比赛新闻中抽取出“胜负”事件以及相关的“时间”、“胜者”、“败者”。属性情感抽取从“手机拍照效果很棒但电池续航一般”这条评论中抽取出“拍照效果”是正面评价“电池续航”是负面评价。它的强大之处在于零样本或少样本能力。你不需要准备成千上万的标注数据去训练它只需要在请求时通过Schema定义好你想抽的东西它就能基于预训练的知识给你一个不错的结果。2.2 关键技术提示学习与指针网络模型的核心思路是“提示Prompt 文本Text”。提示就是你提供的Schema。比如{人物: null}这对模型来说就是一个提示“请从下文找出所有属于‘人物’的片段”。文本就是你要分析的原始文章或句子。指针网络这是模型的“手指”。模型理解了提示和文本后会用这个“手指”在文本上准确地“指”出开始和结束的位置从而框选出你要的片段。这比传统的分类方法更精准尤其适合处理嵌套、不规则的实体。2.3 服务架构我们为你准备好了什么为了让你零门槛使用我们已经完成了所有繁重的工作模型部署将391MB的nlp_structbert_siamese-uie_chinese-base模型预加载到服务器。服务封装用Gadio框架搭建了一个Web应用运行在http://localhost:7860。接口暴露提供了一个标准的HTTP API接口等待你的调用。你要做的就是学会如何与这个接口“对话”。接下来我们就进入实战环节。3. 环境准备与接口探秘3.1 确保服务已经运行首先你需要确认SiameseUIE服务已经在本地7860端口跑起来了。如果还没启动进入项目目录执行cd /root/nlp_structbert_siamese-uie_chinese-base python app.py看到类似Running on local URL: http://0.0.0.0:7860的输出就说明服务启动成功了。3.2 认识接口它接受什么返回什么这个服务提供了一个HTTP POST接口。调用它你需要发送一个JSON格式的“包裹”这个包裹里必须有两样东西text字符串类型。你想分析的原始文本。schema字典类型。你定义的抽取任务结构必须是合法的JSON。接口地址http://localhost:7860/api/predict返回结果也是一个JSON里面包含了模型抽取出的所有信息。3.3 理解Schema如何告诉模型你的意图Schema是整个调用的灵魂它决定了模型“找什么”。格式非常简单就是Python里的字典。实体识别你想找几类独立的实体。{人物: null, 地理位置: null, 组织机构: null}这表示“请找出文本中所有的人物、地理位置和组织机构。”关系抽取你想找某个实体关联的属性。{人物: {比赛项目: null, 参赛地点: null}}这表示“对于文本中的每一个‘人物’请找出他/她的‘比赛项目’和‘参赛地点’。” 这是一种层级关系。事件/情感抽取格式类似关系抽取只是含义不同。{胜负: {时间: null, 胜者: null, 败者: null}} {属性词: {情感词: null}}关键点null在这里只是一个占位符表示这个类别需要被抽取。你不需要给它赋值。4. 实战演练Python requests调用四步曲理论说再多不如动手试一次。我们准备一个Python脚本用四个例子覆盖所有功能。4.1 第一步准备脚本框架创建一个名为uie_demo.py的文件先导入库并定义基础信息。import requests import json # 接口地址 API_URL http://localhost:7860/api/predict # 设置请求头告诉服务器我们发送的是JSON headers { Content-Type: application/json, accept: application/json }4.2 第二步命名实体识别实战假设我们有一段体育新闻想找出里面的人名、地名和机构名。def demo_ner(): 示例1抽取实体人物、地点、机构 print( 示例1命名实体识别 ) text 在2023年杭州亚运会期间中国游泳运动员张雨霏在女子200米蝶泳项目中夺得金牌她的教练是来自浙江省队的崔登荣。 schema { 人物: None, 地理位置: None, 组织机构: None } data { text: text, schema: schema } response requests.post(API_URL, headersheaders, datajson.dumps(data)) result response.json() print(f输入文本{text}) print(f定义Schema{json.dumps(schema, ensure_asciiFalse)}) print(f抽取结果{json.dumps(result, ensure_asciiFalse, indent2)}) print(- * 50)运行看看你会得到类似这样的结果模型准确地找出了“张雨霏”、“崔登荣”人物“杭州”、“浙江省”地理位置。{ 人物: [[张雨霏, 13, 16], [崔登荣, 48, 51]], 地理位置: [[杭州, 3, 5], [浙江省, 45, 48]], 组织机构: [] }每个结果如[张雨霏, 13, 16]表示抽取出的文本是“张雨霏”它在原文中从第13个字符开始到第16个字符结束不包括16。这个位置信息对于后续处理非常有用。4.3 第三步关系抽取实战现在我们不仅想知道有哪些人还想知道这些人参加了什么比赛、在哪里比的。def demo_relation(): 示例2抽取人物相关的关系比赛项目、参赛地点 print( 示例2关系抽取 ) text 苏炳添在东京奥运会的男子100米半决赛中跑出了9秒83的亚洲纪录而巩立姣则在女子铅球项目上为中国队夺得了金牌。 schema { 人物: { 比赛项目: None, 参赛地点: None } } data { text: text, schema: schema } response requests.post(API_URL, headersheaders, datajson.dumps(data)) result response.json() print(f输入文本{text}) print(f定义Schema{json.dumps(schema, ensure_asciiFalse)}) print(f抽取结果{json.dumps(result, ensure_asciiFalse, indent2)}) print(- * 50)运行看看结果是一个嵌套结构。它先找到“人物”实体苏炳添、巩立姣然后为每个实体去寻找其对应的“比赛项目”和“参赛地点”。{ 人物: { 苏炳添: { 比赛项目: [[男子100米半决赛, 10, 17]], 参赛地点: [[东京奥运会, 3, 7]] }, 巩立姣: { 比赛项目: [[女子铅球项目, 52, 57]], 参赛地点: [] // 文本中未明确提及巩立姣的参赛地点 } } }这个结构非常清晰直接就把人物和他们的属性关联起来了。4.4 第四步属性情感抽取实战最后我们分析一段电商评论看看用户对产品的哪些方面满意或不满意。def demo_absa(): 示例3抽取属性词及对应的情感词 print( 示例3属性情感抽取 ) text 这款蓝牙耳机颜值很高佩戴舒适降噪效果出色不过电池续航感觉比宣传的短一点。 schema { 属性词: { 情感词: None } } data { text: text, schema: schema } response requests.post(API_URL, headersheaders, datajson.dumps(data)) result response.json() print(f输入文本{text}) print(f定义Schema{json.dumps(schema, ensure_asciiFalse)}) print(f抽取结果{json.dumps(result, ensure_asciiFalse, indent2)}) print(- * 50)运行看看模型成功识别出了“颜值”、“佩戴”、“降噪效果”、“电池续航”这些产品属性以及对应的情感评价“很高”、“舒适”、“出色”、“短一点”。{ 属性词: { 颜值: { 情感词: [[很高, 6, 8]] }, 佩戴: { 情感词: [[舒适, 11, 13]] }, 降噪效果: { 情感词: [[出色, 18, 20]] }, 电池续航: { 情感词: [[短一点, 37, 40]] } } }这对于自动化分析用户反馈、生成产品报告非常有价值。4.5 整合与运行在文件末尾添加主函数来运行所有示例if __name__ __main__: demo_ner() demo_relation() demo_absa() print(所有示例执行完毕)在终端运行python uie_demo.py你就能在控制台看到三个完整的示例输出直观地感受SiameseUIE的强大能力。5. 进阶技巧与常见问题掌握了基本调用后我们来看看如何用得更好以及如何避开一些坑。5.1 让你的抽取更精准Schema设计小技巧实体命名要具体相比于{实体: null}使用{科学家: null, 企业: null}这样具体的类别效果通常更好因为它激活了模型更相关的知识。关系定义要合理确保你定义的属性如“参赛地点”在文本中很可能以短语形式存在而不是需要复杂推理才能得出的隐含信息。文本预处理对于非常长的文本超过300字建议先按段落或句子分割然后分批处理既能保证效果也避免超长输入带来的问题。5.2 处理返回结果模型返回的结果是包含位置索引的你可以轻松地还原出原始文本。# 假设 result 是NER的返回结果 for entity_type, spans in result.items(): for span in spans: text_fragment, start_idx, end_idx span print(f类型{entity_type}, 文本{text_fragment}, 位置[{start_idx}, {end_idx}]) # 你可以用 text[start_idx:end_idx] 来验证它应该等于 text_fragment5.3 你可能遇到的问题连接错误ConnectionError检查服务是否启动python app.py命令是否成功执行解决确保在调用前终端里Gradio服务正在运行。返回空结果[]或{}检查Schema格式是否正确是否为合法的JSON字典文本中是否真的存在你定义的类别解决先用简单的Schema和明显的文本测试例如{人物: null}去抽取一段包含人名的新闻。性能考虑该模型使用了双流编码器推理速度比传统UIE快。但对于大批量任务建议在脚本中加入简单的延时如time.sleep(0.1)避免对服务端造成过大压力。本地部署主要依赖CPU处理单条文本通常在秒级。对于生产环境可以考虑GPU部署以提升并发能力。6. 总结通过这篇教程我们完成了从理论到实战的跨越。你现在应该已经掌握核心概念明白了SiameseUIE是一个基于提示和指针网络的通用信息抽取工具。关键步骤学会了如何设计Schema来表达抽取意图无论是实体、关系还是事件情感。实战技能能够用Pythonrequests库通过四五行代码调用7860端口的服务轻松完成文本信息抽取。结果处理知道如何解析和使用返回的带有位置信息的结构化结果。这个接口的价值在于它将一个复杂的NLP模型封装成了一个简单的HTTP调用。你不需要是机器学习专家只需要懂得基本的Python和JSON就能将强大的信息抽取能力集成到你的数据分析流水线、内容审核系统或智能客服机器人中。下次当你面对一堆杂乱无章的文本想要快速提取关键信息时别忘了你手上有http://localhost:7860/api/predict这把利器。定义好你的问题Schema丢给它文本剩下的就交给这个聪明的“阅读理解机”吧。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

SiameseUIE中文-base实战教程:Python requests调用7860端口抽取接口示例

SiameseUIE中文-base实战教程:Python requests调用7860端口抽取接口示例 1. 引言:告别复杂配置,三步搞定信息抽取 你是不是也遇到过这样的场景?面对一堆非结构化的文本数据,比如新闻、报告、用户评论,想从…...

Windows Android子系统全栈指南:从技术原理到实战应用

Windows Android子系统全栈指南:从技术原理到实战应用 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA 价值定位:打破系统边界的跨平台…...

DeOldify移动端适配探索:基于Android的轻量级模型部署方案

DeOldify移动端适配探索:基于Android的轻量级模型部署方案 每次翻看家里的老相册,看到那些泛黄、褪色甚至模糊不清的照片,心里总会涌起一股想要“修复”它们的冲动。过去,这需要专业的软件和复杂的操作,但现在&#x…...

精通传感器融合:基于 KITTI 数据的 LiDAR 障碍物检测 — 第一部分

原文:towardsdatascience.com/sensor-fusion-kitti-lidar-based-obstacle-detection-part-1-9c5f4bc8d497?sourcecollection_archive---------4-----------------------#2024-12-25 如何使用 LiDAR 数据进行无监督学习的障碍物检测 https://medium.com/eroltak?s…...

实时手机检测-通用效果展示:手机在镜面反射/玻璃橱窗中的识别能力

实时手机检测-通用效果展示:手机在镜面反射/玻璃橱窗中的识别能力 1. 模型介绍与核心优势 实时手机检测-通用模型是一个专门用于检测图像中手机位置的高性能AI模型。这个模型基于先进的DAMO-YOLO框架开发,在检测精度和推理速度方面都表现出色。 与传统…...

用STM32F103C8T6+ESP8266做个公交车报站器,附完整电路图和代码(避坑OLED与GPS)

用STM32F103C8T6ESP8266打造高可靠性公交车报站器:从硬件选型到代码调试全指南 在智能交通系统快速发展的今天,公交车报站器作为乘客信息服务的重要载体,其稳定性和准确性直接影响出行体验。本文将带你从零开始,基于STM32F103C8T6…...

SpringBoot单元测试实战:从Service到Controller的Mock技巧全解析

SpringBoot单元测试实战:从Service到Controller的Mock技巧全解析 单元测试是保障代码质量的重要防线,但在实际开发中,许多团队往往因为时间压力或技术复杂度而忽视这一环节。SpringBoot作为Java生态中最流行的框架之一,其单元测试…...

Golang如何把日志写到文件_Golang日志文件教程【秒懂】

Go log包默认只输出到stderr,需用os.OpenFile创建*os.File(实现io.Writer)传给log.SetOutput;并发写安全但格式易乱;需手动flush或用bufio.NewWriter;长期运行需日志轮转等高级功能。Go 标准库的 log 包默认…...

如何排除AWR中的Idle Events_过滤不需要关注的网络等待与定时器

Idle Events是Oracle中wait_class为Idle的等待事件,如SQL*Net message from client等,它们反映客户端空闲状态而非数据库性能问题,若不剔除会干扰AWR分析、误导DBA定位假热点。什么是 Idle Events,为什么它们会干扰 AWR 分析awr 报…...

在Rockchip RK3588开发板上,用MPP库把H264视频转成YUV文件(附完整代码和避坑点)

在RK3588开发板上用MPP实现H264到YUV的高效解码实战 当我在RK3588开发板上第一次成功将H264视频流实时解码为YUV420SP格式时,那种成就感至今难忘。作为瑞芯微旗舰级芯片,RK3588的媒体处理能力在嵌入式领域堪称强悍,而MPP(Media Pr…...

自定义常用代码编辑快捷键大全

自定义适用、常用代码编辑快捷键通用编程快捷键代码提示快捷键文件操作快捷键编译器快捷键终端操作快捷键通用编程快捷键 格式化代码:Ctrl K注释/取消注释:Ctrl / , 添加注释:Ctrl shift /删除行代码:Ctrl D &…...

PyTorch 2.9 镜像部署全攻略:Jupyter和SSH两种方式任你选

PyTorch 2.9 镜像部署全攻略:Jupyter和SSH两种方式任你选 1. PyTorch 2.9 镜像概述 PyTorch 2.9 是一个开源的 Python 机器学习库,基于 Torch 库开发,底层由 C 实现,广泛应用于人工智能领域,特别是计算机视觉和自然语…...

测试用例模版与标准规范

一、测试用例通用模版(支持自动化生成与质量判定)字段名必填说明与格式要求自动化生成来源质量判定规则用例ID是{层级}_{类型}_{模块}_{序号}例:SYS_IT_ORDER_001自动生成唯一性、格式正则校验用例标题是[类型][正向/异常] 操作预期效果例&am…...

OpenTiny NEXT 从入门到精通·第 1 篇

OpenTiny NEXT 从入门到精通第 1 篇:启程篇——初识 OpenTiny NEXT,开启企业级智能前端之旅前端技术日新月异,Vue 2 要停止维护了,团队还在 Vue 2/3 多版本并存中挣扎;业务方希望接入 AI,前端却不知道怎么开…...

S2-Pro模型安全与合规应用指南:内容过滤与偏见缓解策略

S2-Pro模型安全与合规应用指南:内容过滤与偏见缓解策略 1. 企业级AI部署的安全挑战 当企业考虑部署S2-Pro这类大语言模型时,安全与合规问题往往成为首要考量。不同于个人使用场景,企业应用需要面对更严格的监管要求、更复杂的用户群体以及更…...

OpenTiny NEXT 从入门到精通·第 2 篇

OpenTiny NEXT 从入门到精通第 2 篇:组件篇——TinyVue 核心组件库深度实战组件库是前端应用的“乐高积木”。TinyVue 作为 OpenTiny 生态的核心 UI 组件库,拥有 130 企业级组件,覆盖中后台开发的绝大部分场景。但会用组件只是第一步&#xf…...

OpenClaw敏感数据处理:Qwen3-32B私有镜像的加密通信方案

OpenClaw敏感数据处理:Qwen3-32B私有镜像的加密通信方案 1. 为什么需要加密通信方案 上周帮朋友部署OpenClaw自动化财务对账流程时,遇到一个棘手问题:当系统自动处理银行流水和发票PDF时,这些敏感数据在传输过程中竟然以明文形式…...

计算机中级-数据库系统工程师-操作系统-进程管理(2)

一、死锁1. 死锁的定义现象描述: 指两个以上的进程互相都要求对方已经占有的资源,导致无法继续运行下去的现象。核心特征: 多个进程互相等待对方释放已获得的资源,导致所有进程都在无限等待。1)例题:死锁示例案例说明: 5个进程(A-E)每个需要4…...

QTQK-FJYJNDL-V137 远动及光伏群调群控装置技术介绍

一、产品概述QTQK-FJYJNDL-V137 群调群控装置由福建亿捷能电力科技公司自主研发,主要应用于光伏电站、风电场、储能电站、配电站等各类分布式电源场景,是一款专用的边缘计算与调控设备。该装置可实现现场测控装置、保护装置、逆变器、储能变流器等设备的…...

IBGP全互联实验+路由反射实验

知识点回顾IBGP全互联路由反射器实验先做IBGP全互联实验查看OSPF邻居关系R1上查看BGP邻居在R2上查看BGP邻居在R3上查看BGP邻居在R5上查看BGP邻居在R4上查看是否有去往10.10.5.5的路由在R5上查看是否有去往10.10.4.4的路由现在网络就能通了再做路由器反射实验在R1上跟R3上删除BG…...

基于Ubuntu20.04的SenseVoice-Small高性能部署方案

基于Ubuntu20.04的SenseVoice-Small高性能部署方案 语音识别技术正逐渐成为人机交互的重要桥梁,而如何在生产环境中高效部署模型成为很多开发者的实际需求。本文将手把手带你完成SenseVoice-Small在Ubuntu20.04系统上的高性能部署。 1. 环境准备与系统优化 在开始部…...

SpringBoot的生命周期原理分析之一SpringBoot准备容器与环境

目录 1.SpringBootApplication准备 1.1SpringApplication创建 1.2.1保存主配置源 1.2.2推断Web环境 1.2.3设置初始化器 1.2.4设置监听器 1.2.5确定主启动类 1.2.6扩展了解:SpringBoot的发展 1.2SpringBootApplication启动 1.2.1启动计时与全局异常处理机制…...

Wan2.2-I2V-A14B实操手册:WebUI中ControlNet风格控制与运动强度调节

Wan2.2-I2V-A14B实操手册:WebUI中ControlNet风格控制与运动强度调节 1. 环境准备与快速部署 在开始探索Wan2.2-I2V-A14B的强大功能前,我们需要确保环境已正确部署。本镜像已针对RTX 4090D 24GB显卡进行深度优化,开箱即用。 1.1 一键启动We…...

OpenClaw深度集成:千问3.5-9B作为默认推理引擎

OpenClaw深度集成:千问3.5-9B作为默认推理引擎 1. 为什么选择千问3.5-9B作为默认模型 去年冬天第一次接触OpenClaw时,我花了两周时间反复测试不同模型的适配性。当时用OpenAI的接口虽然方便,但每次截图识别、文件操作都要消耗大量token&…...

港科资讯|香港科大内地办(北京)赴宜参与第五届“330“三峡人才日活动 共探协同创新新路径

2026年3 月29-30日,香港科大内地办(北京)袁冶主任一行受邀参加[第五届宜昌“330”三峡人才日]系列活动,深度对接宜昌人才生态、产业布局与创新资源,共探协同创新新路径。“330” 三峡人才日源自葛洲坝水利枢纽工程 “330 工程” 历史符号&…...

【nginx】深入解析net::ERR_CONTENT_LENGTH_MISMATCH 200:权限配置与日志排查实战

1. 错误现象与初步诊断 当你用浏览器访问Nginx托管的网站时,突然看到控制台报错net::ERR_CONTENT_LENGTH_MISMATCH 200,但页面居然还能正常显示部分内容,这种情况是不是很诡异?我第一次遇到时也是一头雾水。这个错误表面看是内容长…...

从游戏背包到物流集装箱:深入浅出图解三维装箱问题(3D-BPP)

从游戏背包到物流集装箱:深入浅出图解三维装箱问题(3D-BPP) 想象一下你在玩《我的世界》,背包里塞满了钻石镐、金苹果和各种矿石,突然发现空间不够了——这时候你下意识做的事情,和亚马逊仓库的机器人分拣货…...

排序(五)【数据结构】

快速排序 核心思想 将待排序序列,围绕着基本值分成两部分,左边部分都小于基准值,右边部分都大于基准值 第一种方法:递归 优点:简单 缺点:需要单独开辟辅助空间brr数组 第二种方法:挖空法(很重要&…...

Davinci NvM Block与Fee Block关联配置详解

1. Davinci配置工具中的NvM与Fee Block基础概念 第一次接触Davinci配置工具时,很多人会对NvM Block和Fee Block的关系感到困惑。简单来说,NvM(Non-volatile Memory)Block是我们配置的非易失性存储单元,而Fee&#xff0…...

如何快速上手AssetStudio:Unity游戏资源提取的终极指南

如何快速上手AssetStudio:Unity游戏资源提取的终极指南 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and additional…...