我打算使用re.sub()替换文档中出现的所有stopwords。我尝试的第一件事是显而易见的:
re.sub('how|to',
'@',
'how to do this thing')
#Replacing with @ for easy identification of replaced words
正如预期的那样,这将返回'@ @ do this thing'
。然而,这也会匹配子词,而不一定是整个词。比如说
re.sub('how|to',
'@',
'how to do this thinghowto'
返回'@ @ do this thing@@'
。因为我只想匹配整个单词,所以我尝试了
re.sub('(^|\s)how($|\s)|(^|\s)to($|\s)',
'@',
'how to do this thinghowto')
它返回'@to do this thinghowto'
。看起来图案与“to”不匹配。为了了解情况是否如此,我测试了:
re.sub('(^|\s)how($|\s)|(^|\s)to($|\s)',
'@',
'how to to how how howtohowto to how')
然后得到'@to@how@howtohowto@how'
。该模式似乎跳过了每一次匹配,但它只匹配整个单词的出现。(如果您熟悉ML的说法,它看起来有一个完美的精确度,但只有50%的召回率。)为什么会发生这种情况,我可以做些什么来解决这个问题
目前没有回答
相关问题 更多 >
编程相关推荐