一、文本的概念
文本,是指书面语言的表现形式,从文学角度说,通常是具有完整、系统含义(Message)的一个句子或多个句子的组合。一个文本可以是一个句子(Sentence)、一个段落(Paragraph)或者一个篇章(Discourse)。
二、文本的结构
以中文为例:单字可以组词语,词语可以造句,句子组成段落,段落构成文章。层层递进。
三、文本分析的主要路径
文本分析指对文本数据进行表示 (representation),处理(processing)和建模(modeling)来获得有用的见解(insight)。
以英文为例,先将句子按照空格将单词分成一个一个的单词,然后再按照某种计量方法(词频,TF_IDF ,word2vec) 将文本数据转化为词向量,词矩阵的数字数据.转化为词向量了,词矩阵就是数字数据了,后面的分析方法和数字数据的分析方法大同小异了(文本语义除外)。
中文的不同之处:
中文句子之间没有空格,很难进行分割,需要按照组词的方式进行分割。这也就引出了中文分词了。
例如:中国人民万岁(句子) -----> 中国 人民 万岁(3个词语)
分词常用的方法:
①正向最大匹配法(由左到右的方向);
②逆向最大匹配法(由右到左的方向);
③最少切分(使每一句中切出的词数最小);
④双向最大匹配法(进行由左到右、由右到左两次扫描)
分词常用的算法包:
word分词
SCWS
FudanNLP
CC-CEDICT
MMSEG4J
盘古分词
结巴分词
四、文本分析步骤
·句法分析(Parsing): 是指处理非结构化文本使其具有一定的结构,供将来分析的过程。句法分析将文本进行解构,然后以一种更为结构化的方式来呈现。(unsturctured -> sturctured)
·搜索和检索 (Search and retrieval): 在一个语料库中识别包含例如特殊单词,短语,主题或者实体(如人或组织)等搜索项(search items)的文档。这些搜索项通常称为关键术语 (key term)。
·文本挖掘 (text mining): 指使用前两步产生的术语和索引来发现与感兴趣领域或问题相关的有意义的见解(discover meaningful insights)。
聚类(clustering) 和 分类 (classification) 都可以应用于文本挖掘。比如:将文档聚化成簇或者 分类文本以进行情感分析(sentiment analysis)。
文本挖掘可以利用来自各个研究领域的方法和技术,如统计分析(statistical analysis),信息检索(information retrieval),数据挖掘(data mining)和自然语言处理(natural language processing)等。
1.获取文本
一般来说网络文本的获取,主要是网页的形式。我们要把网络中的文本获取形成一个文本数据库(数据集)。利用一个爬虫(这是另外一个知识点),抓取到网络中的信息。爬取的策略有广度和深度爬取;根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分,主题爬取主要是在相关站点爬取或者爬取相关主题的文本,而通用爬虫则一般对此不加限制。爬虫可以自己写,当然现在网络上已经存在很多开源的爬虫系统。当然如果需要定制,自己写还是可以的。
2.对文本进行预处理
网页中存在很多不必要的信息,比如说一些广告,导航栏,html、js代码,注释等等,我们并不感兴趣的信息,可以delete掉。所以,我们还需要对文本中的信息进行筛选。
3.分词系统
经过上面的步骤,我们会得到比较干净的素材。我们知道,文本中起到关键作用的是一些词,甚至主要词就能起到决定文本取向。比如说一篇文章讲的是体育还是娱乐,肯定是对文章中的中心词进行分析得到的结果。那么怎么样才能找到那些能够影响中心意思的词语呢?
别忘了,在找出中心词之前,我们首先得在每个文本中得到所有词。这里就会用到一个分词系统或者说分词工具。
分词 (tokenization): 指从文本正文中分离(也叫做标记)单词 (seperating words)。
①按空格(spaces)来分词。(可能会把标点符号也给分出来,比如 day. )
②基于标点符号和空格来分词 (可能会把 we’ll, can’t, state-of-the-art 等直接分开)
③分词比想象中更困难 (résumé和 resume)
现在针对中文分词,出现了很多分词的算法,有最大匹配法、最优匹配法、机械匹配法、逆向匹配法、双向匹配法等等(可以参考各类文献)。我们经常用到的中科院的分词工具ICTCLAS,该算法经过众多科学家的认定是当今中文分词中最好的,并且支持用户自定义词典,加入词典;对新词,人名,地名等的发现也具有良好的效果。
通过很多分词工具分出来的出会出现一个词,外加该词的词性。比如说啊是语气助词。
比如我们对:(我们都是牛逼的中国人。)进行分词,得到的结果是:
我们/rr 都/d 是/vshi 牛/n 逼/v 的/ude1 中国/ns 人/n 。/wj
4.去除停顿词等
经过上面的步骤,我们已经把所有的词进行了分类。但是这些所有的词,并不都是我们所需要的,比如说句号(。)显然,句号对意思的表达没有什么效果。还有"是"、“的”等词,也没有什么效果。因为这些词在所有的文章中都大量存在,并不能反应出文本的意思,可以处理掉。当然针对不同的应用还有很多其他词性也是可以去掉的,比如形容词等。
5.特征选择
经过上面的步骤,我们基本能够得到有意义的一些词。但是这些所有的词都有意义吗?显然不是这样的,有些词会在这个文本集中大量出现,有些只是出现少数几次而已。他们往往也不能决定文章的内容。还有一个原因就是,如果对所有词语都保留,维度会特别高,矩阵将会变得特别特别稀疏,严重影响到挖掘结果。那么对这些相对有意义的词语选取哪一本分比较合理呢?针对特征选择也有很多种不同的方式,但是改进后的TF*IDF往往起到的效果是最好的。tf-idf 模型的主要思想是:如果词w在一篇文档d中出现的频率高,并且在其他文档中很少出现,则认为词w具有很好的区分能力,适合用来把文章d和其他文章区分开来。
下面是百度对TF、IDF的解释:
在一份给定的文件里,词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)
逆向文件频率 (inverse document frequency, IDF) 是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于保留文档中较为特别的词语,过滤常用词。
通过计算,对词进行排序,选取合适的词数当做特征。
6.利用算法进行挖掘
经过上面的步骤之后,我们就可以把文本集转化成一个矩阵。我们能够利用各种算法进行挖掘,比如说如果要对文本集进行分类,我们可以利用KNN算法,贝叶斯算法、决策树算法等等。
| 拓展阅读
让数据流动起来,开启业绩增长!
了解500+品牌零售商使用LinkFlow的场景用例