前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >干货 | 自然语言处理(5)之英文文本挖掘预处理流程

干货 | 自然语言处理(5)之英文文本挖掘预处理流程

作者头像
昱良
发布于 2018-04-18 02:04:59
发布于 2018-04-18 02:04:59
3.7K0
举报

前言

  • 自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)
  • 干货 | 自然语言处理(3)之词频-逆文本词频(TF-IDF)详解
  • 干货 | 自然语言处理(2)之浅谈向量化与Hash-Trick
  • 干货 | 自然语言处理(1)之聊一聊分词原理
  • 干货 | 自然语言处理入门资料推荐

原文链接:http://www.cnblogs.com/pinard/p/6756534.html

在中文文本挖掘预处理流程总结中,我们总结了中文文本挖掘的预处理流程,这里我们再对英文文本挖掘(English text mining, ETM)的预处理流程做一个总结。

ETM特点

英文文本的预处理方法和中文的有部分区别。首先,英文文本挖掘预处理一般可以不做分词(特殊需求除外),而中文预处理分词是必不可少的一步。第二点,大部分英文文本都是uft-8的编码,这样在大多数时候处理的时候不用考虑编码转换的问题,而中文文本处理必须要处理unicode的编码问题。这两部分我们在中文文本挖掘预处理里已经讲了。

而英文文本的预处理也有自己特殊的地方,第三点就是拼写问题,很多时候,我们的预处理要包括拼写检查,比如“Helo World”这样的错误,我们不能在分析的时候讲错纠错。所以需要在预处理前加以纠正。第四点就是词干提取(stemming)和词形还原(lemmatization)。这个东西主要是英文有单数,复数和各种时态,导致一个词会有不同的形式。比如“countries”和"country","wolf"和"wolves",我们期望是有一个词。

后面的预处理中,我们会重点讲述第三点和第四点的处理。

ETM预处理(一)之数据获取

这部分英文和中文类似。获取方法一般有两种:使用别人做好的语料库和自己用爬虫去在网上去爬自己的语料数据。

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

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

ETM预处理(二)之去除非文本

这一步主要是针对我们用爬虫收集的语料数据,由于爬下来的内容中有很多html的一些标签,需要去掉。少量的非文本内容的可以直接用Python的正则表达式(re)删除, 复杂的则可以用beautifulsoup来去除。另外还有一些特殊的非英文字符(non-alpha),也可以用Python的正则表达式(re)删除。

ETM预处理(三)之拼写检查

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

拼写检查,我们一般用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

输出是:

ERROR: peope ERROR: likee

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

ETM预处理(四)之

词干提取(stemming)和

词形还原(lemmatization)

