blog0 基于图的中文段文本无监督关键词抽取概述

2021SC@SDUSC

AutoKeyGen框架

关键短语生成的目的是用一个突出的短语的集合来总结长文档。深度神经模型在这项任务中取得了显著的成功,能够预测文档中甚至没有的关键短语。然而,这种抽象性是以牺牲大量的注释数据为代价而获得的。于是,我们提出了一种新的关键短语生成方法,AutoKeyGen无需任何人工注释的监督大量的实验表明,AutoKeyGen的性能优于所有无监督基线,在某些情况下甚至可以击败强监督方法。

AutoKeyGen框架部分实际示例


图1.我们提出的AutoKeyGen框架的概述和部分示例。这个示例的完整版本可以在我们的案例研究中找到

具体来说,先关注之前的工作从所有文档中提取候选呈现的关键短语,并将它们汇集到一个短语库中。从目前的短语库中,可以通过部分匹配过程为每个文档绘制候选缺失的关键短语,要求候选短语中的每个符号词都应该存在于输入文档中。再对这两种类型的关键短语进行排序,需要融合无监督关键短语提取方法中两种流行的度量,即在词汇水平上的TF-IDF分数和在语义水平上嵌入相似度。最后进一步利用这些排名最高的存在和缺失的候选数据作为“银”数据来训练一个深度生成模型。该生成模型有望通过偏置波束搜索方法来增加缺失的关键短语,该方法鼓励模型从输入文档而不是词汇中预测单词。

AutoKeyGen具体实现方法

AutoKeyGen过程如下

  1. 将候选文档中显示所有文档的关键短语作为一个短语库,然后为每个文档绘制候选缺失关键短语;
    短语库建设:通过汇集从原始文档集合D中的每个文档中提取的当前候选项来构建一个短语库。
    缺失候选词生成:部分匹配方法。给定一个输入文档x,迭代短语库中的所有短语,并将所有令牌出现在x中(在启动之后)的短语作为候选项。因为短语库是巨大的,并且会有太多的候选词可以部分出现在x中,为了提高效率,我们通过一个反向索引映射文档标记到短语库来实现这个过程。

  2. 根据TF-IDF信息和文档和候选短语之间的相似性对所有这些候选文档进行排序;
    嵌入相似性:现代嵌入方法,如Doc2Vec,能够将短语和文档编码到一个共享的潜在空间中,然后语义相关性可以通过该空间中的余弦相似性来度量,为输入文档及其候选短语生成300维向量。具体来说,我们将文档x和候选短语c的嵌入分别表示为E(x)和E©。它们的语义相似性被定义为:
    在这里插入图片描述TF-IDF信息:词汇水平的相似性,对于语料库D中的文档x,短语c的TF-IDF得分计算为:
    在这里插入图片描述
    其中|x|为文档x中的单词数,TF(c,x)为x中的c频率,DF(c,D)为D中c的文档频率。
    融合的排名
    当文档长度不同时,基于嵌入的相似性和TF-IDF具有不同的行为。文档较短或相对较长的时,语义表示学习,如Doc2Vec是可靠的。文档足够长时,TF-IDF工作得更稳定。因此,对于当前的关键短语,我们建议使用几何平均值将它们组合起来,如下,
    在这里插入图片描述
    RankScore(x,c)越高,候选短语c就越有可能是文档x的关键短语

  3. 使用从第二步获得的银标签来训练一个Seq2Seq生成模型,以生成更多的候选短语,这些短语可能在文档中缺失或在前面的步骤中被遗漏;
    经典编码器解码器模型:编码器用BiLSTM实现,解码器实现了LSTM。编码器将x中的标记序列映射到连续隐藏表示序列,其中|x|是文档的长度,然后RNN解码器以自动回归的方式生成目标键短语标记(|y|表示键短语中的标记数量):
    在这里插入图片描述
    Seq2Seq生成模型:使用引导光束搜索来为每个文档生成不同的关键短语。我们只用银标签来训练模型,为了提高生成质量,我们鼓励解码器模型生成出现在输入文档x中的单词。即我们将在输入文档中出现的单词的概率增加了两倍。
    在这里插入图片描述
    表1:数据集的统计数据。只有受监督的模型CopyRNN使用文档关键短语标签和验证集。所有其他方法都使用来自KP20k训练集的原始文档作为输入。
    与复制机制的关系。通过假设输入文档中的所有字符都遵循编码器-解码器模型,估计的相似分布复制机制对于生成关键字提取很有用,因为它给输入文档中存在的单词很高的概率。这是通过一个额外的概率项来实现的。
    在这里插入图片描述
    其中σ是一个非线性函数,W是一个学习到的参数矩阵,Z是用于归一化的分数之和。对于CopyRNN,生成yt的概率是pg和pc的和。

