英文文本预处理流程总结

1、英文文本预处理的特点以及与中文文本与处理的区别

1.1与中文文本预处理的区别

首先中文文本预处理一般不需要做分词处理(特殊需求除外,例如推特上文本数据,部分用户编写的内容存在连词的情况,如onlinecommunities可以分为 online communities,LakeCounty分为Lake Country效果会更好)而中文预处理分词是必不可少的一环。

第二点是,大部分英文文本都是utf-8的编码,这样在大多数处理的时候不用考虑编码转换的问题,而中文文本处理必须要处理unicode编码问题。

1.2 英文文本处理的特点

除了上面两个特点之外,英文文本的预处理还有自己特殊的地方,第三点是拼写检查,比如说“helo world”这样的拼写错误需要在预处理阶段加以纠正。第四点是词干提取(stemming)和词形还原(lemmatization),这是由于英文存在单复数和各种时态,导致一个词有多种不同的形式。

2. 英文文本挖掘预处理一:数据收集

获取方法一般有两种:使用比人做好的语料库、自己用爬虫去网上自己爬自己的预料数据

对于第一种方法,常用的文本语料库在网上有很多,如果大家只是学习,则可以直接下载下来使用,但如果是某些特殊主题的语料库,比如“deep learning”相关的语料库,则这种方法行不通,需要我们自己用第二种方法去获取。

对于第二种使用爬虫的方法,开源工具有很多,通用的爬虫我一般使用beautifulsoup。但是我们我们需要某些特殊的语料数据,比如上面提到的“deep learning”相关的语料库,则需要用主题爬虫(也叫聚焦爬虫)来完成。这个我一般使用ache。 ache允许我们用关键字或者一个分类算法模型来过滤出我们需要的主题语料,比较强大。

3. 英文文本挖掘预处理二:除去数据中非文本部分

这一部分主要针对我们用爬虫收集的语料数据,内容中含有很多html的一些标签,有的比赛提供的语料数据也存在这些问题,可以通过数据探索性分析观察数据是否需要进行这步操作。通常利用python正则表达式re删除即可。

4. 英文文本挖掘预处理三:拼写检查纠正

由于英文文本中可能有拼写错误,因此一般需要进行拼写检查。如果确信我们分析的文本没有拼写问题,可以略去此步。

拼写检查,我们一般用pyenchant类库完成。pyenchant的安装很简单:"pip install pyenchant"即可。

对于一段文本,我们可以用下面的方式去找出拼写错误:

from enchant.checker import SpellChecker
chkr = SpellChecker("en_US")
chkr.set_text("Many peope likee to watch In the Name of People.")
for err in chkr:
    print "ERROR:", err.word

找出错误后,我们可以自己来决定是否要改正。当然,我们也可以用pyenchant中的wxSpellCheckerDialog类来用对话框的形式来交互决定是忽略,改正还是全部改正文本中的错误拼写。大家感兴趣的话可以去研究pyenchant的官方文档。

5. 英文文本挖掘预处理四:词干提取和词形还原

词干提取(stemming)和词型还原(lemmatization)是英文文本预处理的特色。两者其实有共同点,即都是要找到词的原始形式。只不过词干提取(stemming)会更加激进一点,它在寻找词干的时候可以会得到不是词的词干。比如"imaging"的词干可能得到的是"imag", 并不是一个词。而词形还原则保守一些,它一般只对能够还原成一个正确的词的词进行处理。个人比较喜欢使用词型还原而不是词干提取。

在实际应用中,一般使用nltk来进行词干提取和词型还原。安装nltk也很简单,"pip install nltk"即可。只不过我们一般需要下载nltk的语料库,可以用下面的代码完成,nltk会弹出对话框选择要下载的内容。选择下载语料库就可以了。

import nltk
nltk.download()

在nltk中,做词干提取的方法有PorterStemmer,LancasterStemmer和SnowballStemmer。个人推荐使用SnowballStemmer。这个类可以处理很多种语言,当然,除了中文。

from nltk.stem import SnowballStemmer
stemmer = SnowballStemmer("english") # Choose a language
stemmer.stem("countries") # Stem a word

输出是"countri",这个词干并不是一个词。

而如果是做词型还原,则一般可以使用WordNetLemmatizer类,即wordnet词形还原方法。

from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
print(wnl.lemmatize('countries'))  

输出是"country",比较符合需求。
在实际的英文文本挖掘预处理的时候,建议使用基于wordnet的词形还原就可以了。

6. 英文文本挖掘预处理五:转化为小写

由于英文单词有大小写之分,我们期望统计时像“Home”和“home”是一个词。因此一般需要将所有的词都转化为小写。这个直接用python的lower(_)就可以搞定。命题实体识别项目一般需要保留大写。

7. 英文文本挖掘预处理六:引入停用词

在英文文本中有很多无效的词,比如“a”,“to”,一些短词,还有一些标点符号,这些我们不想在文本分析的时候引入,因此需要去掉,这些词就是停用词。个人常用的英文停用词表下载地址在这。当然也有其他版本的停用词表,不过这个版本是我常用的。

在我们用scikit-learn做特征处理的时候,可以通过参数stop_words来引入一个数组作为停用词表。这个方法和前文讲中文停用词的方法相同。

需要注意的是,如果我们使用预训练模型,则通常不需要进行去除停用词的操作。

8. 英文文本挖掘预处理七:特征处理

