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