大模型:分本分割模型

news2024/11/25 18:38:39

目录

一、文本分割

二、BERT文本分割模型

三、部署模型

3.1 下载模型

3.2 安装依赖

3.3 部署模型

3.4 运行服务

四、测试模型


一、文本分割

        文本分割是自然语言处理中的一项基础任务,目标是将连续的文本切分成有意义的片段,这些片段可以是句子、短语或是结构性元素如段落。文本分割对于后续的文本分析、信息提取、机器翻译、情感分析等多种NLP应用至关重要。

二、BERT文本分割模型

        BERT文本分割-中文-通用领域(nlp_bert_document-segmentation_chinese-base),该模型基于wiki-zh公开语料训练,对未分割的长文本进行段落分割。提升未分割文本的可读性以及下游NLP任务的性能。

三、部署模型

3.1 下载模型

git clone https://www.modelscope.cn/iic/nlp_bert_document-segmentation_chinese-base.git

3.2 安装依赖

# vi requirements.txt

# basic requirements

fastapi>=0.110.0
uvicorn>=0.29.0
pydantic>=2.7.0
tiktoken>=0.6.0
sse-starlette>=2.0.0

transformers>=4.37.0
torch>=2.1.0
sentencepiece>=0.2.0
sentence-transformers>=2.4.0
accelerate

modelscope


#安装依赖
pip install requirements.txt

3.3 部署模型

# 文件名:api-server-nlp-bert.py

# -*- coding: utf-8 -*-
# This is a sample Python script.

import argparse
import os
import uuid
from pydantic import BaseModel

import uvicorn
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from utils import num_tokens_from_string
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

# 声明API
app = FastAPI(default_timeout=1000 * 60 * 10)


# 统一异常处理
@app.exception_handler(Exception)
async def all_exceptions_handler(request: Request, exc: Exception):
    """
    处理所有异常
    """
    return JSONResponse(
        status_code=500,
        content={
            "msg": str(exc)
        }
    )


# 自定义中间件
@app.middleware("http")
async def unified_interception(request: Request, call_next):
    # 在这里编写你的拦截逻辑
    # 例如,检查请求的header或参数
    # 如果不满足条件,可以直接返回响应,不再调用后续的路由处理
    token = request.headers.get("Authorization")

    # if token is None:
    #     return JSONResponse({"message": "Missing Authorization"}, status_code=401)

    # 如果满足条件,则继续调用后续的路由处理
    response = await call_next(request)

    # 在这里编写你的响应处理逻辑
    # 例如,添加或修改响应头

    # 返回最终的响应
    return response


# 文档分割请求信息
class DocumentRequest(BaseModel):
    # 模型平台
    platform: str = None
    # 模型
    model: str
    # 内容
    input: str

# 监控
@app.get("/api/models")
async def models():
    # 构造返回数据
    response = {
        "model": MODEL_NAME
    }
    return JSONResponse(response, status_code=200)


# 向量化
@app.post("/api/v1/document/segmentation")
async def embeddings(request: DocumentRequest):

    if len(request.input) <= 0:
        return JSONResponse({"msg": "数据不能为空!"}, status_code=500)
    # 请求id
    request_id = str(uuid.uuid4())

    # 文档分割
    result = pipeline(documents=request.input)
    # 按行拆分,并过滤空行
    lines = [line for line in result[OutputKeys.TEXT].splitlines() if line.strip() != ""]
    # 构造返回数据
    response = {
        "output": {
            "lines": [
                {
                    "text": text,
                    "index": index
                }
                for index, text in enumerate(lines)
            ]
        },
        "request_id": request_id,
        "usage": {
            "total_tokens": num_tokens_from_string(request.input)
        }
    }
    return JSONResponse(response, status_code=200)


if __name__ == '__main__':
    # 定义命令行解析器对象
    parser = argparse.ArgumentParser(description='模型参数解析器')
    # 添加命令行参数、默认值
    parser.add_argument("--host", type=str, default="0.0.0.0")
    parser.add_argument("--port", type=int, default=8880)
    parser.add_argument("--model_path", type=str, default="")
    parser.add_argument("--model_name", type=str, default="")
    # 从命令行中结构化解析参数
    args = parser.parse_args()
    # 模型路径
    MODEL_PATH = args.model_path
    MODEL_NAME = args.model_name

    if len(MODEL_PATH) <= 0:
        raise Exception("模型不能为空!")
    # 如果没有传入模型名称,则从路径中获取
    if len(MODEL_NAME) == 0:
        MODEL_DIR,MODEL_NAME = os.path.split(MODEL_PATH)

    # 向量模型
    pipeline = pipeline(
        task=Tasks.document_segmentation,
        model=MODEL_PATH)
    # 启动 uvicorn 服务
    uvicorn.run(app, host=args.host, port=args.port)

