进行分句,要确保数字中的小数点不被分开最简便的方法-附代码

Posted Coding With you.....

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进行分句,要确保数字中的小数点不被分开最简便的方法-附代码相关的知识,希望对你有一定的参考价值。

查了许多资料,采用分词库与正则表达式都没有办法进行完美分句。

比如:名字有这样的Mr.A.W、Mr.等,采用正则可以分,但是有错误的。如果结尾只是一个字母A.,会与下一句的词分成一句中。

那么怎么解决呢?

对于句子中的名字,数据集中几乎没有连字的名字,因此只考虑数字,不要将小数点当成句号分开

思路:其实对于a.b这样的数字,考虑若句点的前面和后面都为数字的情况,会发生问题。

           比如:This is $3.0 is no good这样的话3.0不会分开,但实际上这是两句话

因此只考虑句点后接数字的情况,一般以数字开头的句子很少,如果有的话修改正则为

'\\?|\\!|(?<!\\d)\\.(?!\\d)'即可。

代码及结果:

import re
sen='i likh 4.2 vvv.Him with tf?And he qweq nnmj.kkk jjuug.'
p = re.split('\\?|\\!|\\.(?!\\d)',sen)
print(p[:-1])#['i likh 4.2 vvv', 'Him with tf', 'And he qweq nnmj', 'kkk jjuug']这里去掉最后一个的原因是每次分句总会多出一个空的来

即:print(p)# ['i likh 4.2 vvv', 'Him with tf', 'And he qweq nnmj', 'kkk jjuug',[]]

以上是关于进行分句,要确保数字中的小数点不被分开最简便的方法-附代码的主要内容,如果未能解决你的问题,请参考以下文章

对英文文章进行分句,要确保数字中的小数点不被分开最简便的方法-附代码

怎样用Java求1~10000中的所有质数最简便的方法

怎样用Java求1~10000中的所有质数最简便的方法

超级简单的DELPHI问题,取小数位

matlab保存数据到txt如何确保按最大精度保存?

使用awk进行数字计算,保留指定位小数