给了个链接线上写代码,要求写读文本、文本预处理、特征提取和建模的基本过程,不过写到特征就没写了

给了个链接线上写代码,要求写读文本、文本预处理、特征提取和建模的基本过程,不过写到特征就没写了,第1张

给了个链接线上写代码,要求写读文本、文本预处理、特征提取和建模的基本过程,不过写到特征就没写了

参考回答:

收集数据

总所周知,数据挖掘模型中非常重要的部分是训练模型,训练集与测试集便是整个数据挖掘过程中花费时间最多的过程。数据集通过有如下的一些途径获得:

经典数据集:Python NLTK 便提供了非常多经典的数据集。很多数据集都是手工标注而成,所以使用的时候不得不感叹工程的浩大。例如NLP中使用的Penn TreeBank,有兴趣的同学可以看看他们的论文《Building a Large Annotated Corpus of English: The Penn TreeBank》,那简直就是一部辛酸史啊!

从网页上抓取:直接动手写一个爬虫爬取特定的网页不难,通过正则表达式就能够将有效的内容提取出来;当然,发扬拿来主义精神的话,我们可以使用Python中一些优秀的库,比如scrapy,beautifulsoup 等等。

从日志、已有文件中分析:如果是海量数据的话可以使用hadoop这样的系统。结合传统SQL中的一些特殊功能,例如Partition,有时会有不错的效果,不过最多压缩空间、缩减特征再用SQL处理。

其他网络数据集:Stanford Large Network Dataset Collectionm,100+ Interesting Data Sets for Statistics

 

预处理

如果是网页内容,首先需要去掉Html Tag,lxml和html5lib是比较有名的Python库,beautifulsoup也对他们做了一层封装。不过别忘了,Python本身也自带了sgmllib这样的基本可扩展的解析器。如果是有特别的处理,其实正则表达式也是不错的选择。

处理编码,由于我主要是处理英文的数据,这一步基本也跳过了。

将文档分割成句子(可选)。很多时候我们采用的是词袋模型(bag of words),所以是否分割成句子也无所谓。比较简单的方法就是Python NLTK中的sent_tokenize()函数,用的是punkt算法,论文在这里。

将句子分割成词。首先用正则表达式可以自己完成;如果要利用已有工具,Python NLTK中的word_tokenize(),这个方式就是前文提到的Penn TreeBank语料库所使用的分词方法。听起来是不是很高大上,我是不会告诉你其实它也是正则表达式实现的,想知道具体实现,戳这里。分词其实主要干了这么几个事:1)将’分开. don't -> do n't, they'll -> they 'll; 2)将大部分标点当作单独的一个词; 3)将后一位是逗号或者引号的词分开; 4)单独出现在一行的句号分开。中文分词区别比较大,可以采用斯坦福或者ICTCLAS(中科院背景)的方案。

拼写错误纠正。推荐pyenchant,非常喜欢,因为简洁到四句语句就能完成。Windows 8中 *** 作系统也直接提供了拼写检查的COM端口,不过就得多花时间研究啦。

POS Tagging(根据实际应用)。还是Nltk,首页就有介绍;斯坦福也提供了这类工具。这一块属于NLP的范畴,还是Parsing等应用,要了解NLP原理推荐Coursera上一门不错的课程Natural Language Processing

去掉标点。正则表达式即可,有的时间非常短的单词也可以一起去掉,len<3的常见的选择

去掉非英文字符的词(根据实际应用决定)。

转换成小写。

去掉停用词。就是在各种句子中都经常出现的一些词,I、and什么的。NLTK有一个Stopwords。Matthew L. Jockers提供了一份比机器学习和自然语言处理中常用的停词表更长的停词表。中文停用词戳这里。什么?你问我停用词怎么找到的,我想大概是IDF这样的算法吧。

词型转换。简单来讲,我们希望do、did、done都能统一的返回do。第一种方法叫stem,Porter是比较常见的一种基于规则的算法,网页有snowball工具,也是它的论文。Porter的结果差强人意,单词末尾有e、y的,基本上stem之后都不间了,例如replace->replac;末尾有重复单词的,基本只剩一个了,例如ill->il。NLTK中也有Stem库,算法应该是类似的。第二种方法叫lemmatization,就是基于词典做词型转换,NLTK的Stem库中便有WordNetLemmatizer可以使用。

去掉长度过小的词(可选)。如果之前做了,这里要再做一次,因为stem会改变词型。

重新去停用词。理由同上。

特征提取:

1、TF-IDF:

2、词频方法(Word Frequency):

3、文档频次方法(document Frequency):

4、互信息(Mutual Information):

5、期望交叉熵(Expected Cross Entropy):

6、二次信息熵(QEMI):

7、信息增益方法(Information Gain):

8、x2统计量方法:

9、文本证据权(The Weight of Evidence forText):

10、优势率(Odds Ratio):

11、遗传算法(Genetic Algorithm, GA):

12、主成分分析法(Principal Component Analysis,PCA):

13、模拟退火算法(Simulating Anneal,SA):

14、N—Gram算法

文本建模:

LDA、pLSA、LSA

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4883405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-11
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存