3.4 运行服务

# 运行脚本,指定模型路径
python api-server-nlp-bert.py --model_path=F:\llm\model\nlp_bert_document-segmentation_chinese-base

四、测试模型

curl -X POST -H "Content-Type: application/json" 'http://localhost:8880/api/v1/document/segmentation' \
-d '{
	"platform": "tongyi", 
	"model": "nlp_bert_document-segmentation_chinese-base", 
	"input":"《相见欢·林花谢了春红》 林花谢了春红,太匆匆。 无奈朝来寒雨晚来风。 胭脂泪,相留醉,几时重。 自是人生长恨水长东。 《虞美人·春花秋月何时了》 春花秋月何时了?往事知多少。 小楼昨夜又东风,故国不堪回首月明中。 雕栏玉砌应犹在,只是朱颜改。 问君能有几多愁?恰似一江春水向东流。 《相见欢·无言独上西楼》 无言独上西楼,月如钩。 寂寞梧桐深院锁清秋。别是一般滋味在心头。 《浪淘沙令·帘外雨潺潺》 帘外雨潺潺,春意阑珊。 罗衾不耐五更寒。 梦里不知身是客,一晌贪欢。 独自莫凭栏,无限江山。 别时容易见时难。 流水落花春去也,天上人间。 《渔父·浪花有意千里雪》 浪花有意千里雪,桃花无言一队春。 一壶酒,一竿身,快活如侬有几人。 《清平乐·别来春半》 别来春半,触目柔肠断。 砌下落梅如雪乱,拂了一身还满。雁来音信无凭,路遥归梦难成。 离恨恰如春草,更行更远还生。 《渡中江望石城泣下》 江南江北旧家乡,三十年来梦一场。 吴苑宫闱今冷落,广陵台殿已荒凉。 云笼远岫愁千片,雨打归舟泪万行。 兄弟四人三百口,不堪闲坐细思量。"
  }'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

流量控制和差错控制

流量控制是一种协调发送站和接收站工作步调的技术&#xff0c;其目的是避免由于发送速度过快&#xff0c;使得接收站来不及处理而丢失数据。通常&#xff0c;接收站有一定大小的接收缓冲区&#xff0c;当接收到的数据进入缓冲区后&#xff0c;接收器要进行简单的处理&#xff0…

探索Dagster:现代数据编排的利器

探索Dagster&#xff1a;现代数据编排的利器 在如今数据驱动的世界&#xff0c;数据工程和数据处理的复杂度不断增加&#xff0c;不仅需要管理各种数据源和数据流&#xff0c;还需要确保数据处理管道的可靠性、可维护性和可扩展性。Dagster作为一个现代化的数据编排平台&#x…

java:使用shardingSphere访问mysql的分库分表数据

# 创建分库与分表 创建两个数据库【order_db_1、order_db_2】。 然后在两个数据库下分别创建三个表【orders_1、orders_2、orders_3】。 建表sql请参考&#xff1a; CREATE TABLE orders_1 (id bigint NOT NULL,order_type varchar(255) NULL DEFAULT NULL,customer_id bigi…

运算符和表达式

基本概念 运算符&#xff1a;根据特定的算法对操作数执行运算&#xff0c; 并返回计算结果的符号 操作数&#xff1a;参与运算的对象 表达式&#xff1a;计算的式子 1.算术运算 针对数字&#xff1a;加法。针对字符串&#xff1a;连接。针对复合型数据&#xff1a;合并。…

【需求设计】软件概要设计说明怎么写?概要设计说明书实际项目案例(63页Word直接套用)

软件概要设计说明书书写要点可以归纳为以下几个方面&#xff0c;以确保文档的准确性、完整性和可读性&#xff1a; 引言 目的&#xff1a;介绍编写该文档的目的、主要内容及目标读者。 背景&#xff1a;说明被开发软件的名称、项目提出者、开发者等背景信息。 需求概述&#xf…

【第3章】ComfyUI界面介绍(新增节点的3种方式/主工作区/工作流/设置/插件管理界面)ComfyUI基础入门教程

🥽主界面介绍 ComfyUI的工作界面,我们在上章节中已经见过了(如上所示)。 【注意】大家在网盘下载的comfyui版本,已经内置了很多实用节点,所以跟原始开源版本不一致,不过当前阶段不需要太在意这些。 这里我们快速了解下,界面上的这些区域,都分别是做什么的? 总体…

openGauss 6.0.0 一主二备集群安装及使用zcbus实现Oracle到openGauss的数据同步

一、前言 openGauss 6.0.0-RC1是openGauss 2024年3月发布的创新版本&#xff0c;该版本生命周期为0.5年。根据openGauss官网介绍&#xff0c;6.0.0-RC1与之前的版本特性功能保持兼容,另外&#xff0c;在和之前版本兼容的基础上增加了很多新功能&#xff0c;比如分区表性能优化…

