Python下切分文本的一些常用规则

在撸《机器学习实战》这本书的时候, 在“基于概率论的分类方法:朴素贝叶斯”这一个章节中发现了作者在谈到切分文本的一些处理原则,记下来可以作为一些初学者的文本处理参考。

本文的实现的方式均为Python

  1. 对于一个文本字符串,可以用string.split( )方法进行切分:
>>> mySent = 'This book is the best on Python or M.L. I have ever laid eyes upon. '
>>> mySent.split()
['This', 'book', 'is', 'the', 'best', 'on', 'Python', 'or', 'M.L.', 'I', 'have', 'ever', 'laid', 'eyes', 'upon.']

可以看到切分的效果还是不错的,但是标点符号却被当成了词的一部分。我们可以使用正则表达式
来切分句子,切分的规则是除单词,数字外的任意字符串。

>>> import re
>>> regEx = re.compile('\\W*')
>>> listOfTokens = regEx.split(mySent)
>>> listOfTokens
['This', 'book', 'is', 'the', 'best', 'on', 'Python', 'or', 'M', 'L', 'I', 'have', 'ever', 'laid', 'eyes', 'upon', '']

还有一点毛病,需要将里面的字符串也去除,可以计算每个字符串的长度并且返回长度大于0即可

>>> [tok for tok in listOfTokens if len(tok) > 0]
['This', 'book', 'is', 'the', 'best', 'on', 'Python', 'or', 'M', 'L', 'I', 'have', 'ever', 'laid', 'eyes', 'upon']

最后,我们在词袋模型中希望每个单词的形式都是统一的,不希望出现大小写的情况,因此可以用Python内嵌的.lower()或者.upper()方法。

>>> [tok.lower() for tok in listOfTokens if len(tok) > 0]
['this', 'book', 'is', 'the', 'best', 'on', 'python', 'or', 'm', 'l', 'i', 'have', 'ever', 'laid', 'eyes', 'upon']

参考文献:Peter Harrington, Machine Learning in Action. 人民邮电出版社. pp. 65, 2013.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值