接触自然语言已有两年,下面谈一谈自己的一些理解
文本基本处理过程:
1.获取数据。
可以是任何文本类型的数据,自有的或者爬虫爬取的数据。曾经用几行代码写了一个爬虫,爬取了几万条商品评论还是很好用的。
2.数据预处理。
这一部分很重要!很重要!很重要!有可能会决定着你文本处理任务的最终质量!
1)观察数据。尤其是网上的数据质量参差不齐,一定要先观察数据,有没有异常符号,有的时候有很多空格,或者会有换行,这些符号都要首先去掉。我观察的方式也很简单,把数据统一存储到一个csv文件里,正常情况下文本非常整齐。如果有特殊符号可能会让一段文本被分开成好多列。看到有分成好多列的情况那可能有特殊符号,处理了就行。
2)分词,因为中文词语之间没有空格,所以一定要分词,分词的工具很多。做数据分析我一直用Python,推荐使用jieba分词,个人感觉很好用。
3)去除停用词,停用词就是那些几乎出现在每一篇文本,数量很多但是没有区分度的词比如的,一,等等。如果做分类的话,这些词对处理结果有一定影响,所以可以考虑先去掉。停用词词表一般网上都有,可以找一个适合自己的用。
3.特征工程
做过比赛的人都知道特征工程有多重要了,文本特征需要自己构建,最简单的就是词袋模型,还可以用n-gram模型,ti-idf模型。但是这些模型共同的特点就是太稀疏了。一般情况下需要降维,比如SVD,其实很多模型也可以用来进行特征选择比如决策树,L1正则也可以用来进行特征选择,具体原理这里就不讲了。是不是很复杂,其实已有一个强大的工具帮我们做好了 sklearn,超级好用。
4.正式干活。
至此你的数据应该还算是比较干净了,可以开始做下一步工作。比如分类,聚类,命名实体识别,事件抽取,机器翻译。。。。太多了,还是很有意思的。欢迎交流,指导!