将文本拆分为最小长度的较小段落,而不破坏给定阈值的句子

2023-12-09

有更好的方法来完成这项任务吗?

对于 NLP 任务的预处理,我试图将大块文本分割成偶数长度的字符串列表。

通过在每个“.”处分割文本。我的句子长度会很不均匀。通过使用索引/数字,我会在中间切断句子。

目标是将句子放在长度均匀的列表中,而不会在句子结束之前截断句子。

这是我想出的解决方案,但我觉得应该存在一些更简单的解决方案。

def even_split(text):
    combined_sentences = []
    tmp_text = text.strip()
    if tmp_text[-1] != ".":
      tmp_text += "."
    while len(tmp_text) > 0:
      dots = []
      for i in range(len(tmp_text)):
        if tmp_text[i] == '.':
          dots.append(i)
      split_dot = dots[min(range(len(dots)), key=lambda i: abs(dots[i]-150))]
      combined_sentences.append(tmp_text[:split_dot+1])
      tmp_text = tmp_text[split_dot+1:].strip()
    return combined_sentences

例如,如果我输入以下字符串:

在当今过度饱和的市场中,营销产品和服务是一项艰巨而乏味的任务。特别是如果您从事 B2B 潜在客户开发业务。作为企业主或销售团队的一员,您确实需要深入了解哪些策略最有效以及如何最有效地吸引客户。潜在客户开发是您需要掌握的。了解不同类型的潜在客户将帮助您销售产品或服务并更快地扩展业务。这就是为什么我们要解释什么是热情的潜在客户以及如何轻松地将他们转变为付费客户。

这将输出:

['Marketing products and services is a demanding and tedious task in today’s overly saturated market. Especially if you’re in a B2B lead generation business.',
 'As a business owner or part of the sales team, you really need to dive deep into understanding what strategies work best and how to appeal to your customers most efficiently.',
 'Lead generation is something you need to master. Understanding different types of leads will help you sell your product or services and scale your business faster.',
 'That’s why we’re explaining what warm leads are and how you can easily turn them into paying customers.']

正如您所看到的,它们均匀分布,每个大约 150 个字符。 希望这一点是清楚的。

有更好的方法来完成这项任务吗?

Thanks!


IIUC,您想按点分割文本,但尽量保持块的最小长度,以避免句子非常短。

您可以做的是将这些点分开并再次加入,直到达到阈值(此处为 200 个字符):

out = []
threshold = 200
for chunk in text.split('. '):
    if out and len(chunk)+len(out[-1]) < threshold:
        out[-1] += ' '+chunk+'.'
    else:
        out.append(chunk+'.')

output:

['Marketing products and services is a demanding and tedious task in today’s overly saturated market. Especially if you’re in a B2B lead generation business.',
 'As a business owner or part of the sales team, you really need to dive deep into understanding what strategies work best and how to appeal to your customers most efficiently.',
 'Lead generation is something you need to master. Understanding different types of leads will help you sell your product or services and scale your business faster.',
 'That’s why we’re explaining what warm leads are and how you can easily turn them into paying customers..']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文本拆分为最小长度的较小段落,而不破坏给定阈值的句子 的相关文章

