我试图将一个段落分成一系列句子,使每个句子组保持在 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_切片器,但我不确定它是否可以处理上面的示例。
有两项重要任务可以实现您的目标:
- 将字符串拆分成句子
- 并对每个句子进行自动换行,特别注意标点符号。
我认为第一个从头开始并不容易实现,因此您最好的选择可能就是使用自然语言处理库,前提是您的“第三方语言处理服务”没有这样的功能。我不知道有什么“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(使用前将#替换为@)