加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails gem将段落分成一系列句子

发布时间:2020-12-17 02:04:39 所属栏目:百科 来源:网络整理
导读:我试图将一个段落分成一系列句子,使每个句子组保持在N个字符之下.如果单个句子长于N,则应将其拆分为带有标点符号或空格作为分隔符的块. 例如,如果N = 50,则接下来的字符串 “Lorem ipsum,consectetur elit. Donec ut ligula. Sed acumsan posuere tristique.
我试图将一个段落分成一系列句子,使每个句子组保持在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.”]

有没有可以帮助我实现这一目标的轨道宝石?我看了html_slicer,但我不确定它能处理上面的例子.

解决方法

有两个非平凡的任务来实现你的目标:

>将一个字符串拆分成句子
>并对每个句子进行包装,并特别注意标点符号.

我认为第一个不容易从头开始实现,所以你最好的选择可能只是使用自然语言处理库,前提是你的“第三方语言处理服务”没有这样的功能.我不知道任何“rails gem”符合您的要求.

这里只是一个使用stanford-core-nlp将字符串拆分成句子的玩具示例.

require 'stanford-core-nlp'
text = "Lorem ipsum,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等现有实现轻松解决.
但是,有关标点符号的额外要求.我不知道任何现有的实现方式可以实现与您完全相同的目标.也许你必须提出自己的解决方案.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读