随机推荐

  • 非静态字段、方法或属性需要对象引用

    我在构建 vs2008 net 3 5 解决方案时收到错误 错误 1 非静态字段 方法或属性 System Web UI Page Request get 需要对象引用 String XSLTPath Page Request Url Sc
  • 处理用户控件,真的意味着编辑 .designer.cs 文件吗?

    对于具有必须处理的内部数据结构的用户控件 将该代码添加到 designer cs 文件中的 Dispose 方法的正确位置是否正确 或者是否存在我们要使用的事件或其他内容 Edit 这是一个winforms用户控件 如果您谈论的是 WinF
  • 以任意角度将球从墙上弹起?

    我试图让用户画一个球拍 然后他们可以用它来击球 然而 我似乎无法让球正确弹跳 因为球速度的 x 和 y 分量没有与墙壁对齐 我该如何解决这个问题 我尝试了加雷斯 里斯 Gareth Rees 给出的建议here 但显然我对向量了解不够 无法
  • 在 DataTemplate UWP 中绑定 ComboBoxItem 的 IsSelected 属性

    我正在尝试绑定 ComboBoxItem 的属性 IsSelected 以显示正确的图标 如果选择了项目 则应显示红色图标 否则打开列表的其余部分为灰色 我如何尝试实现该功能的方式如下面的代码所示
  • C# Xamarin Timer 类不更新视图

    using System using System Collections Generic using System Linq using System Text using System Threading Tasks using Sys
  • 窗口弹出窗口 - 如何让 window.blur() 或 window.focus() 在 FireFox 4 中工作?

    我知道 FF4 不允许使用window blur 除非在 FF 配置中启用了 升高或降低窗口 设置 它简单地忽略了该事件 我知道某些网站仍然设法打开弹出窗口并保持当前窗口的焦点 即使此设置已关闭 他们是如何实现这一目标的 此外 我不明白为什
  • 如何在运行时存储或读取动画剪辑数据?

    我正在开发一个小程序 可以在运行时修改动画 例如 当你跑得更快时 动画不仅播放得更快 而且运动也更大 所以我需要获取现有的动画 更改其值 然后将其发送回来 我发现很有趣的是 我可以为动画设置一条新曲线 但我无法访问我已经拥有的曲线 因此 我
  • md5是否可以阻止SQL注入

    Ok 所以 我对此有点不确定 我有一个 url 参数username 我有这样的声明 SELECT FROM users WHERE user hash md5 GET username 这安全吗 创建帐户后 将存储用户名和密码的 md5
  • 异步 JavaScript 程序中的函数调用到底是如何排序的?

    我正在学习的概念异步编程在 JavaScript JS 中 但是 我很难理解这一点 这几天我一直在网上阅读各种文章来理解它 但我无法理解这个想法 那么 我的疑问如下 setTimeout function alert Hello 1 300
  • Git 从命令行注销用户

    有没有退出git的命令 我正在将我的计算机移交给其他人 并且不希望 git 附加到我在终端中的帐户 我遇到了同样的问题 上面的答案对我不起作用 因为github我的凭据是通过 Windows 凭据管理器而不是 git bash 提供的 您可
  • Python Google Cloud 函数缺少日志条目

    我正在第一次尝试 GCP 的云函数和 python 并希望将 python 的日志记录充分集成 以便它们能够很好地适应 GCP 的日志记录基础设施 特别是为了识别严重性级别 并且最好还包括execution ids 和跟踪 id 我一直在关
  • 切换隐藏/显示 Google 地图标记

    我有一个自定义的谷歌地图 上面有艺术家位置的标记 我想做 8 种不同类别的标记 我读到必须制作标记数组并分配类别 但老实说我不知道 从哪里开始 我认为这个问题很接近我想要的 按类别打开 关闭 Google 地图标记 试图让它发挥作用 但无济
  • 列出每个存储桶的缩略图

    我有2节课 首先是用于搜索所有文件夹 我的意思是桶列表名称 秒级制作缩略图 但我需要每个桶都有缩略图 因此 当我按下文件夹时 它应该显示其中的所有照片 缩略图 有人可以帮我吗 第一类 public class ThumbnailAdapte
  • 可变边的三栏网页设计

    我一直在尝试想出一种方法来创建 3 列网页设计 其中中心列具有恒定的宽度并且始终居中 左侧和右侧的列是可变的 这在表中是微不足道的 但在语义上并不正确 我无法在所有当前浏览器中使其正常工作 这方面有什么建议吗 Use 这项技术 只需为中心列
  • ASP.NET 中的 OpenStreetMap

    我有兴趣在使用 ASP NET 开发的 Web 应用程序中使用 OpenStreetMap 有人知道在 ASP NET 中是否有使用 OpenStreetMap 的控件 库或包装器 C 不使用 JavaScript 我不确定他们是否有任何
  • 避免从不同位置多次登录帐户

    我想限制同一用户从不同位置多次登录 如何识别用户在同一时间 最近时间从不同位置多次登录 我认为表中的一些标志和 IP 检查可能是一个可能的解决方案 但是有更好的解决方案吗 更新 我认为会话或 cookie 如果适用于单台机器可能会有所帮助
  • 使用 bigquery 根据日期将表拆分为多个表,并使用单个查询进行分区

    我想做的最初的 原因 是 恢复表时保持其原始分区 而不是将其全部放入今天的分区中 我以为我能做的是bq load到临时表 然后运行一个查询 按照所需的命名约定将该表拆分为每天一张表 YYYYMMDDbq partition i e shar
  • 在 R 数据表中添加单元格边框

    对 R 相当陌生 在大局方面做得还不错 但当我想向其他人展示一些东西时 却很难清理边缘 用可能非常简单的东西把我的头撞在墙上 我只是想在一个闪亮的应用程序的数据表中添加单元格边框 到所有单元格 这是相关的代码块 library ggplot
  • PostgreSQL和nodejs/pg,返回嵌套的JSON

    我将 PostgreSQL 与 nodejs 和 pg 一起使用 一切工作正常 但我想将 PostgreSQL 的结果作为嵌套 json 输出 就好像我正在使用 MongoDB 或类似的东西一样 我来自 PostgreSQL 的 2 个表是
  • 将文本拆分为最小长度的较小段落,而不破坏给定阈值的句子

    有更好的方法来完成这项任务吗 对于 NLP 任务的预处理 我试图将大块文本分割成偶数长度的字符串列表 通过在每个 处分割文本 我的句子长度会很不均匀 通过使用索引 数字 我会在中间切断句子 目标是将句子放在长度均匀的列表中 而不会在句子结束