自然语言处理之关键字提取

关键字提取

对于关键字提取算法最经典的就是[TF-IDF]算法,这个我们已经有文章来讲解这个知识,我们来介绍一点不太一样的知识。

textRank

TF-IDF算法就是统计某个词在某些文档中的出现频率,这远远是不够的,而主体模型的关键字提取则是通过大量的文档学习发现主题的文档的隐含主题。textRank最早用于文本摘要的,基于句子维度,利用textRank对每个句子打分,挑选几句分高的作为摘要。

textRank是基于PageRank算法的大部分思想,我们前面已经有文章介绍这一算法的细节,这里我们只介绍不同点,PageRank是有向无权图,而textRank进行自动摘要是有权图,因为考虑某个句子的链接句的重要度以外还要考虑句子的相似性。

textRank的核心思想:

  • 如果一个单词出现在很多单词后面的话,那么说明这个单词比较重要
  • 一个TextRank值很高的单词后面跟着的一个单词,那么这个单词的TextRank值会相应地因此而提高

咱们和PageRank类比去了解textRank。

提取关键词,和网页中选哪个网页比较重要其实是异曲同工的,我们只需要想办法把图构建出来就好了。

图的结点其实比较好定义,就是词语,把文章拆成句子,每个句子再拆成单词,以单词为结点。

那么边如何定义呢?这里就可以利用n-gram的思路,简单来说,某个单词,只与它附近的n个单词有关,即与它附近的n个词对应的结点连一条无向边。

关键字提取就通过这样的思路解决啦

摘要抽取

摘要抽取实际上就是从一大段文字中抽取某些句子作为某一个文章的摘要。

用TextRank做单领域多文本的自动摘要的过程如下:

  • 把所有文章整合成文本数据,并把文本分割成单个句子;
  • 用WordAVG的方法,将每个句子中所有单词的词向量合并为句子的向量表示;
  • 计算句子向量间的相似性并存放在矩阵中,作为转移概率矩阵M;
  • 然后将转移概率矩阵转换为以句子为节点、相似性得分为边的图结构,用于句子TextRank计算;
  • 对句子按照TextRank值进行排序,排名最靠前的n个句子作为摘要。

思路十分简单,核心思想就是构建一个转移矩阵,然后不断用PageRank的思想进行转移直到收敛。

LDA 关键字提取

lda(在本站搜索lda)算法本站详细的讲过,本节我们来看看lda算法如何用到关键字提取中。TF-IDF和textRank算法能够满足大部分的需求,但是某些场景下,基于文档的关键词提取还是远远不够的。因为有些关键字不一定出现在文档中。例如一篇文章大量提到狮子、老虎但是没有提到动物。所以我们要引入主题模型。

说到主题模型实际上是认为词与文档之间没有必然联系,它们应当有另一个维度的串联,主题模型称这个串联是主题。每个文档都应该对应一个或是多个主题,而每个主题都对应一个词分布,通过主题得到每个文档的词分布。

p(widj)=k=1Kp(witk)×p(tkdj)(1.1)p(w_i|d_j)=\sum_{k=1}^{K} p(w_i|t_k) \times p(t_k|d_j) \tag{1.1}

P(文档)=P(主题)P(主题文档)(1.2)P(词|文档)=P(词|主题)P(主题|文档) \tag{1.2}

训练一个关键词提取算法需要以下步骤:

  • 加载已有的文档数据集
  • 加载停用词表
  • 对数据集中的文档进行分词
  • 根据停用词表,过滤干扰词
  • 根据训练集训练算法
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×