采集内容插入词库(基于TF-IDF的关键词抽取方法,帮助读者快速理解文本信息)

优采云 发布时间: 2021-12-31 20:14

  采集内容插入词库(基于TF-IDF的关键词抽取方法,帮助读者快速理解文本信息)

  Text关键词 抽取是一种高度浓缩文本信息的有效方法。通过3-5个词准确概括文章主题,帮助读者快速理解文章信息。目前文本提取的方法主要有四种:基于TF-IDF的关键词提取、基于TextRank的关键词提取、基于Word2Vec词聚类的关键词提取、关键词 结合多种算法的提取。在使用前三种算法进行关键词抽取的学习过程中,笔者发现网上有很多使用TF-IDF和TextRank方法抽取关键词的例子。代码和步骤比较简单,但是使用Word2Vec词聚类的方法,网上的资料并没有明确的表达过程和步骤。因此,本文采用TF-IDF方法、TextRank方法和Word2Vec词聚类方法实现专利文本的提取(也适用于其他类型的文本)。通过理论与实践相结合,一步步的理解、学习、实现中文文本抽取关键词。

  1 概览

  一个文档的关键词相当于N个最能表达文档主要目的的词,也就是文档最重要的词。因此,文本关键词抽取问题可以转化为重要词对于性排序问题,选择前N个词作为文本关键词。目前主流的文本提取方法主要分为以下两类:

  (1)基于统计的关键词抽取方法

  该方法根据词频等统计信息计算文档中词的权重,按照权重值的顺序提取关键词。 TF-IDF 和 TextRank 都属于此类方法。其中,TF-IDF方法通过计算单个文本词频(Term Frequency,TF)和逆文档频率(Inverse Document Frequency,IDF)来获得词权重; TextRank方法是基于PageRank的思想,通过词共现窗口构建共现网络,计算词得分。这种方法简单易实现,适用性强,但没有考虑词序问题。

  (2)关键词基于机器学习的提取方法

  该方法包括SVM、朴素贝叶斯等监督学习方法,以及K-means、层次聚类等无监督学习方法。在这类方法中,模型的好坏取决于特征提取,而深度学习是一种有效的特征提取方式。谷歌推出的 Word2Vec 词向量模型是自然语言领域具有代表性的学习工具。它在训练语言模型的过程中将字典映射到更抽象的向量空间。每个词都由一个高维向量表示。向量空间中两点的距离对应两个词的相似度。

  基于以上研究,本文分别采用TF-IDF方法、TextRank方法和Word2Vec词聚类方法,使用Python语言开发实现文本提取关键词。

  2 开发环境准备2.1 Python 环境

  在python官网下载电脑对应的python版本。作者使用的Python版本2.7.13.

  2.2 个第三方模块

  本实验Python代码的实现使用了多个知名的第三方模块,主要模块如下:

  (1)解霸

  目前使用最广泛的中文分词组件。下载链接:

  (2)Gensim

  用于主题模型、文档索引和*敏*感*词*语料库相似性索引的 Python 库,主要用于自然语言处理 (NLP) 和信息检索 (IR)。下载链接:

  本例中维基中文语料处理和中文词向量模型构建需要该模块。

  (3)熊猫

  用于高效处理大型数据集和执行数据分析任务的 python 库是一个基于 Numpy 的工具包。

  下载链接:

  (4)Numpy

  用于存储和处理大型矩阵的工具包。

  下载链接:

  (5)Scikit-learn

  用于机器学习的python工具包。 python 模块引用名称是 sklearn。安装前需要两个 Python 库,Numpy 和 Scipy。

  官网地址:

  本例中主要使用了本模块中的feature_extraction、KMeans(k-means聚类算法)和PCA(pac降维算法)。

  (6)Matplotlib

  Matplotlib 是一个用于绘制二维图形的 Python 图形框架。

  下载链接:

  3 数据准备3.1个样本语料

  正文以汽车行业的10项专利作为样本数据集,见文件“data/sample_data.csv”。该文件依次收录编号(id)、标题(title)和摘要(abstract)三个字段。 关键词的提取过程中都涉及到标题和摘要。您可以根据自己的样本数据调整数据读取代码。

  3.2 停用词词典

  本文使用中科院计算所中文自然语言处理开放平台发布的中文停用词表,收录1208个停用词。下载链接:

  另外,由于本例的样本是专利文本,词汇专业性很强,需要手动添加停用词。您可以直接将它们添加到上面的停用词列表中。每一行都是一个停用词。请参阅文件“data /stopWord.txt”。在这个例子中,作者在文件顶部手动添加了六个停用词“包括、相对、免费、使用、本发明和组合”以进行演示。您可以根据实际情况删除或删除它们。添加停用词。

  4 基于TF-IDF的文本提取方法关键词4.1 TF-IDF算法思路

  词频(TF)是指给定词在当前文档中的出现频率。由于同一个词在长文档中的词频可能高于短文档,因此需要根据文档的长度对给定词进行归一化,即给定词的个数除以总数当前文档中的单词数。

  逆文档频率 (IDF) 是衡量单词普遍重要性的指标。也就是说,如果一个词只出现在少数文件中,则说明它更能代表文件的主题,权重也更大;如果一个词出现在大量的文档中,说明它代表什么不清楚,它的权重应该很小。

  TF-IDF的主要思想是,如果某个词在一篇文章文章中出现频率较高,而在其他文章中出现频率较低,则认为该词可以更好地代表文章 的当前含义。即一个词的重要性与其在文档中出现的次数成正比,与其在语料库中在文档中出现的频率成反比。

  计算公式如下:

  

  4.2 TF-IDF文本关键词提取方法流程

  由上可知,TF-IDF对所有候选文本关键词进行加权处理,并根据权重对关键词进行排序。假设Dn为测试语料的大小,算法的关键词提取步骤如下:

  (1)对于给定的文本D,进行分词、词性标注、去除停用词等数据预处理操作。本小节采用口吃分词,保留'n', 'nz','v','vd','vn','l','a','d'这几个词,最后得到n个候选关键词,即D=[t1,t2, ...,tn];

  (2)计算词ti在文本D中的词频;

  (3) 计算词ti在整个语料库中的IDF=log (Dn /(Dt +1)),Dt为词ti在语料库中出现的文档数;

  (4)计算单词ti的TF-IDF=TF*IDF,重复(2)—(4)得到所有候选关键词TF-IDF值;

  (5)将候选关键词的计算结果倒序排列,得到前N个词作为正文关键词。

  4.3 代码实现

  Python 第三方工具包 Scikit-learn 提供了 TFIDF 算法的相关功能。本文主要使用sklearn.feature_extraction.text下的TfidfTransformer和CountVectorizer函数。其中,CountVectorizer函数用于构建语料中的词频矩阵,TfidfTransformer函数用于计算词的tfidf权重。

  注意:TfidfTransformer()函数有一个参数smooth_idf,默认值为True,如果设置为False,IDF计算公式为idf=log(Dn /Dt) + 1。

  基于TF-IDF方法实现文本关键词提取代码执行步骤如下:

  (1)读取示例源文件sample_data.csv;

  (2)获取每行记录的title和summary字段,将这两个字段拼接起来;

  (3) 加载自定义停用词列表stopWord.txt,对拼接后的文本进行数据预处理操作,包括分词、过滤词性匹配的词、去除停用词,以及用空格分隔拼接成文本;

  (4) 遍历文本记录,将预处理后的文本放入文档集语料库中;

  (5)使用CountVectorizer()函数得到词频矩阵,a[j][i]代表第i个文档中第j个词的词频;

  (6)使用TfidfTransformer()函数计算每个词的tf-idf权重;

  (7)得到词袋模型中的关键词和对应的tf-idf矩阵;

  (8) 遍历tf-idf矩阵,打印每个文档的词汇量和对应的权重;

  (9)对于每个文档,按照词权值降序排列,选择topN个词作为文本关键词,写入数据框;

  (10)将最终结果写入文件keys_TFIDF.csv。

  最终运行结果如下图所示。

  

  5种基于TextRank的文本提取方法关键词5.1 PageRank算法思路

  TextRank算法是基于PageRank算法的,所以在介绍TextRank之前必须先了解一下PageRank算法。

  PageRank 算法是谷歌创始人拉里佩奇和谢尔盖布林于 1998 年在斯坦福大学攻读*敏*感*词*期间发明的。它用于根据网页之间的超链接计算网页的重要性。技术。该算法借鉴了学术界判断学术论文重要性的方法,即检查论文的引用次数。基于以上思想,PageRank算法的核心思想是网页的重要性由两部分组成:

  ①如果一个网页被大量其他网页链接,则说明这个网页更重要,即链接网页的数量;

  ②如果一个网页链接到排名靠前的网页,说明这个网页更重要,也就是链接网页的权重。

  一般情况下,网页的PageRank值(PR)计算公式如下:

  

  其中,PR(Pi)为第i个网页的重要性排名,即PR值; ɑ为阻尼系数,一般设置为0.85; N是网页总数; Mpi 是第 i 个网页的总数 外链网页的集合; L(Pj)为第j个网页的外链数。

  初始阶段,假设所有网页的排名为1/N,根据上述公式计算每个网页的PR值。当迭代稳定后,停止迭代计算,得到最终结果。一般情况下,迭代10次左右就基本收敛了。

  5.2 TextRank 算法思路

  TextRank 算法是 Mihalcea 和 Tarau 在 2004 年在研究自动摘要提取时提出的,并在 PageRank 算法的思想上进行了改进。该算法将文本拆分为词表作为网络节点,形成词表网络图模型,将词之间的相似关系视为推荐或投票关系,从而计算出每个词的重要性。

  基于TextRank的

  Text关键词抽取就是利用局部词汇关系,即共现窗口,对候选关键词进行排序。该方法的步骤如下:

  (1)对于给定的文本D,进行分词、词性标注、去除停用词等数据预处理操作。本小节采用口吃分词,保留'n', 'nz','v','vd','vn','l','a','d'这几个词,最后得到n个候选关键词,即D=[t1,t2, ...,tn];

  (2) 构造候选关键词图G=(V,E),其中V为节点集,由候选关键词组成,使用共现关系构造任意两个点 只有当它们对应的词在长度为K的窗口中共同出现时,两个节点之间才有一条边。K代表窗口的大小,即最多K个词可以同时出现;

  (3)根据公式迭代计算每个节点的权重,直到收敛;

  (4)将节点权重逆序排序,得到前N个词作为文本关键词.

  注意:jieba 库中收录的 jieba.analysis.textrank 函数可以直接实现 TextRank 算法。本文使用该函数进行实验。

  5.3 代码实现

  基于TextRank方法实现文本关键词代码执行步骤如下:

  (1)读取示例源文件sample_data.csv;

  (2)获取每行记录的title和summary字段,将这两个字段拼接起来;

  (3)加载自定义停用词列表stopWord.txt;

<p>(4)遍历文本记录,使用jieba.analysis.textrank函数过滤掉指定词性和topN文本关键词,并将结果存入数据框;

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线