源码下载及环境配置

源码下载:
源码: https://github.com/Jayshen0/%20 Unsupervised-Deep-Keyphrase-Generation
Pke:https://github.com/boudinfl/pke
数据集:https://github.com/memray/OpenNMT-kpg-release
环境配置:

  1. 版本要求
    Python及其第三方库
    (1) Python3.7.6
    (2) 第三方库如
    ① Numpy1.18.1 支持python3.5-3.8
    ② Matplotlib3.1.3 支持python3.6-3.8
    ③ Scipy1.4.1 支持python3.5-3.8
    ④ Keras2.3.1 支持python3.5-3.8
    ⑤ Scikit_learn0.22.1 支持python3.5-3.8
    ⑥ Scikit_image0.16.2 支持python3.6-3.8
  2. 深度学习框架
    (1) 推荐Pytorch 1.1.0支持cpu/gpu
    (2) 或tensorflow 1.14 支持python3.5-3.7,python2.7;支持cpu/gpu
  3. Cuda (gpu版需要)
    (1) cuda 10.1
    (2) Cudnn 7.6.5 for cuda 10.1(与cuda版本对应)

官方下载链接

  1. Python3.7.6
    (1)Windows https://www.python.org/downloads/windows/
    (2)Linux https://www.python.org/downloads/source/

  2. Pytorch1.1.0
    https://pytorch.org/get-started/locally/

  3. Cuda10.1
    CUDA Toolkit 10.1 original Archive | NVIDIA Developer进入链接后选择对应的操作系统。
    Cuda官方安装教程
    Windows
    https://docs.nvidia.com/cuda/pdf/CUDA_Installation_Guide_Windows.pdf
    Linux
    https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

  4. Cudnn7.6.5 for Cuda 10.1(与Cuda版本对应)
    NVIDIA cuDNN | NVIDIA Developer
    进入链接后选择对应的操作系统。
    Cudnn官方安装教程
    Windows
    https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-windows
    Linux
    https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-linux

小组任务及分工

任务目标
输入一个文档x,输出x对应的一个关键短语列表y(y既包含present关键短语,也包含absent短语)。
课题意义

  1. 关键词短语生成的目的是生成一个短语列表,以总结和描述长文档(例如,研究论文和新闻文章)。它对于诸多自然语言处理下游任务如信息检索、文本摘要和文本分类等具有重要应用价值。
  2. 无监督方法不依赖于大量的标注数据。

