英文文本挖掘预处理流程总结

  • 时间:
  • 浏览:0

本文转自刘建平Pinard博客园博客,原文链接:http://www.cnblogs.com/pinard/p/6756534.html,如需转载请自行联系原作者

    对于第两种方法,常用的文本语料库在网上有许多,可能大伙儿 因此学习,则还时要直接下载下来使用,但可能是许多特殊主题的语料库,比如“deep learning”相关的语料库,则这一 方法行不通,时要大伙儿 自己用第二种方法去获取。

    这一 步主因此针对大伙儿 用爬虫埋点的语料数据,可能爬下来的内容含高许多html的许多标签,时要加进。多量的非文本内容的还时要直接用Python的正则表达式(re)删除, 僵化 的则还时要用beautifulsoup来去除。另外还有许多特殊的非英文字符(non-alpha),也还时要用Python的正则表达式(re)删除。

    现在大伙儿 就还时要用scikit-learn来对大伙儿 的文本行态进行除理了,在文本挖掘预除理之向量化与Hash Trick中,大伙儿 讲到了两种行态除理的方法,向量化与Hash Trick。而向量化是最常用的方法,可能它还时要接着进行TF-IDF的行态除理。在文本挖掘预除理之TF-IDF中,大伙儿 也讲到了TF-IDF行态除理的方法。

    在这里有个词干提取和词型还原的demo,可能是这块的新手还时要去看看,上手很大概 。

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

    词干提取(stemming)和词型还原(lemmatization)是英文文本预除理的特色。两者真是有一齐点,即有的是要找到词的原始形式。只不过词干提取(stemming)会更加激进许多,它在寻找词干的很久还时要会得到有的是词的词干。比如"imaging"的词干可能得到的是"imag", 并有的是有另有一个 词。而词形还原则保守许多,它一般只对都都可不后能 还原成有另有一个 正确的词的词进行除理。自己比较喜欢使用词型还原而有的是词干提取。

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

    在英文文本含高许多无效的词,比如“a”,“to”,许多短词,还有许多标点符号,哪此大伙儿 很久在文本分析的很久引入,因此 时要加进,哪此词因此停用词。自己常用的英文停用词表下载地址在这。当然有的是许多版本的停用词表,不过这一 版本是我常用的。

    而可能是做词型还原,则一般还时要使用WordNetLemmatizer类,即wordnet词形还原方法。

    找出错误后,大伙儿 还时要自己来决定与非 要改正。当然,大伙儿 也还时要用pyenchant中的wxSpellCheckerDialog类来用对话框的形式来交互决定是忽略,改正还是完整改正文本中的错误拼写。大伙儿 感兴趣搞笑的话还时要去研究pyenchant的官方文档。

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

    对于一段文本,大伙儿 还时要用下面的方法去找出拼写错误:

    后面 大伙儿 对英文文本挖掘预除理的过程做了有另有一个 总结,希望还时要帮助到大伙儿 。时要注意的是这一 流程主要针对许多常用的文本挖掘,并使用了词袋模型,对于某许多自然语言除理的需求则流程时要修改。比如有很久时要做词性标注,而有很久大伙儿 也时要英文分词,比如得到"New York"而有的是“New”和“York”,因此 这一 流程仅供自然语言除理入门者参考,大伙儿 还时要根据大伙儿 的数据分析目的取舍大概 的预除理方法。

    在大伙儿 用scikit-learn做行态除理的很久,还时要通过参数stop_words来引入有另有一个 数组作为停用词表。这一 方法和前文讲中文停用词的方法相同,这里就不写出代码,大伙儿 参考前文即可。

    有了帕累托图文本的TF-IDF的行态向量,大伙儿 就还时要利用哪此数据建立分类模型,可能聚类模型了,可能进行主题模型的分析。此时的分类聚类模型和很久讲的非自然语言除理的数据分析没人 哪此两样。因此 对应的算法都还时要直接使用。而主题模型是自然语言除理比较特殊的一块,这一 大伙儿 后面 再单独讲。

    在实际的英文文本挖掘预除理的很久,建议使用基于wordnet的词形还原就还时要了。

    TfidfVectorizer类还时要帮助大伙儿 完成向量化,TF-IDF和标准化三步。当然,还还时要帮大伙儿 除理停用词。这帕累托图工作和中文的行态除理也是完整相同的,大伙儿 参考前文即可。

    可能英文单词有大小写之分,大伙儿 期望统计时像“Home”和“home”是有另有一个 词。因此 一般时要将所有的词都转化为小写。这一 直接用python的API就还时要甩掉。

    输出是"countri",这一 词干并有的是有另有一个 词。    

    英文文本的预除理方法和中文的有帕累托图区别。首先,英文文本挖掘预除理一般还时要不做分词(特殊需求除外),而中文预除理分词是必不可少的一步。第二点,大帕累托图英文文本有的是uft-8的编码,因此在大多数很久除理的很久不需要考虑编码转换的难题,而中文文本除理时要要除理unicode的编码难题。这两帕累托图大伙儿 在中文文本挖掘预除理里可能讲了。

    而英文文本的预除理有的是自己特殊的地方,第三点因此拼写难题,许多很久,大伙儿 的预除理要包括拼写检查,比如“Helo World”因此的错误,大伙儿 没人 在分析的很久讲错纠错。许多时要在预除理前加以纠正。第四点因此词干提取(stemming)和词形还原(lemmatization)。这一 东西主因此英文有单数,复数和各种时态,因为有另有一个 词会有不同的形式。比如“countries”和"country","wolf"和"wolves",大伙儿 期望是有有另有一个 词。

    输出是:

    可能英文文本中可能有拼写错误,因此 一般时要进行拼写检查。可能确信大伙儿 分析的文本没人 拼写难题,还时要略去此步。

    输出是"country",比较符合需求。

    在nltk中,做词干提取的方法有PorterStemmer,LancasterStemmer和SnowballStemmer。自己推荐使用SnowballStemmer。这一 类还时要除理许多种语言,当然,除了中文。

    对于第二种使用爬虫的方法,开源工具有许多,通用的爬虫我一般使用beautifulsoup。因此 大伙儿 大伙儿 时要许多特殊的语料数据,比如后面 提到的“deep learning”相关的语料库,则时要用主题爬虫(也叫聚焦爬虫)来完成。这一 我一般使用ache。 ache允许大伙儿 用关键字可能有另有一个 分类算法模型来过滤出大伙儿 时要的主题语料,比较强大。

    后面 的预除理中,大伙儿 会重点讲述第三点和第四点的除理。