javascript - 用于将带有缩写的文本拆分为句子的正则表达式
问题描述
我有一个文本。我需要一个句子列表。有很多微妙之处,例如在缩写中使用点。我找到了这个正则表达式
(?<!\w\.\w.)(?<![A-Z][a-z]\.)(?<=\.|\?)\s
但它不能正常工作
例如我有这个文本:
19 号房子很旧。人们说有鬼,但没有人见过。然而,它并没有被称为“鬼屋”。年复一年,它仍然存在:“要么出租,要么出售”
房屋经纪人拉迪什先生很高兴看到兰开斯特夫人对这所房子感兴趣。但她的问题是:“它空了多久?” 让他有点担心:“呃——呃——一段时间,”他回答。
这就是使用此正则表达式进行拆分的方式
19 号房子很旧。
人们说有鬼,但没有人见过。
然而,它并没有被称为“鬼屋”。年复一年,它仍然存在:“要么出租,要么出售”
房屋经纪人拉迪什先生很高兴看到
兰开斯特夫人对这所房子感兴趣。
但她的问题是:“它空了多久?” 让他有点担心:“呃——呃——一段时间,”他回答。
正如你所看到的那样,它与夫人分了句,但我不想要这个
它应该如下所示:
19 号房子很旧。
人们说有鬼,但没有人见过。
然而,它并没有被称为“鬼屋”。年复一年,它仍然存在:“要么出租,要么出售”
房屋经纪人拉迪什先生很高兴看到兰开斯特夫人对这所房子感兴趣。
但她的问题是:“它空了多久?” 让他有点担心:“呃——呃——一段时间,”他回答。
有人可以帮我吗?
解决方案
谢谢你们的回答。NLP 是一个很棒的解决方案。 这是一个正确的解决方案:
const txt = `The house No. 19 was very old. People said that there lived ghosts but nobody had ever seen them. However, it wasn’t called a «haunted» house; year after year it remained: "To Be Let or Sold"
The house agent Mr. Raddish was glad to see that Mrs. Lancaster was interested in this house. But her question: «How long was it empty?» made him a little worried: «Er — er — some time,» he answered.`;
let sentences = nlp(txt).sentences().data()
for (var s of sentences) {
document.body.innerHTML += s.text + "<br/>";
}
<script src="https://unpkg.com/compromise@latest/builds/compromise.min.js"></script>
推荐阅读
- javascript - 使用 jest 框架模拟基类
- android - 如何使用二进制图像通过 OpenGL 和 ARcore 来掩盖增强现实?
- php - 如何从 Laravel 中的查询中进行查询?
- excel - 运行分配给该行中单元格的宏的按钮
- java - Java 地图合集
收藏 - python - 带有 sequence_loss 的 Tensorflow Keras LSTM
- angular - 无法解析 ./src/debug/debug_node 的原始符号中的错误
- grafana - 黑盒导出器 probe_ssl_earliest_cert_expiry 在 grafna 中给出错误值
- sql - 在每个第一个有效条目之后在表中创建和填充缺失日期的行
- c++ - 如何在 MacOS (sierra-catalina) 上为分区获取可用空间