现在我们就可以用scikit-learn来对我们的文本特征进行处理了,在文本挖掘预处理之向量化与Hash Trick中,我们讲到了两种特征处理的方法,向量化与Hash Trick。而向量化是最常用的方法,因为它可以接着进行TF-IDF的特征处理。在文本挖掘预处理之TF-IDF中,我们也讲到了TF-IDF特征处理的方法。

TfidfVectorizer类可以帮助我们完成向量化,TF-IDF和标准化三步。当然,还可以帮我们处理停用词。这部分工作和中文的特征处理也是完全相同的。

转载自https://www.cnblogs.com/pinard/p/6756534.html,作者刘建平Pinard

  • 1
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 文本分类是一种将文本数据按照预定义的类别进行分类的任务。使用Python库PyTorch可以快速实现文本分类模型。 首先,我们需要将文本数据预处理成适合模型输入的形式。这包括将文本转换成数字化的表示,例如词袋模型、TF-IDF向量或词嵌入表示。PyTorch提供了torchtext库,它能够很方便地进行文本预处理和构建数据管道。 接下来,我们可以搭建文本分类模型。PyTorch中的torch.nn模块提供了各种用于搭建神经网络模型的类和函数。常用的模型包括卷积神经网络(CNN)、循环神经网络(RNN)和Transformer等。可以根据具体任务的需求选择适合的模型结构。同时,我们也可以自定义模型结构,使用PyTorch提供的模型组件进行搭建。 然后,我们需要定义损失函数和优化器来训练模型。对于文本分类任务,常用的损失函数是交叉熵损失函数(Cross-Entropy Loss),可以通过torch.nn.CrossEntropyLoss进行定义。在选择优化器时,常用的有随机梯度下降(SGD)和Adam等,可以使用torch.optim模块中的相应类进行初始化。 最后,我们需要进行模型训练和评估。通过迭代数据集中的文本样本,计算模型的预测值并与真实标签进行比较,计算损失函数并进行反向传播更新模型参数。可以通过调用PyTorch提供的API进行训练过程的实现。在模型训练完成后,可以使用测试集或交叉验证集对模型进行评估,计算准确率、召回率和F1值等指标。 总结来说,利用PyTorch实现文本分类需要进行数据预处理、模型搭建、损失函数和优化器的定义以及训练和评估等步骤。通过PyTorch的灵活性和高效性,我们可以快速构建和训练文本分类模型,并应用到实际的文本分类任务中。 ### 回答2: 文本分类是自然语言处理领域的一项重要任务,其目标是根据文本内容将其归类到不同的预定义类别中。PyTorch是一种广泛使用的开源深度学习框架,可以用于构建和训练文本分类模型。 在PyTorch中进行文本分类,一般需要经过以下几个步骤: 1. 数据预处理:首先,需要对原始文本数据进行预处理,包括分词、去除停用词、词干化等操作。这一步旨在将文本转化为机器可以理解和处理的形式。可以使用Python中的NLTK库或其他相关工具来完成这些操作。 2. 构建词向量:接下来,需要将文本转化为词向量表示。可以使用预训练的词向量模型(如Word2Vec、GloVe等)将每个单词映射到一个实值向量。这样可以保留单词之间的语义关系,提供更好的特征表示。 3. 构建模型:使用PyTorch构建文本分类模型。常见的模型包括卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)等。可以选择适合任务的模型结构,并添加合适的层和激活函数。 4. 训练模型:使用预处理后的数据集,将模型输入特征和标签进行训练。通过定义损失函数(如交叉熵损失)和优化器(如随机梯度下降),对模型进行迭代优化。可以使用PyTorch提供的自动求导功能,方便地计算梯度和更新模型参数。 5. 模型评估:经过一定的训练后,可以使用测试数据集对模型进行评估。常见的评估指标包括准确率、精确率、召回率和F1-score等。通过评估模型在新数据上的表现,可以衡量其性能和泛化能力。 总之,利用PyTorch进行文本分类可以很方便地构建和训练深度学习模型。使用合适的数据预处理和模型配置,结合适当的损失函数和优化算法,可以得到准确性较高的文本分类结果。 ### 回答3: 文本分类是自然语言处理任务中的一项重要任务,它的目标是将给定的文本分成若干个预定义的类别。PyTorch是一种深度学习框架,它提供了丰富的工具和函数,可以方便地实现文本分类模型。 在PyTorch中,文本分类可以通过以下步骤来实现: 1. 数据预处理:首先,需要将原始文本数据转换为模型可处理的格式。这可以包括分词、去除停用词、数字化文本等操作。 2. 构建词汇表:将所有的文本样本中出现的单词建立一个词汇表,每个单词都有一个唯一的索引。这是为了将文本表示成向量形式。 3. 文本表示:将文本转换成对应的向量表示,常见的方法是使用词嵌入(word embedding)技术,如Word2Vec、GloVe等,可以将每个单词表示成一个固定维度的向量。 4. 模型构建:选择适当的深度学习模型来进行文本分类。常见的模型包括卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)等。 5. 训练模型:使用合适的优化算法和损失函数,在训练集上对模型进行训练。可以使用交叉熵损失函数,使用梯度下降法进行参数更新。 6. 模型评估:使用测试集对训练好的模型进行评估,计算准确率、精确率、召回率等指标来评估模型的性能。 在PyTorch中,可以使用torchtext等库来简化上述流程的实现。torchtext提供了数据导入、预处理以及构建数据集和迭代器的功能。 总之,PyTorch提供了丰富的工具和函数,可以方便地实现文本分类模型。通过数据预处理、词汇表构建、文本表示、模型构建、模型训练和模型评估等步骤,可以实现一个高效的文本分类系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值