词干提取(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 languagestemmer.stem("countries") # Stem a word

输出是"countri",这个词干并不是一个词。而如果是做词型还原,则一般可以使用WordNetLemmatizer类,即wordnet词形还原方法。

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

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

在这里有个词干提取和词型还原的demo,如果是这块的新手可以去看看,上手很合适。

ETM预处理(五)之小写归一化

由于英文单词有大小写之分,我们期望统计时像“Home”和“home”是一个词。因此一般需要将所有的词都转化为小写。这个直接用python的API就可以搞定。

ETM预处理(六)之引入停用词

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

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

ETM预处理(七)之特征处理

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

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

ETM预处理(八)之特征处理

有了每段文本的TF-IDF的特征向量,我们就可以利用这些数据建立分类模型,或者聚类模型了,或者进行主题模型的分析。此时的分类聚类模型和之前讲的非自然语言处理的数据分析没有什么两样。因此对应的算法都可以直接使用。而主题模型是自然语言处理比较特殊的一块,这个我们后面再单独讲。

阶段总结

上面我们对英文文本挖掘预处理的过程做了一个总结,希望可以帮助到大家。需要注意的是这个流程主要针对一些常用的文本挖掘,并使用了词袋模型,对于某一些自然语言处理的需求则流程需要修改。比如有时候需要做词性标注,而有时候我们也需要英文分词,比如得到"New York"而不是“New”和“York”,因此这个流程仅供自然语言处理入门者参考,我们可以根据我们的数据分析目的选择合适的预处理方法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法与Python学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
英文文本挖掘预处理流程总结
    在中文文本挖掘预处理流程总结中,我们总结了中文文本挖掘的预处理流程,这里我们再对英文文本挖掘的预处理流程做一个总结。
刘建平Pinard
2018/08/07
1.1K0
中文文本挖掘预处理流程总结
在对文本做数据分析时,我们一大半的时间都会花在文本预处理上,而中文和英文的预处理流程稍有不同,本文就对中文文本挖掘的预处理流程做一个总结。
刘建平Pinard
2018/08/07
2K0
自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在对文本做数据分析时,一大半的时间都会花在文本预处理上,而中文和英文的预处理流程稍有不同,本文对中文文本挖掘的预处理流程做一个总结。 中文文本挖掘预处理特点 首先看中文文本挖掘预处理与英文文本挖掘预处理的不同点。 首先,中文文本是没有像英文的单词空格那样隔开的,因此不能直接像英文一样可以直接用最简单的空格和标点符号完成分词。所以一般需要用分词算法来完成分词,在(干货 | 自然语言
昱良
2018/04/08
3.2K0
评论文本挖掘
评论文本挖掘(Review Text Mining)是一种自然语言处理(NLP)技术,用于从在线评论、社交媒体帖子和其他文本数据中提取有用信息。这种技术可以帮助企业和研究人员了解消费者对产品、服务和品牌的看法,从而为市场营销策略、产品开发和客户服务提供有价值的见解。
@小森
2024/03/15
2790
[自然语言处理|NLP] 信息检索与文本挖掘
当涉及到自然语言处理(NLP)中的信息检索与文本挖掘时,我们进入了一个旨在从大量文本数据中发现有价值信息的领域。信息检索涉及从文本数据中检索相关信息,而文本挖掘则旨在自动发现文本中的模式、趋势和知识。
数字扫地僧
2023/11/09
1.1K0
NLP面试宝典:38个最常见NLP问题答案一文get
自然语言处理(Natural Language Processing,NLP)是指帮助机器理解和分析自然语言;它是利用机器学习算法从数据中提取所需信息的一个自动化的过程。
新智元
2019/12/30
4.2K0
​用 Python 和 Gensim 库进行文本主题识别
从大量文本中自动提取人们谈论的主题(主题识别)是自然语言处理的基本应用之一。大型文本示例包括社交媒体订阅、消费者对酒店、电影和其他业务的评价、用户评论、新闻和客户发来的邮件。
数据STUDIO
2022/05/24
2K0
​用 Python 和 Gensim 库进行文本主题识别
干货 | 自然语言处理(3)之词频-逆文本词频(TF-IDF)详解
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在()中讲到在文本挖掘预处理中,在向量化后一般都伴随着TF-IDF的处理。什么是TF-IDF,为什么一般需要加这一步预处理呢?这里就对TF-IDF的原理做一个总结。 文本向量化存在的不足 在将文本分词并向量化后,就可以得到词汇表中每个词在文本中形成的词向量,比如()这篇文章中,我们将下面4个短文本做了词频统计: corpus=["I come to China to travel
昱良
2018/04/08
2.7K0
干货 | 自然语言处理(3)之词频-逆文本词频(TF-IDF)详解
Coursera NLP 课程 - 第一周 - 02 - 纯文本分类
「学习内容总结自 coursera 上的 Natural Language Processing 课程」
caoqi95
2019/03/27
9750
Coursera NLP 课程 - 第一周 - 02 - 纯文本分类
自然语言处理(NLP)学习路线总结
NLP是自然语言处理(Natural Language Processing)的缩写,它是计算机科学领域中专注于研究如何使计算机理解、生成和处理人类语言的学科。NLP涉及的技术包括但不限于分词、词性标注、句法分析、语义分析、机器翻译、情感分析、信息抽取、文本生成等。通过NLP,计算机可以处理和分析大量的文本数据,帮助人们更好地理解和应用语言信息。
机器学习AI算法工程
2024/07/04
1.1K0
自然语言处理(NLP)学习路线总结
文本挖掘预处理之TF-IDF
    在文本挖掘预处理之向量化与Hash Trick中我们讲到在文本挖掘的预处理中,向量化之后一般都伴随着TF-IDF的处理,那么什么是TF-IDF,为什么一般我们要加这一步预处理呢?这里就对TF-IDF的原理做一个总结。
刘建平Pinard
2018/08/07
7390
【机器学习】基于LDA主题模型的人脸识别专利分析
作为一名数据科学家,文本数据提出了一个独特的挑战:虽然金融、年龄和温度数据可以立即被注入线性回归,但词汇和语言本身对统计模型毫无意义。
黄博的机器学习圈子
2021/07/07
1.1K0
【机器学习】基于LDA主题模型的人脸识别专利分析
自然语音处理|NLP 数据预处理
当涉及到自然语言处理(NLP),数据处理是整个NLP工作流程中的关键环节之一。数据处理涉及到从不同的来源获取、清理和准备文本数据,以便用于训练和评估NLP模型。本文将深入探讨NLP数据处理的重要性、数据预处理步骤、常见的文本清理技巧以及如何利用Python工具来进行数据处理,以及一些高级的NLP数据处理技术。
数字扫地僧
2023/11/07
7900
从 App 描述介绍文字中发掘 Python 文本数据预处理实例
除了数据清洗和数据探索的主题外,许多有效的NLP(自然语言处理)分析都是依赖于对文本数据的预处理。因此,我决定手把手展现一个对来自苹果App Store简述的文本数据预处理的过程,并且对这些数据使用K均值聚类算法。
AI研习社
2018/09/25
1.1K0
从 App 描述介绍文字中发掘 Python 文本数据预处理实例
中文NLP用什么?中文自然语言处理的完整机器处理流程
人工智能头条早先发布的文章《用 Python 构建 NLP Pipeline,从思路到具体代码,这篇文章一次性都讲到了》,是基于英文来举例的。
用户1737318
2018/09/28
8.5K1
中文NLP用什么?中文自然语言处理的完整机器处理流程
Python NLTK自然语言处理:词干、词形与MaxMatch算法
CSDN:白马负金羁 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。自然语言工具箱(NLTK,Natural Language Toolkit)是一个基于Python (http://lib.csdn.net/base/11)语言的类库,它也是当前最为流行的自然语言编程与开发工具。在进行自然语言处理研究和应用时,恰当利用NLTK中提供的函数可以大幅度地提高效率。本文就将通过一些实例来向读者介绍NLTK的使用。 开发环境:我所使用的Python版本是最新的3.5.1,NLTK版本是3.2。P
机器学习AI算法工程
2018/03/13
2.1K0
Python  NLTK自然语言处理:词干、词形与MaxMatch算法
NLP学习路线总结
自然语言处理(Natural Language Processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究人与计算机之间用自然语言进行有效通信的理论和方法。融语言学、计算机科学、数学等于一体的科学。旨在从文本数据中提取信息。目的是让计算机处理或“理解”自然语言,以执行自动翻译、文本分类和情感分析等。自然语言处理是人工智能中最为困难的问题之一。
全栈程序员站长
2022/11/10
1.3K0
NLP学习路线总结
自然语言处理背后的数据科学
NLP是人与机器之间的沟通,使得机器既可以解释我们的语言,也可以就此作出有效回答。自20世纪50年代以来,这个领域一直存在,你可能听说过Alan Turing开创的“图灵测试”。图灵测试测量计算机对人类所提出问题做出反应的好坏程度。
大数据文摘
2019/05/13
7910
一文概览NLP算法(Python)
NLP是人工智能领域历史较为悠久的领域,但由于语言的复杂性(语言表达多样性/歧义/模糊等等),如今的发展及收效相对缓慢。比尔·盖茨曾说过,"NLP是 AI 皇冠上的明珠。" 在光鲜绚丽的同时,却可望而不可及(...)。
算法进阶
2022/06/02
2.3K0
一文概览NLP算法(Python)
【自然语言处理篇】--以NLTK为基础讲解自然语⾔处理的原理和基础知识
Python上著名的⾃然语⾔处理库⾃带语料库,词性分类库⾃带分类,分词,等等功能强⼤的社区⽀持,还有N多的简单版wrapper。
LhWorld哥陪你聊算法
2018/09/13
1.2K0
【自然语言处理篇】--以NLTK为基础讲解自然语⾔处理的原理和基础知识
推荐阅读
相关推荐
英文文本挖掘预处理流程总结
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档