> For the complete documentation index, see [llms.txt](https://shangzhi-huang.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shangzhi-huang.gitbook.io/workspace/nlp-zhi-guan-jian-ci-ti-qu/lun-wen-ji-yu-wen-dang-zhu-ti-jie-gou-de-guan-jian-ci-chou-qu-fang-fa-yan-jiu/2.-ji-yu-wen-dang-nei-bu-xin-xi-gou-jian-zhu-ti-de-guan-jian-ci-chou-qu-fang-fa.md).

# 2. 基于文档内部信息构建主题的关键词抽取方法

要获取文档的主题结构，最直观的方法当然是利用文档内部的信息。在传统的词袋模型中，不同的词会描述不同的主题。例如，“温度”、“寒冷”和“冬天”等词语是在主题“气候”下的词语，他们之间的语义相似度要大于他们与其他主题的词语的相似度。

基于文档词汇聚类构建文档主题进行关键词抽取的方法，提高抽取关键词对文档主题的覆盖度。主要包括如下步骤：

* 候选词选取
* 词聚类，并选取聚类中心词
* 根据对中心词的覆盖程度，选择文档关键词

## 2.1 候选词选取

英语直接选择单词，中文先分词，然后去掉停用词后作为关键词候选词。不过要注意到一般的关键词都是ngram模式的，这个会在最后对单个词进行扩展。

## 2.2 词聚类

词聚类主要涉及两点，一是如何度量词之间的距离，也就是词的语义相似度；二是选择合适的聚类方法。

### 2.2.1 词汇语义相似度

**基于文档集内部信息**

通过设定一个窗口大小，计算在文档集合内，两个词在窗口内共同出现的次数作为其语义相似度(注：这个其实有点像word2vec的思想了，只是当时embedding的做法还不普遍)。

**基于维基百科词条**

将词条看作一个概念，利用tfidf值可以算出每个词在一个词条下的权重，对每个词条进行这样的计算就得到一个向量，维度就是词条的个数。

之后计算距离就欧氏，余弦，互信息都行。

### 2.2.2 聚类方法

层次聚类，谱聚类，信任传播聚类都行。

## 2.3 扩展中心词

聚类完可以得到每个类对应的中心词，前面我们知道由于最初候选词只选了单个词，然而大部分关键词都是名词短语，因此通过如下方法扩展：

* 词性标注，然后选择名词短语
* 从候选名词短语中选出涵盖一个或多个聚类中心词的短语

不过实验中，作者发现选出的很多的关键词只有一个单词。但实际上只有很少的关键词是单词。因此，作为后处理，本章选用一个常用词列表，将那些频繁出现的词过滤掉。

## 2.4 小结

这节主要思想是用文档集合的词聚类的簇的中心词来作为文档主题的表示，然后覆盖这些“主题中心词“就表示对文档主题有着不错的主题涵盖度。

但是实验中发现这种做法存在很多弊端，最主要一点是模型的表现很依赖聚类个数，然而目前尚没有非常好的方法来选择这个超参数。因此本章又用了常用词表的方法来过滤噪音作为对聚类方法的补充。

基于聚类的方法虽然可以一定程度提高关键词对于主题的覆盖度，但是由于聚类只使用了文档集合内部的词语，得到的主题结构有很大的局限性。
