英文文本预处理---!
最近正在复习正则表达式,学习文本处理,今天就来处理一下英文文本,由于在下学到的知识不多,于是乎,只能写出下面的一些功能,虽然不是基于爬取网页后在进行网页分析,是直接对一个事先准备好的文本进行预处理,我的代码的功能有去除一个文本里面的所有中文文本,然后对英文单词进行分词处理。下面就来介绍一下吧!
首先,是需要导入的库,这里需要说明的是,停用词库需要到命令行中进入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有所帮助.