当前位置: 首页 > 知识库问答 >
问题:

按句子截断文本拆分

姬振濂
2023-03-14

我想用句子截断文本。

示例文本:'Lorem ipsum dolor坐在amet,奉献adipiscing elit!UT车辆laoreet urna, commodo,在马萨诸塞州。赛德volutpat nunc简历urna拍卖,在tempus enim rhoncus。马蒂斯康莫多的莫尔比交流电击器?Morbi在ornare Arcu,sagittis scelerisque risus。Aenean loortis lacinia nisl,nec laoreet ipsum viverra ac.Praesent venenatis eleifend risus et prvinar。没有简历的人。无核武器区

这就是我到目前为止所拥有的:

const truncate = (text: string, limit: number) => {
  const reduced = text
    .split(/[?!\.]/)
    .reduce((acc, cur) => {
      acc = (acc + cur).length < limit? `${acc}. ${cur}` : acc;
      return acc;
    });
 return reduced.length > limit? reduced.slice(limit - 3) + '...' : reduced;
};
console.log(truncate(text, 300));

问题是它总是用点来代替以前的标点符号,有时它甚至在末尾加点。

这里有几个例子:

限制: 50

1句是24的长度//24

2句子长度为20//44

3句子的长度是24//68

此外,我的代码不考虑句子长度和标点符号,但我想我可以添加1

编辑:

限制: 70输出:"Lorem ipsum dolor坐在amet, consecte ur adipiscing elit!"

限制:40输出:“Lorem ipsum dolor sit amet,Concetet…”

限制:220输出:“Lorem ipsum Door sit amet,Concertetur adipiscing Elite,sed do eiusmod Temporal Incidedut ut Labor and dolore magna aliqua?”

限制:240个输出:“知识同一性是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德。”

共有2个答案

隆睿
2023-03-14

如果我没弄错的话,你想按实际单词分割文本。也许这段代码会有所帮助。

let string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua? Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";

let truncate = (text, limit) => {
  let reduced = text
    .split(/[\s]/);
 return (reduced.length > limit ? reduced.slice(0, limit - 3).join(' ') : reduced.join(' ') ) + '...' ;
};
console.log(truncate(string, 20));
console.log(truncate(string, 30));
console.log(truncate(string, 40));
console.log(truncate(string, 50));
console.log(truncate(string, 60));
薛晨
2023-03-14

编辑:这个怎么样

js prettyprint-override">const string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua? Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

const truncate = (text, limit) => {
  let reduced = text
    .match(/[^\.!\?]+[\.!\?]+/g)
    .reduce((acc, cur) => {
      acc = (acc + cur).length < limit ? acc + cur : acc;
      return acc;
    });
  if (text.match(/[^\.!\?]+[\.!\?]+/g)[0].length > limit) reduced = reduced.slice(0, limit - 3) + "...";
  return reduced;
};
console.log(truncate(string, 240));
 类似资料:
  • 我目前使用引导表(http://bootstrap-table.wenzhixin.net.cn/)与引导可编辑扩展(https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/editable)创建一个表与可编辑的字段。我注意到,当一个字符串包含qoutes时,例如:这是一个“测试”,字符串在第一个“测试”中被截

  • 我是斯坦福核心NLP的新手。我想用它来从英语,德语,法语的文本中拆分句子。这是哪一个班的工作?提前谢谢。

  • 问题内容: 我想从字符串中列出句子列表,然后将其打印出来。我不想使用NLTK来做到这一点。因此,它需要在句子末尾的句点上进行分隔,而不是小数点,缩写或名称的标题,或者句子中包含.com。这是对正则表达式的尝试,不起作用。 示例输出应如下所示 问题答案: (?<!\w.\w.)(?<![A-Z][a-z].)(?<=.|\?)\s 尝试这个。分割您的字符串。您还可以查看演示。 http://rege

  • 假设我创造了一个情节: 使用Ipython(通过Spyder)时,绘图显示ok。但是,当我查看保存的图像时,它显示如下: 如您所见,文本被截断。处理此问题的建议做法是什么? 我通过增加体形尺寸,然后重新调整尺寸来解决这个问题。然而,我的目标是生成一组文本大小一致的图像(图形大小不同);因此,这种方法并不理想。 笔记虽然存在类似的问题,但该问题的不同之处在于: 处理和

  • 此代码完全符合我的需求:将版权信息添加到复制的Web文本的底部。但是,它复制了整篇文章。我想限制它说50个字或200个字符。我应该如何继续? JSFIDDLE演示 不知道用< code>substring还是上面的代码没有用< code>write函数。

  • 问题内容: 如何使用Stanford解析器将文本或段落拆分为句子? 有没有可以提取句子的方法(例如为Ruby提供的方法)? 问题答案: 您可以检查DocumentPreprocessor类。以下是一个简短的摘要。我认为可能还有其他方式可以做您想要的事情。