python 文本处理---英文文本预处理(简单易懂 全有注释)!!!!!使用正则表达式以及nltk库分词器双方法!

                                         英文文本预处理---!

          最近正在复习正则表达式,学习文本处理,今天就来处理一下英文文本,由于在下学到的知识不多,于是乎,只能写出下面的一些功能,虽然不是基于爬取网页后在进行网页分析,是直接对一个事先准备好的文本进行预处理,我的代码的功能有去除一个文本里面的所有中文文本,然后对英文单词进行分词处理。下面就来介绍一下吧!

                                                   

首先,是需要导入的库,这里需要说明的是,停用词库需要到命令行中进入python进行下载,这里放一个简单的教程。

第一步:打开命令行窗口,输入python

 

第二步:先后输出如下命令:

>>>import nltk   

>>>nltk.download()

在这之后你会进入一个界面,你会找到stopwords然后在左下角有一个download按钮,点击一下就可以下载了.这里我因为下载过了,出了点问题进不去那个窗口,不过大家按照这个                                                          方法是可以进去的  

 

安装完成之后,以下是导入的库:

import re
import nltk
from enchant.checker import SpellChecker
from nltk.corpus import stopwords

接下来呢,我就先输入一个需要处理的文本,初始文本中我故意把"amm" " jast" "booy" "basketball"打错来测试拼写检查。然后使用正则表达式中的sub函数来进行去除中文的操作.

##初始文本中我故意把"amm" " jast" "booy" "basketball"打错来测试拼写检查
text = 'I amm我是 一个普通的喜欢篮球的男生啊 jast a booy, and (( loved 我baskerball 还a lot. Just a lucky boy喜欢.'

##使用去除中文
text = re.sub('[\u4e00-\u9fa5]','',text)
print('去除中文后:')
print(text)

然后分别使用re正则表达式和nltk库的分词器对去除中文后的文本进行分词处理。事实证明两种方法得出的结果是一样的,大家可以使用别的测试文本再试一下。说不定会发生小概率事件呢,哈哈哈

part = r"""(?x)                   
	           (?:[A-Z]\.)+          
	           |\d+(?:\.\d+)?%?      
	           |\w+(?:[-']\w+)*       
	           |\.\.\.  
	           |\S\w* 
	           |\w+         
	           |(?:[.,;"'?():-_`])    
	         """

texti = nltk.regexp_tokenize(text,part)
print('使用nltk库正则表达式对文本进行分词处理:')
print(nltk.regexp_tokenize(text,part))##使用nltk库的正则表达式分词器
print('使用re正则表达式对文本进行分词处理:')
print(re.findall(part,text))##使用re正则表达式方法

然后就是停用词处理,因为下面的拼写检查会用到原文本,所以停用词我使用了一个新的文本进行储存.

##停用词
stopwordd = set(stopwords.words('english'))
word = [i for i in texti if i not in stopwordd]
print('去除停用词后:')
print(word)

最后就是拼写检查了,在原始文本中我故意写错了四个单词,看看它能不能查出来,使用一个标记变量来记录写错单词的个数,以及一个数组来存储错误的单词.

##停用词
stopwordd = set(stopwords.words('english'))
word = [i for i in texti if i not in stopwordd]
print('去除停用词后:')
print(word)

完整代码:

import re
import nltk
from enchant.checker import SpellChecker
from nltk.corpus import stopwords

##初始文本中我故意把"amm" " jast" "booy" "basketball"打错来测试拼写检查
text = 'I amm我是 一个普通的喜欢篮球的男生啊 jast a booy, and (( loved 我baskerball 还a lot. Just a lucky boy喜欢.'

##使用去除中文
text = re.sub('[\u4e00-\u9fa5]','',text)
print('去除中文后:')
print(text)
part = r"""(?x)                   
	           (?:[A-Z]\.)+          
	           |\d+(?:\.\d+)?%?      
	           |\w+(?:[-']\w+)*       
	           |\.\.\.  
	           |\S\w* 
	           |\w+         
	           |(?:[.,;"'?():-_`])    
	         """

texti = nltk.regexp_tokenize(text,part)
print('使用nltk库正则表达式对文本进行分词处理:')
print(nltk.regexp_tokenize(text,part))##使用nltk库的正则表达式分词器
print('使用re正则表达式对文本进行分词处理:')
print(re.findall(part,text))##使用re正则表达式方法

##停用词
stopwordd = set(stopwords.words('english'))
word = [i for i in texti if i not in stopwordd]
print('去除停用词后:')
print(word)

##拼写查找
spell = SpellChecker("en_US")
spell.set_text(text)
##这里用标记变量t记录次数
t = 0
errword = []
for j in spell:
    t = t + 1
    errword.append(j.word)

print('共发现错误的词数为:'+str(t))
print('这些拼写错误的单词依次为:')
print(errword)






如果大家有什么好的建议,或者有什么想说的,欢迎指点迷津!谢谢大家的阅读,希望我的文章能对大家学习python有所帮助.

 

  • 18
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值