文本挖掘基本流程概述,详细介绍分词及TF-IDF值计算

目录

  1. 获取语料
  2. 文本预处理
  3. 构造文本特征
    3.1 词袋表示
    3.2 词向量表示
  4. 特征选择处理
    4.1 特征选择
    4.2 特征降维
  5. 学习模型训练&适用
    5.1 模型训练学习
    5.2 模型评估
  6. 参考资料

图源:Text Mining

六大分支:基本流程(Basic Procedure)、图(Graph)、文档(Document)、词嵌入(Word Embedding)、序列标注(Sequential Labeling)、NLP基本假设(NLP Basic Hypothesis)


1 获取语料

1、标准开放公开测试数据集

比如国内的中文汉语有搜狗语料、人民日报语料;国际English的有stanford的语料数据集、semavel的数据集等。

2、爬虫抓取

获取网络文本,主要是获取网页HTML的形式,利用网络爬虫在相关站点爬取目标文本数据。

2 文本预处理

1、数据清洗

对于爬虫爬取的HTML原始文本,需要进行数据清洗过滤掉标签文本。网页中存在很多不必要的信息,比如说一些广告,导航栏,html、js代码,注释等。我们并不感兴趣的信息,可以delete掉,如果是需要正文提取,可以利用标签用途、标签密度判定、数据挖掘思想、视觉网页块分析技术等等策略抽取出正文。

2、分词

对于中文文本数据,比如一条中文的句子,词语词之间是连续的,而数据分析的最小单位粒度我们希望是词语,所以我们需要进行分词工作,这样就给下一步的工作做准备。

3、词性标注(可选)

词性标注POS的目的是为了让句子在后面的处理中融入更多的有用的语言信息。词性标注是一个经典的序列标注问题。不过对于有些文本处理任务,词性标注不是非必需的。

4、去停用词

停用词stopword是指那些对文本特征没有任何贡献作用的词语,比如:啊、的、是的、你、我、…………还有一些标点符号,这些我们不想在文本分析的时候引入,因此需要去掉,这些词就是停用词。


自定义分词函数

def splitSentence(inputFile, outputFile):stopwords = {}with open('D:/python/dachuang/wenbenwajue/bejing_data/beijing/beijing_data/stopword.txt', 'r',encoding='UTF-8') as f:fstop = f.readlines()fin = open(inputFile, 'r',encoding='UTF-8') # 以读的方式打开文件fout = open(outputFile, 'w+',encoding='UTF-8') # 以写的方式打开文件for eachWord in fstop:stopwords[eachWord.strip('\n')] = eachWord.strip('\n')for eachLine in fin:line = eachLine.strip() # 去除每行首尾可能出现的空格,并转为Unicode进行处理line1 = re.sub("[0-9\s+\.\!\/_,$%^*()?;; :-【】+\"\']+|[+——!,;:。?、~@#¥%……&*()]+", "",line)wordList = list(jieba.cut(line1)) # 用结巴分词,对每行内容进行分词outStr = ''  for word in wordList:if word not in stopwords:  outStr += word  outStr += '  'fout.write(outStr.strip() + '\n') # 将分词好的结果写入到输出文件fin.close()  fout.close()

3 构造文本特征

3.1 词袋表示

(1)count

先将关键的keywords作为文本特征,然后再用此最直接的方式进行句子表示,就是直接统计词频,然后将每一个句子或者文本篇章按照每一个特征出现的频率进行统计,这样处理后将得到句子或者文档对应的一个特征向量,向量的每个元素便是对应特征词的出现频数。

(2)TF-IDF

与count类似,不过对其进行了改进。TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TFIDF,TF词频(Term Frequency),IDF反文档频率(Inverse DocumentFrequency)。TF表示词条,在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。


TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)

1、TF的计算公式如下:TFw=NNwTF_w=\frac{N}{N_w}TFw=NwN其中N_w是在某一文本词条w中出现的次数,N表示该文本总词条数。

