微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 如何从输入中获取句号?

在文本中检测句子边界似乎很难.引号如.!?可能用于分隔句子但不准确,因为可能有歧义的词和引文,如美国或教授或博士我正在研究Tperl regex库和正则表达食谱 Jan Goyvaerts但我不知道如何编写检测表达式句子?

在delphi中使用Tperlregex可能是比较准确的表达式?

谢谢

首先,您可能需要达到自己对“句子”的定义,然后实现该定义.例如,怎么样:
He said: "It's OK!"

是一两句话吗?一般答案是无关紧要的.决定是否要将其解释为一个或两个句子,并相应地进行.

其次,我不认为我会使用正则表达式.相反,我会扫描每个字符并尝试检测序列.一个句子本身可能不足以划分一个句子,但是一个句子后跟空格或回车(或字符串的结尾)可能就是这样.这会立即让你淘汰美国(没有空格的时期).

对于Prof. a Dr.这样的常见缩写,创建一个字典可能是一个好主意 – 也许可以由用户编辑,因为每种语言都有自己的一组常用缩写.

每种语言也都有自己的标点符号规则,这可能会影响标点符号的解释方式.例如,英语倾向于在括号内放置句号(如此),而波兰语则相反(如此).相同的区别将适用于双引号,单引号(某些语言根本不使用它们,有时它们与撇号等无法区分).您的规则可能必须特定于语言,至少部分是这样.

最后,你可能会用人类的方式来界定句子,但总会有一些案例可以抛出分析.例如,假设您有一个识别“Prof.”的字典.作为缩写,你打算做什么

Most people called him Professor Jones,but to me he was simply The Prof.

即使你有一个跟随并以大写字母开头的另一个句子,这仍然无法帮助你知道句子在哪里结束,因为它可能也是

Most people called him Professor Jones,but to me he was simply Prof. Bill.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