我对tweet的文本预处理有问题
我想用以下方式替换字符串中至少重复三次的字符:
so -----> so
loooooove -----> love
sweeeeeet -----> sweet
我所做的如下:
text = "this is so soooo sweeeeeeet. I loooove it!"
re.sub(r'([a-z])\1+', r'\1',text)
及
re.sub(r'(\w)(\1{3,})',r'\1',text)
这是从regex for repeating characters in a string in Python引用的
两者都返回相同的结果,如下所示:
'this is so so swet. I love it!'
任何建议都将不胜感激
正则表达式似乎完全按照您告诉它的方式执行—它用一个实例替换了多个连续字符。正则表达式不是问题,而是语言学的问题
原始单词中的字母数可能不明确:
A) Goooood morning, everyone!
B) Goooood, I hate mornings!
没有办法知道
A)
中的Goooood
的原始单词是Good
,而B)
中的God
是纯正则表达式,因为它取决于自然语言中的上下文一种老套的方法是保留一本单词词典,只使用“压缩”重复字符时使用的最长单词(或者只使用Wiktor Stribiżew建议的拼写检查器),这种方法在很多情况下都有效,但在上面的示例中会失败
一种更复杂(但更难实现)的方法是使用某种句子预测算法来计算句子中最可能的原始单词
无论如何,这不是一个微不足道的问题
相关问题 更多 >
编程相关推荐