2、IDF的计算公式如下:IDFw=log(Yw+1Y)IDF_w=log(\frac{Y_w+1}{Y})IDFw=log(YYw+1)其中Y是语料库的文档总数,Y_w是包含词条w的文档数,分母加一是为了避免w未出现在任何文档中从而导致分母为0的情况。

3、TF-IDF即将TF和IDF相乘TF−IDFw=TFw∗IDFwTF-IDF_w=TF_w*IDF_wTFIDFw=TFwIDFw

从以上计算公式便可以看出,某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。


TF-IDF计算

corpus = traincorpus # 语料库count_vectorizer = CountVectorizer() # 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
transformer = TfidfTransformer() # 该类会统计每个词语的tf-idf权值tfidf = transformer.fit_transform(count_vectorizer.fit_transform(corpus)) # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
word = count_vectorizer.get_feature_names() # 获取词袋模型中的所有词语
weight = tfidf.toarray() # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重

3.2 词向量表示

(1)word2vec

(2)glove

DeepNLP的表示学习·词嵌入来龙去脉·深度学习(Deep Learning)·自然语言处理(NLP)·表示(Representation)
https://blog.csdn.net/scotfield_msn/article/details/69075227

4 特征选择处理

4.1 特征选择

在文本挖掘与文本分类的有关问题中,常采用特征选择方法。原因是文本的特征一般都是单词(term),具有语义信息,使用特征选择找出的k维子集,仍然是单词作为特征,保留了语义信息,而特征提取则找k维新空间,将会丧失了语义信息。

在解决一个实际问题的过程中,选择合适的特征或者构建特征的能力特别重要。这成为特征选择或者特征工程。特征选择时一个很需要创造力的过程,更多的依赖于直觉和专业知识,并且有很多现成的算法来进行特征的选择。 对于一个语料而言,我们可以统计的信息包括文档频率和文档类比例,所有的特征选择方法均依赖于这两个统计量。目前,文本的特征选择方法主要有:DF, MI, IG, CHI,WLLR,WFO六种。

  1. DF(Document Frequency)
  2. MI(Mutual Information)
  3. IG(Information Gain)
  4. CHI(Chi-square)
  5. WLLR(Weighted Log Likelihood Ration)
4.2 特征降维
  1. LDA(线性特征抽取)
  2. PCA(主成分分析)
  3. FA(因子分析)
  4. SVD(奇异值分解)
  5. NMF(非负矩阵分解)
  6. LSI或者LSA(潜在语义分析)

5 学习模型训练&适用

5.1 模型训练学习
  1. 文本分类:

KNN、SVM、Naive Bayes、决策树、GBDT、xgboost

  1. 文本聚类:

K-means、agent、divided、DBSCAN

5.2 模型评估
  1. 保持、随机二次抽样、交叉验证、自助法
  2. 准确率,错误率,精确度,召回率
  3. ROC曲线、AUC曲线

6 参考资料

  • 数据挖掘NLP之文本挖掘文本处理通用流程
  • 机器学习中,使用Scikit-Learn简单处理文本数据

