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

深度学习速通系列:在bert的基础上使用上下文窗口处理超长文本

要使用滑动上下文窗口进行处理,可以在分割文本时考虑一个重叠的窗口,使得每个窗口的起始位置和结束位置有一定的重叠。这样可以保留更多的上下文信息。
以下是修改后的代码示例,添加了滑动窗口的功能:

import torch
from transformers import BertTokenizer, BertForTokenClassification
from transformers import pipeline

# 加载预训练模型和分词器
model_name = "bert-base-chinese"
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForTokenClassification.from_pretrained("uer/bert-base-chinese-nlp")
ner_pipeline = pipeline("ner", model=model, tokenizer=tokenizer)

# 定义最大输入长度和重叠长度
max_input_length = 512
overlap_length = 50  # 重叠长度

# 超长中文文本
long_text = "你的超长文本在这里。"

# 使用滑动窗口进行分割
def sliding_window_split(text, max_length, overlap):
    words = tokenizer.tokenize(text)
    segments = []
    start = 0
    while start < len(words):
        end = min(start + max_length - 2, len(words))  # -2 for [CLS] and [SEP]
        segment = words[start:end]
        segments.append(tokenizer.convert_tokens_to_string(segment))
        start += (max_length - overlap)  # 移动窗口,保留重叠部分
    return segments

# 对文本进行分割
segments = sliding_window_split(long_text, max_input_length, overlap_length)

# 进行命名实体识别
for segment in segments:
    ner_results = ner_pipeline(segment)
    print(ner_results)

关键修改点:

  1. 滑动窗口函数sliding_window_split 函数根据最大输入长度和重叠长度进行分割。
  2. 重叠移动:每次移动窗口的起始位置时,减去重叠长度,从而保留一定的上下文。这样,每个生成的文本段落之间就会有重叠,从而增强上下文信息的捕捉能力。

http://www.kler.cn/a/376253.html

相关文章:

  • yarn install 出现 error Error: certificate has expired
  • git cherry-pick用法详解
  • python之列表总结
  • 什么是过拟合和欠拟合?什么会导致过拟合或欠拟合?
  • 从零开始构建 ChatGPT
  • (56)MATLAB分析码间串扰信道的传递函数与频率响应
  • GPTSearch 它来了
  • flutter ios ffi 调试 .a文件 debug可以 release 不行
  • java base64转图片
  • 嵌入式Linux入门具备:C语言基础与基本驱动学习(1):Linux原生IO基础
  • 【设计模式系列】总览
  • [瑞吉外卖]-09数据库优化
  • 【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)
  • PHP文件包含漏洞
  • elf格式分析和动态库的链接过程
  • Java - 免费图文识别_Java_免费_图片转文字_文字识别_spring ai_spring ai alibaba
  • 群控系统服务端开发模式-应用开发-上传工厂开发
  • PySpark和Hadoop
  • 前端加密解密
  • 基于springboot的社区团购系统设计与实现
  • 【数据结构-邻项消除】力扣2216. 美化数组的最少删除数
  • [STM32]从零开始的IIC协议讲解与设备驱动
  • 【周末推荐】Windows无缝连接iPhone
  • HCIA(ACL)
  • 如何看待长周期项目?
  • GraphQL 与 Elasticsearch 相遇:使用 Hasura DDN 构建可扩展、支持 AI 的应用程序