Rails gem 将一个段落分成一系列句子

2023-12-09

我试图将一个段落分成一系列句子,使每个句子组保持在 N 个字符以下。如果单个句子的长度超过 N,则应将其分成多个块,并以标点符号或空格作为分隔符。

例如,如果 N = 50,则以下字符串

“Lorem ipsum,consectetur elit。Donec ut ligula。Sed acumsan posuere tristique。Sed et tristique sem。Aenean sollicitudin,sapien sodales elementum blandit。Fusce urna libero blandit eu aliquet ac rutrum vel tortor。”

会成为

[“Lorem ipsum,consectetur elit。Donec ut ligula。”,“Sed acumsan posuere tristique。”,“Sed et tristique sem。”,“Aenean sollicitudin,”,“sapien sodales elementum blandit。”,“Fusce urna libero blandit eu aliquet ac rutrum vel", "tortor."]

有没有任何 Rails gem 可以帮助我实现这一目标?我在看html_切片器,但我不确定它是否可以处理上面的示例。


有两项重要任务可以实现您的目标:

  1. 将字符串拆分成句子
  2. 并对每个句子进行自动换行,特别注意标点符号。

我认为第一个从头开始并不容易实现,因此您最好的选择可能就是使用自然语言处理库,前提是您的“第三方语言处理服务”没有这样的功能。我不知道有什么“rails gem”可以满足您的要求。

这只是一个使用以下命令将字符串拆分为句子的玩具示例斯坦福核心 NLP.

require 'stanford-core-nlp'
text = "Lorem ipsum, consectetur elit. Donec ut ligula. Sed acumsan posuere tristique. Sed et tristique sem. Aenean sollicitudin, sapien sodales elementum blandit. Fusce urna libero blandit eu aliquet ac rutrum vel tortor."
pipeline = StanfordCoreNLP.load(:tokenize, :ssplit)
a = StanfordCoreNLP::Annotation.new(text)
pipeline.annotate(a)
sentenses = a.get(:sentences).to_a.map &:to_s # Map with to_s if you want an array of sentence string.
# => ["Lorem ipsum, consectetur elit.", "Donec ut ligula.", "Sed acumsan posuere tristique.", "Sed et tristique sem.", "Aenean sollicitudin, sapien sodales elementum blandit.", "Fusce urna libero blandit eu aliquet ac rutrum vel tortor."]

第二个问题与自动换行类似,如果它确实是自动换行问题,那么使用 ActionView::Helpers::TextHelper.word_wrap 等现有实现应该可以轻松解决它。 但是,对于标点符号有额外的要求。我不知道任何现有的实现可以实现与您完全相同的目标。也许你必须想出自己的解决方案。

我唯一的想法是首先对每个句子进行自动换行,然后用标点符号分割每一行,然后再次将各个部分连接起来,但长度有限制。我想知道这是否可行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails gem 将一个段落分成一系列句子 的相关文章

随机推荐

  • 如何在节点后端存储图像?

    我使用 Node 和 Express 作为后端 使用 Mongo DB 进行存储 我使用 multer 中间件来存储图像 我遇到了一个问题 问题是当我从本地主机存储图像时 它会保存在我的后端中 并且也会显示在数据库中 但是当我在heroku
  • androidcamera2api-onImageAvailable在session.capture之后不被调用

    我正在尝试使用相机 api2 来捕获图像 该代码在 MOTO g4 上运行良好 但当我在 NEXUS 6 上测试代码时 在 session capture 之后不会调用 onImageAvailable 并且没有保存图像 真的很沮丧 如果有
  • 如何改变 Spring Boot 提供静态文件的方式?

    最近在几个新项目中使用 JHipster 后 强烈推荐 很棒的工作 我尝试将一些概念向后移植到旧的 Web 应用程序中 本质上是将其迁移到 Spring Boot 和 Angular 在 Spring Boot 中 静态 Web 资源 HT
  • Angularjs:错误:[ng:areq]参数“HomeController”不是函数,未定义

    这是我使用 angularjs 的演示 用于创建服务文件并向控制器添加服务 我的演示有两个问题 一个是当我把
  • 如何将本地 git 存储库与其工作目录分离?

    这可行吗 我想要 git结账目录之外的另一个驱动器上的目录 我找不到一种方法来分离两者 原因是 在非常慢的网络驱动器和有限的空间上有一个交换区域 这真是一个超时的噩梦 至少可以足够快地完成存储库操作 与 svn 存储库同步 以避免超时 并且
  • Angular ui-router 按刷新会导致 404 错误

    好的 我知道这是一个开放式问题 但是 我正在使用 AngularJS 1 4 x 和 ui router 运行一个应用程序 在大多数情况下 一切都正常并符合预期 我的各个页面使用 ui sref 进行导航 页面按预期显示 并且显示的 URL
  • 如何在表单 POST 或 GET 后保留选择框的选定值

    我正在尝试在我的网站中实现搜索功能 当在文本框中输入搜索关键字并选择类别组合时 表单将被发布 结果将显示在同一页面上 我想要的是在发布后默认在表单中保留组合的选定类别 例如 如果我在组合中选择 汽车 类别并单击搜索 则在表单提交后 组合应将
  • 将多维数组转换为对象

    我有一个最多包含 32 32 个条目的二维数组 我想将它从这样的东西转换 null null null null null null null null null null null null null null null null pla
  • Groovy 正则匹配引号之间的所有内容

    我有这个正则表达式 regex 所以我正在寻找引号之间的所有文本 现在我有以下字符串 options a 2 s 10 Print Type s 8 New Book s 8 Template s 9 See Notes 不管怎样做 reg
  • 将产品自定义字段保存为 WooCommerce 管理员手动订单的自定义订单项目元数据

    Using 将自定义产品元数据传递到 Woocommerce 3 中的订单回答代码 从后端手动创建订单时 从后端手动添加产品时是否可以保存和显示自定义元数据 这是我的代码 稍作改动 Admin products Display custom
  • 在 Acumatica 中,您可以使用未绑定的 DAC 获得图表/页面吗?

    是否可以让图表和页面使用完全未绑定的 DAC 当前在 4 20 中尝试此操作时 我收到以下错误消息 Incorrect syntax near the keyword FROM Description An unhandled except
  • ListView 未取消选择

    我正在使用 ListView 开发 Xamarin Forms 项目 ListView 的 XAML 是
  • R:用先前的值填充缺失值[重复]

    这个问题在这里已经有答案了 我有一个如下所示的数据框 d lt data frame county c Abilene rep NA 5 Cook rep NA 4 Blah NA Allegheny rep NA 3 county 1 A
  • 如何修复 Visual Studio 中的“找不到类型或命名空间名称”错误?

    我得到一个 找不到类型或命名空间名称 VS2010 中的 C WPF 应用程序出现错误 这部分代码编译得很好 但突然我收到了这个错误 我尝试删除项目参考和using声明 关闭VS2010并重新启动 但我仍然有这个问题 任何想法为什么会发生这
  • 使用 AVAudioRecorder 录制 AVAudioPlayer 输出

    在我的应用程序中 用户通过按下按钮来播放声音 有多个按钮可以同时播放 声音是使用 AVAudioPlayer 实例播放的 我想使用 AVAudioRecorder 记录这些实例的输出 我已经完成所有设置并创建了一个文件并进行录制 但是当我播
  • Matplotlib:子图中的插图

    我必须做几个子图 每个子图同时有一个插图custom相对于子图的位置 原则上可以通过axes grid1如中给出的this然而 例如 位置参数loc in inset axes or zoomed inset axes对于我的目的来说不够具
  • AlertDialog 上的 AutoCompleteTextView 实现

    我在 OnClickListener 方法中实现了 AutoCompleteTextView 但是 一旦单击 AutoCompleteTextView 我就看不到下拉文本 并且键盘仍然出现 我喜欢的是出现下拉文本 而键盘应该是不可见的 可能
  • lucene 短语查询不起作用

    我正在尝试使用 Lucene 2 9 4 编写一个简单的程序 它搜索短语查询 但我得到 0 次点击 public class HelloLucene public static void main String args throws IO
  • Powershell正则表达式用于两个特殊字符之间的字符串

    文件名如下 inpFiledev abc XYZ bak 我只需要变量中的 XYZ 即可与其他文件名进行比较 我试过下面 String findev regex match inpFiledev Value Write Host finde
  • Rails gem 将一个段落分成一系列句子

    我试图将一个段落分成一系列句子 使每个句子组保持在 N 个字符以下 如果单个句子的长度超过 N 则应将其分成多个块 并以标点符号或空格作为分隔符 例如 如果 N 50 则以下字符串 Lorem ipsum consectetur elit