文本挖掘基本流程概述 分词和TF-IDF值计算方法介绍相关推荐

  1. 中文文本挖掘预处理流程总结

    在对文本做数据分析时,我们一大半的时间都会花在文本预处理上,而中文和英文的预处理流程稍有不同,本文就对中文文本挖掘的预处理流程做一个总结. 1. 中文文本挖掘预处理特点 首先我们看看中文文本挖掘预处理 ...

  2. 文本挖掘预处理流程总结(2)— 英文

    目录 1.  英文文本挖掘预处理特点 2.  英文文本挖掘预处理 2.1 预处理一:数据收集 2.2  预处理二:除去数据中非文本部分 2.3  预处理三:拼写检查更正 2.4  预处理四:词干提取( ...

  3. 文本挖掘预处理流程总结(1)— 中文

    目录 1. 中文文本挖掘预处理特点 2.  中文文本挖掘预处理 2.1 预处理一:数据收集 2.2  预处理二:除去数据中非文本部分 2.3 预处理三:处理中文编码问题 2.4 预处理四:中文分词 2 ...

  4. 关键词提取算法—TF/IDF算法

    关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...

  5. 中文 lda数据预处理_英文文本挖掘预处理流程总结

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 整理:AI算法之心 作者:刘建平Pinard   博客地址:https://www.c ...

  6. python英文文本分析和提取_英文文本挖掘预处理流程总结

    在中文文本挖掘预处理流程总结中,我们总结了中文文本挖掘的预处理流程,这里我们再对英文文本挖掘的预处理流程做一个总结. 1. 英文文本挖掘预处理特点 英文文本的预处理方法和中文的有部分区别.首先,英文文 ...

  7. R语言︱文本挖掘——jiabaR包与分词向量化的simhash算法(与word2vec简单比较)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- <数据挖掘之道>摘录话语:虽然我比 ...

  8. SAP SD基础知识之SD常见流程概述

    SAP SD基础知识之SD常见流程概述 正常销售.正常退货.第三方销售.跨公司销售.独立采购.寄售.免费赠送,这些就是项目实践中SD模块里最常见的流程了,当然还有一些不太常用的流程没有列举进来,不再本 ...

  9. 搜索引擎:文本分类——TF/IDF算法

    原理 TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类.TFIDF实际上是:TF * IDF,TF ...

  10. ETL流程概述及常用实现方法

    ETL是英文Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.常见于数据仓库开发中将数 ...

最新文章

  1. 写在阿里去IOE一周年
  2. 谈谈关于个人提升的一些思考
  3. iapp启动图代码_代码神器:拒绝重复编码,这款IDEA插件了解一下.....
  4. [蓝桥杯2019初赛]年号字串-数论+模拟
  5. markdown java 代码高亮_MarkdownPad2使用代码高亮插件
  6. ZZULIOJ 1125: 上三角矩阵的判断
  7. c++驱动键鼠源码_Android移植FM芯片RDA5807M驱动指导
  8. 第二届字节跳动夏令营启动全球报名,图灵奖得主授课
  9. java for语句(翻译自Java Tutorials)
  10. atitit.提取zip rar文件列表 java php c# 的原理与设计
  11. app 怎么实现后端对前端的通知功能_app测试流程
  12. 【安全资讯】熊猫烧香之后15年,网络变安全了吗?
  13. sumif单列求和_excel sumif单条件求和 使用SUMIF函数统计单字段多条件求和的方法...
  14. 复杂的世界 简单的规律 —— 2021年诺贝尔物理奖科学背景介绍及解读
  15. 读书一定要掌握正确的阅读方法:读书10
  16. 细说强网杯Web辅助
  17. bootstrap table 实现父子表
  18. python输出假分数_解析ArcGis的标注(一)——先看看分数式、假分数式标注是怎样实现的...
  19. 充电桩云平台-一站式运营服务平台
  20. 2022全球隐私计算专利排行榜发布,微众银行位居全球银行业第一

热门文章

  1. android 开门动画,Android之高仿微信“开门动画”(六)
  2. 计算机右键新建显示为空,Win7鼠标右键新建为空这么办 win7电脑右键选项为空白如何解决...
  3. cesium api 学习之旋转角 heading(yaw)、pitch、roll
  4. 类的继承------C++
  5. 计算机的中mb b单位的关系,b、B、KB、MB、GB 的关系?
  6. 如何将视频旋转180度播放
  7. Cadence16.6 PSpice仿真步骤---以分立器件搭建的H桥电路仿真为例
  8. android分享微信获取资源失败怎么办,android 调用系统分享微信失败:获取资源失败...
  9. 基于tcp文件传输协议C语言,文件传输协议的(C语言)实现
  10. win10下安装ubuntu双系统