为什么有的网站接口有traceid,有的网站接口没有?

背景&#xff1a;打开百度&#xff0c;输入任意内容&#xff0c;点击百度一下。我们从左侧可以看到有2个接口是有TraceID的 -其他接口是没有的 下面分享我的理解&#xff1a; 对于高并发的业务&#xff08;访问频繁&#xff09;的接口&#xff0c;系统会生成非常多的数据&…

Playwright+Python+Pytest:基础方法二次封装简化及链式调用

引言 随着Web应用的日益复杂化&#xff0c;自动化测试成为了确保软件质量的关键环节。Playwright 是一个强大的自动化库&#xff0c;它支持在 Chromium、Firefox 和 WebKit 中运行自动化脚本。本文将介绍如何使用 Playwright 的 Python 同步 API 来简化点击和填充操作&#xf…

【护网急训2】帕鲁杯应急响应靶场

应急响应靶场 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 前段时间更新过一次应急响应靶场&am…

讯飞星火模型-语音转文字实现

目录 项目结构 准备音频 接口Demo 准备代码&#xff08;完整修改后&#xff09; 测试提取中文文字代码 结果 下载链接&#xff1a; 这是上周打算试试&#xff0c;提取视频文字之后&#xff0c;制作视频字幕&#xff0c;从而想用大模型来实现&#xff0c;基本的demo可以在…

Linux和Windows下查看CPU运行频率的方法

文章目录 0.前言1.Linux系统中查看CPU运行频率的方法&#xff08;经测试在UnRaid中适用的&#xff09;1.1.最简单的lscpu命令1.2.查看CPU实时运行频率的watch -n 1 cpufreq-info命令 2.WIndows系统中查看CPU运行频率的方法2.1.系统属性大法2.2.任务管理器大法2.3.CPU-Z等硬件检…

MoneyPrinterPlus:AI自动短视频生成工具,赚钱从来没有这么容易过

这是一个轻松赚钱的项目。 短视频时代&#xff0c;谁掌握了流量谁就掌握了Money! 所以给大家分享这个经过精心打造的MoneyPrinterPlus项目。 它可以&#xff1a;使用AI大模型技术,一键批量生成各类短视频。 它可以&#xff1a;一键混剪短视频&#xff0c;批量生成短视频不是…

计算机网络(3) 字节顺序:网络字节序与IPv4

一.小端与大端 小端&#xff08;Little endian&#xff09;&#xff1a;低字节保存在内存低地址&#xff0c;高字节保存在内存高地址。 大端&#xff08;Big endian&#xff09;&#xff1a;低字节保存在内存高地址&#xff0c;高字节保存在内存低地址。 例如&#xff08;14…

FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist

《FFmpeg开发实战&#xff1a;从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外&#xff0c;还有比较两种比较新的流媒体协议&#xff0c;分别是SRT和RIST。 其中SRT全称为Secure Reliable Transport&#xf…

计算机相关专业的探讨

目录 一、计算机相关专业是否仍是“万金油”选择 二、计算机行业的未来发展态势 三、从专业与个人的匹配度判断选择计算机相关专业 四、对于高考生的建议 一、计算机相关专业是否仍是“万金油”选择 计算机相关专业在过去很长一段时间内确实被视为“万金油”专业&#xff0…

中文藏文翻译怎么在线翻译?通过这些方法

中文藏文翻译怎么在线翻译&#xff1f;随着全球化的加速和跨文化交流的日益频繁&#xff0c;中文与藏文之间的翻译需求逐渐增加。为了满足这一需求&#xff0c;各种在线翻译工具和方法应运而生。下面&#xff0c;本文将详细介绍三种中文藏文在线翻译的方法&#xff0c;帮助用户…

[数据集][目标检测]攀墙攀越墙壁数据集VOC格式-701张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;701 标注数量(xml文件个数)&#xff1a;701 标注类别数&#xff1a;1 标注类别名称:["fq"] 每个类别标…

Button按钮类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 按钮是GUI界面中应用最为广泛的控件&#xff0c;它常用于捕获用户生成的单击事件&#xff0c;其最明显的用途是触发绑定到一个处理函数。 wxPython类…

51-57 CVPR 2024 | Cam4DOcc:自动驾驶应用中仅摄像机4D占用预测基准

23年12月&#xff0c;上海交通大学、国防科技大学、北京工业大学联合发布Cam4DOcc: Benchmark for Camera-Only 4D Occupancy Forecasting in Autonomous Driving Applications。 本文提出了一种仅摄像机4D占用预测的新基准Cam4Occ&#xff0c;利用现有nuScenes、nuScenes-Ocu…