步骤或分工

  1. 给定语料库,首先构建短语库(依据所有文档中出现的present短语)
  2. 依据构建的短语库,提取每个文档的候选absent短语
  3. 依据步骤1、2生成的候选短语,利用tf-idf和词向量的相似性等属性,进行rank(贴标签)
  4. 训练一个absent关键短语生成模型
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 利用Python实现中文文本关键词抽取可以采用tf-idf、TextRank和Word2Vec等方法。 首先是tf-idf方法。它通过计算每个词在文本中的重要性,将重要性较高的词作为关键词抽取出来。在Python中,可以使用sklearn库的TfidfVectorizer类来实现。首先,将文本数据进行分词,然后使用TfidfVectorizer对分词后的文本进行向量化,最后通过指定关键词数量的方式,提取出重要的关键词。 其次是TextRank方法。它是基于的排序算法,通过把文本的句子或词语构建成一个模型,利用模型中的节点之间的边权重来衡量节点的重要性。在Python中,可以使用jieba库进行分词,并使用textrank4zh库来实现TextRank算法。将分词后的文本传入textrank4zh的接口,设置关键词的数量,可以得到抽取出来的关键词。 最后是Word2Vec方法。它是通过将文本数据转化为词向量,然后通过计算词向量之间的相似度来抽取关键词。在Python中,可以使用gensim库来实现Word2Vec算法。首先,将文本数据进行分词,然后通过gensim的Word2Vec类将分词后的文本转化为词向量。通过计算词向量之间的余弦相似度或欧氏距离,找到与其他词向量相似度高的词作为关键词。 综上所述,利用Python实现中文文本关键词抽取可以采用tf-idf、TextRank和Word2Vec等方法,根据需求选择合适的方法进行关键词抽取。每种方法都有其特点和适用场景,可以根据具体情况进行选择和调整。 ### 回答2: 中文文本关键词抽取分别采用TF-IDF、TextRank和Word2Vec词聚类是基于Python的三种常用方法。 TF-IDF是一种常用的文本特征提取方法,它通过计算一个词在文档中的出现频率和在整个语料库中的逆文档频率来确定词的重要性。在Python中,可以使用sklearn库的TfidfVectorizer实现中文文本关键词抽取。通过构建TF-IDF矩阵,可以获得文本中的关键词和它们的权重。 TextRank是一种基于的排序算法,用于提取文本中的关键词和关键句。它通过利用词之间的共现关系构建一个,并根据词之间的连接强度进行排名。在Python中,可以使用pytextrank库来实现TextRank算法,提取中文文本中的关键词。 Word2Vec词聚类是一种将词转换为向量表示的方法,通过将词映射到一个n维向量空间中,使得具有相似含义的词在向量空间中的距离较近。在Python中,可以使用gensim库的Word2Vec方法来训练中文文本数据,并将词转换为对应的向量表示。通过对词向量进行聚类,可以得到相关的词组。 综上所述,通过使用Python中的TF-IDF、TextRank和Word2Vec方法,可以实现中文文本关键词抽取。每种方法都有其独特的优势和适用场景,根据具体需求选择适合的方法进行文本处理和分析。 ### 回答3: 中文文本关键词抽取是一种重要的文本挖掘任务,它可以帮助我们快速理解和提取文本的主题信息。在Python中,我们可以利用不同的库和算法来实现中文文本关键词抽取,下面将介绍tf-idf、textrank和word2vec三种常用方法。 1. tf-idf(Term Frequency-Inverse Document Frequency)是一种经典的文本特征提取方法。它通过计算单词在文本中出现的频率和在整个文集中出现的频率,来衡量单词的重要性。在Python中,我们可以使用sklearn库中的TfidfVectorizer模块来实现tf-idf的关键词抽取。 2. textrank是一种基于的排序算法,通过计算单词之间的相似度以及单词与整个文本之间的关系,来确定关键词的重要性。在Python中,我们可以使用jieba库和networkx库来实现textrank的关键词抽取。 3. word2vec是一种基于神经网络的词向量表示方法,它可以将单词表示为具有语义信息的向量。通过计算单词向量之间的相似度,可以得到与文本主题相关的关键词。在Python中,我们可以使用gensim库来实现word2vec的关键词抽取。 另外,词聚类是一种将具有相似语义的单词聚集在一起的方法,可以进一步深化对文本关键词的理解。在Python中,我们可以使用scikit-learn库中的KMeans算法和聚类评估方法来实现词聚类的任务。 总之,利用Python实现中文文本关键词抽取可以使用tf-idf、textrank和word2vec等方法,并可以结合词聚类进一步分析单词之间的相似性和关联关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值