返回教程列表
文本分析基础教程主题模型LDA主题一致性Word2Vec

LDA 主题模型完整教程:从生成过程与狄利克雷先验,到自动定主题数和三种向量化方式

一整年的留言,几十份访谈稿,怎样看清它们反复在谈哪几类事情?这篇教程从 LDA 的生成过程讲起,说明一段话怎样被看成几个主题按比例混合写成,α 和 β 两个狄利克雷先验分别管什么,模型又怎样用变分贝叶斯从词语共现里估出主题。接着讲 TATOOLS 怎样把每个文件切成片段、筛出进入模型的词,自动定主题数时怎样先排除退化主题再比较一致性,以及词袋、语义向量和 Word2Vec 三种向量化方式各自怎样建立词和词的关系。后半部分逐项讲报告,从主题标签和代表性原文,到占比与平均权重的区别,再到一致性、PMI 和困惑度这几项指标各量什么,每一项都配公式和可以手算的例子。最后给出论文方法部分的写法示例。

作者:TATOOLS 研究团队|更新于 2026-09-23|19242 个字符|约 65 分钟读完

手里有一整年的市长信箱留言,或者三十份课堂观察记录,最先想知道的往往是这批材料反复在谈哪几类事情。一条一条读能得到答案,只是材料一多,读到后面就记不清前面。主题模型(Topic Model,从大量文本里自动归纳话题的方法)先替你把材料过一遍,归纳出若干主题,每个主题是一组经常一起出现的词。

LDA(潜在狄利克雷分配,Latent Dirichlet Allocation)是 Blei、Ng 和 Jordan 在 2003 年提出的主题模型。它假设一段话由几个主题按比例混合写成,每个主题各有一组偏爱的词,再从词语在同一段话里一起出现的规律,反推出材料里有哪些主题、每段话里各占多少。社会科学很早就用它读大规模文本。DiMaggio、Nag 和 Blei 2013 年用它分析美国报纸怎样报道政府的艺术资助,Grimmer 和 Stewart 同年在《Political Analysis》上系统讨论了它在政治文本研究里的用法。

在 TATOOLS 的【高级LDA主题模型】里【上传文档】,每个文件会切成片段,各自训练一套主题。报告给出每个主题的高概率词、一个简短的主题标签和几段代表性原文,列出每个片段属于各个主题的概率,还有一致性、PMI 和困惑度几项指标。主题数可以自己定,也可以交给 TATOOLS 在 3 到 12 之间自动选。词和词之间的关系有三种建立方式,词袋按词语一起出现来算,语义向量把意思相近的片段拉到一起,Word2Vec 从上下文里学出词义。

这篇教程先讲 LDA 模型本身,从它对文本生成方式的假设讲起,再讲两个先验参数管什么,以及模型怎样从文本里估出主题。接下来讲材料怎样变成模型能读的词袋和主题数怎么定,再比较三种向量化方式各自怎样工作。报告里的每一项指标放在后半部分逐个讲,最后给出论文方法部分的写法。

01

LDA 假设一段文字是怎样写出来的

先看一段访谈转写,【房租一年涨了两成,孩子上学还得跨区,每天路上一个多小时】。这段话大半在说住房,小半在说上学。LDA 用两组概率描述它。一组是这段话里各个主题占多少,比如住房 0.7、教育 0.3;另一组是每个主题偏爱哪些词,住房主题里【房租】【租金】【房东】的概率高,教育主题里【学校】【学区】【老师】的概率高。

LDA 把一批文本看成按下面的步骤写出来的,这个过程叫生成过程(Generative Process)。模型假设文本是这样来的,再倒推出最可能的两组概率。

· · ·

对每个主题 k = 1, …, K

    φ_k ~ Dirichlet(β) 主题 k 的词分布

对每个片段 d

    θ_d ~ Dirichlet(α) 片段 d 的主题比例

    对片段 d 里的第 n 个词

        z_(d,n) ~ Categorical(θ_d) 先按比例抽一个主题

        w_(d,n) ~ Categorical(φ_z) 再从这个主题的词分布里抽一个词

K 是主题数。φ_k 是主题 k 在整个词表上的概率分布,θ_d 是片段 d 在 K 个主题上的比例,两者都是加起来等于 1 的一组数。把中间抽主题的一步合并掉,一个词在片段 d 里出现的概率,是各个主题贡献之和。

· · ·

p(w | d) = Σ_k θ_(d,k) × φ_(k,w)

用开头那段话手算一次。θ_d = (0.7, 0.3),【租金】在住房主题里的概率是 0.10,在教育主题里是 0.01。

· · ·

p(租金 | d) = 0.7 × 0.10 + 0.3 × 0.01 = 0.07 + 0.003 = 0.073

住房主题贡献了 0.07,教育主题只贡献 0.003,【租金】这个词几乎全由住房主题带来。

这套假设有两个直接后果。第一,一段话可以同时属于几个主题,统计上叫混合成员(Mixed Membership)。聚类给每段话贴一个标签,LDA 给每段话一组比例,一段同时谈房租和上学的话,两个主题都能分到份额。第二,模型只看每个词出现了几次,词的先后顺序不进入计算,这个假设叫词袋假设(Bag of Words)。【支持提高补贴】和【反对提高补贴】用的词几乎一样,在 LDA 里会落进同一个主题。LDA 擅长回答材料在谈哪些议题、各议题占多大分量,立场和态度要靠情感分析或人工编码另外判断。

主题本身是词表上的一组概率,它叫什么名字,是研究者读了高概率词和原文以后的归纳。DiMaggio 等人把 LDA 的主题读作新闻报道的框架(Frame),用的就是这种解读方式。

TATOOLS 报告的【主题分析】为每个主题画出 φ_k 里概率最高的 10 个词,【片段归类表】为每个片段列出 θ_d 里最大的两个主题和它们的概率。

02

α 和 β 管的是什么

两条短评,【外卖送得慢】和【外卖送得慢,包装也漏了,客服还不理人】。前一条只说一件事,后一条说了三件。α 决定模型倾向于让一段话集中在少数几个主题上,还是均匀摊到很多主题上。β 在主题一侧做同样的事,管的是一个主题的概率集中在少数几个词上还是分散开。

θ_d 和 φ_k 的先验都是狄利克雷分布(Dirichlet Distribution,专门给一组加起来等于 1 的数指定概率的分布)。K 维狄利克雷分布的密度和参数的关系是这样的。

· · ·

p(θ | α) ∝ Π_k θ_k^(α_k − 1)

α_k < 1:概率堆在少数几个分量上,θ 偏稀疏

α_k = 1:所有比例组合同样可能

α_k > 1:各分量趋向平均

先验的作用在估计时看得最清楚。每个词分到哪个主题确定以后,θ 和 φ 的估计值等于计数加上先验,再归一化。

· · ·

θ_(d,k) ≈ (n_(d,k) + α) / (N_d + K × α)

φ_(k,w) ≈ (n_(k,w) + β) / (n_k + V × β)

n_(d,k):片段 d 里分给主题 k 的词数

N_d:片段 d 的词数

n_(k,w):词 w 分给主题 k 的次数

n_k:分给主题 k 的全部词数

V:词表里的词数

α 相当于给每个主题预先垫上的虚拟词数。一个 20 个词的片段,K = 3,15 个词分给主题 1,5 个分给主题 2,主题 3 一个也没有。

α 主题 1 主题 2 主题 3
0.1 15.1 / 20.3 ≈ 0.744 5.1 / 20.3 ≈ 0.251 0.1 / 20.3 ≈ 0.005
1 16 / 23 ≈ 0.696 6 / 23 ≈ 0.261 1 / 23 ≈ 0.043

α = 0.1 时主题 3 几乎为零,α = 1 时它分到了 4.3%。β 在主题一侧起同样的作用。主题 k 一共分到 200 个词,词表有 1,000 个词,【租金】分到 20 次,【押金】一次也没分到。

β 租金 押金
0.01 20.01 / 210 ≈ 0.095 0.01 / 210 ≈ 0.00005
0.1 20.1 / 300 = 0.067 0.1 / 300 ≈ 0.0003

β 越大,没出现过的词分到的概率越多,高概率词的优势越小,主题读起来更散。

Wallach、Mimno 和 McCallum 2009 年比较了几种先验设定。让每个主题的 α 各不相同(非对称先验),模型对文本的拟合更好,【我们】【问题】这类常用词也更容易集中到少数几个主题里,少污染其他主题;β 保持对称就够用。短评论和开放题一般一条只谈一两件事,α 通常取小一些;一段话常常同时谈几件事的长材料,α 可以大一些。

TATOOLS 工具页切到【专业模式】、选【词袋(BoW)】以后,可以设置【Alpha(主题分布先验)】和【Beta(词汇集中度)】。【Alpha】有三种选法,【自定义】用滑块在 0.01 到 1 之间取值,默认 0.1;【对称】给每个主题都取 1/K;【自动】从数据里为每个主题学出各自的 α,也就是 Wallach 等人推荐的非对称先验。【Beta】在 0.01 到 1 之间取值,默认 0.01。报告【模型训练参数】里的【α(文档-主题先验)】和【β(主题-词先验)】记录了这次实际用的值。

03

模型怎样从文本里反推出主题

生成过程是从主题写出文本,研究时手里只有文本,要反过来求每个词属于哪个主题。精确的后验分布要对所有可能的主题分配求和,词一多就算不动,实际用的都是近似方法。Griffiths 和 Steyvers 2004 年用吉布斯抽样(Gibbs Sampling,一次改一个词的主题,反复抽样直到稳定),Blei 等人的原论文用变分贝叶斯(Variational Bayes,用一个好算的分布去逼近后验)。Hoffman、Blei 和 Bach 2010 年又给变分贝叶斯做了在线版本,能分批处理大语料。

两种方法里,一个词分给哪个主题都由两样东西相乘决定,吉布斯抽样的条件概率写得最直白。

· · ·

p(z_(d,n) = k | 其余所有词的分配) ∝ (n_(d,k) + α) × (n_(k,w) + β) / (n_k + V × β)

第一项是主题 k 在本片段里已经占了多少,第二项是主题 k 有多偏爱这个词。一个片段里住房主题已经占六成,住房主题又很偏爱【租金】,这个【租金】就很可能分给住房主题。

变分贝叶斯把同一件事写成两条交替更新的式子,r 表示一个词分给各主题的份额。

· · ·

r_(n,k) ∝ φ_(k,w_n) × exp(Ψ(γ_k))

γ_k = α_k + Σ_n r_(n,k)

θ_(d,k) 的估计值 = γ_k / Σ_j γ_j

Ψ:双伽马函数;γ_k 不太小时,exp(Ψ(γ_k)) ≈ γ_k − 0.5

exp(Ψ(γ_k)) 大致正比于主题 k 在本片段里的当前份额,结构和吉布斯抽样的条件概率一样。手算一轮,计算时用当前比例代替 exp(Ψ(γ_k))。片段 d 有三个词,K = 2,当前主题比例约为 (0.6, 0.4),α = 0.1。

φ_1 φ_2 0.6 × φ_1 0.4 × φ_2 分给主题 1 分给主题 2
租金 0.10 0.01 0.060 0.004 0.94 0.06
押金 0.05 0.01 0.030 0.004 0.88 0.12
通勤 0.01 0.03 0.006 0.012 0.33 0.67
· · ·

γ_1 = 0.1 + 0.94 + 0.88 + 0.33 = 2.25

γ_2 = 0.1 + 0.06 + 0.12 + 0.67 = 0.95

θ_d ≈ (2.25 / 3.2, 0.95 / 3.2) ≈ (0.70, 0.30)

片段内部这样来回更新,直到比例不再变化或者达到迭代上限,这一步叫 E 步。全部片段做完 E 步,把每个词分给各主题的份额汇总起来更新 φ,这一步叫 M 步。

· · ·

λ_(k,w) = β + Σ_d Σ_n r_(d,n,k) × 1[w_(d,n) = w]

φ_(k,w) = λ_(k,w) / Σ_v λ_(k,v)

在线版本每处理一批片段更新一次:λ ← (1 − ρ_t) × λ + ρ_t × λ̂,ρ_t 随批次增加而变小

TATOOLS 用的是在线变分贝叶斯。工具页【专业模式】里的【语料库迭代次数】是完整遍历全部片段的次数,1 到 50,默认 10;【每文档迭代次数】是每个片段内部 E 步的上限,1 到 1,000,默认 50。片段多、主题多的材料,多遍历几次,主题更稳定。随机种子是固定的,词袋方式下同一份材料用同一组设置重跑,主题词和概率都相同。报告【模型训练参数】里的【语料遍历次数(passes)】和【单文档迭代次数(iterations)】记录了这两个次数。

04

一个文件切成许多片段,每个文件单独建模

一份 6,000 字的访谈稿整篇当成一个文档,LDA 只能给它一组主题比例,看不出哪一段在谈什么。切成四五十个片段,每个片段有自己的比例,谈住房的段落和谈养老的段落就分开了,主题的占比也有了可以数的分母。

分析单位(Unit of Analysis)是一次统计针对的对象。LDA 的主题比例 θ 在文档一级估计,文档怎么切,直接决定主题在多细的粒度上混合。TATOOLS 的【高级LDA主题模型】把片段当作 LDA 的文档,按四条规则切分。

1

先按空行分段,空行分出的段落太少时,改按换行分段。

2

太短的段落往后合并,超长的段落在句号、问号这类句末标点处拆开。

3

片段数少于主题数的两倍时,按句子重新切成更小的片段。自动定主题数时按 3 个主题算,至少要 6 个片段。

4

全部文件合计不足 300 个字符,或者一个文件连 3 个片段都切不出来,任务会停止并提示原因。

· · ·

N ≥ max(3, 2 × K)

N:一个文件切出的片段数

例:K = 8,至少要 16 个片段

片段数是报告里所有占比的分母。一个主题在 12 个片段里占主导,文件一共 40 个片段,它的占比就是 12 / 40 = 30%。

每个文件单独训练一套主题。文件 A 的主题 3 和文件 B 的主题 3 是两个模型各自编的号,内容可以毫不相干。这个设计适合一份一份地看材料,比如每位受访者一份转写稿、每年一份工作报告,先看各自有哪些主题,再对照着读。想让几份材料共用同一套主题,直接比较同一个主题在各文件里的分量,可以用 TATOOLS 的【经典LDA主题建模】,它把所有文件合成一批文档一起训练。

报告【预处理与集中度统计】里的【最终片段数】是进入模型的片段数,【平均片段长度】按词计。上传了多个文件时,用报告顶部的【选择查看的文件】切换。

05

哪些词会进入模型

【我们社区今年新开了老年食堂,来吃饭的老人比去年多了不少】这句话分词以后有十几个词,真正说明话题的是【社区】【食堂】【老人】这几个。LDA 把每个词都当成主题的证据,【我们】【今年】【不少】这种到处都有的词留在词表里,会被摊进各个主题,挤占真正有区分力的词。所以建词表之前要先筛一遍。

TATOOLS 对每个片段依次做八步处理,每一步都对应工具页【专业模式】里的设置。

步骤 做什么 工具页设置
分词 中文切成词,英文按字母串切开 【文档主要语言】【自定义词典】【自动补充词典】
词性 只留选中的词性,默认只留名词 【保留词性类型】
停用词 去掉系统停用词和自己填写的词 【自定义停用词】
功能词 去掉单字和纯数字 【过滤功能词(单字、纯数字)】
词形合并 几种写法并成一种再计数 【词形合并】
词组 相邻的几个词连成词组 【启用词组分析(N-gram)】
词频 去掉出现太少和铺得太开的词 【最低词频要求】【最高词频比例】
TF-IDF 去掉平均 TF-IDF 过低或过高的词 【启用 TF-IDF(本文常用、别处少用的程度)智能过滤】

词频这一步看两个数,只作用于中文材料。

· · ·

词 w 保留的条件

    n(w) ≥ 最低词频要求

    df(w) / N ≤ 最高词频比例

n(w):w 在这个文件全部片段里出现的总次数

df(w):含有 w 的片段数

N:片段数

一个文件切成 40 个片段,【最高词频比例】取默认的 80%,一个词最多只能出现在 32 个片段里。【我们】出现在 36 个片段里,36 / 40 = 90%,被去掉。【最低词频要求】取默认的 2,整个文件只出现过一次的【违建】也被去掉。前一条去掉到处都有的词,后一条去掉偶然出现一次、撑不起任何主题的词。

TF-IDF(词频–逆文档频率,一个词在这段里常见、在别处少见的程度)过滤换了一个角度。每个词在每个片段里算一个 TF-IDF 值,再对全部片段取平均,平均值落在【最低阈值】和【最高阈值】之间的词才保留。

· · ·

tfidf(t, d) = tf(t, d) × idf(t)

idf(t) = ln((1 + N) / (1 + df(t))) + 1

每个片段的 TF-IDF 向量先缩放到长度 1,再对 N 个片段取平均

平均值过低的,是只在极少数片段里零星出现的词。

每一步过滤之后,TATOOLS 都会检查剩下的词够不够建模。词频过滤后词太少,先放宽一档再试,仍然不够就跳过这一步;TF-IDF 过滤后词太少,也直接跳过。之后还会按片段数自动去掉一轮只在极少片段出现、或者几乎每个片段都有的词,中文材料再去掉单字。词表太小、撑不起设定的主题数时,主题数会自动调低,报告【模型训练参数】里的【主题数】是实际用的数。

Denny 和 Spirling 2018 年在《Political Analysis》上专门检验过预处理。去不去停用词、要不要按词频修剪,这类选择会明显改变无监督模型的结果,写论文时要把这些设置和主题一起报告。

TATOOLS 报告【文档概览与模型指标】里的【建模词数】和【不同词数】,是这几步处理以后留下的词次和词种数。【预处理统计】里的【模型词典词数】是最终词表的大小,【词典覆盖率】等于模型词典词数除以预处理后的不同词数。

06

主题数怎么定

同一批 40 个讲社区生活的片段,K = 3 时可能分出住房、教育和养老;K = 8 时,住房又分成租房和买房,养老分成居家照护和养老机构。两种结果都说得通,主题数决定的是看材料的分辨率。

TATOOLS 工具页的【提取的主题数量】有两种定法。关掉【自动确定主题数(推荐)】,用滑块在 2 到 20 之间指定;打开它,TATOOLS 在 3 到 12 之间替你选。

自动选的候选范围还受两个条件约束。每个主题平均至少要有两个片段,候选 K 不超过片段数的一半;词表太小撑不起的 K 也会去掉。

· · ·

K_max = min(12, ⌊N / 2⌋, 词表允许的上限)

候选 K = 3, 4, …, K_max

每个候选 K 都用这次的片段、词表和先验完整训练一个模型,再看两件事。

第一件事是有没有退化主题(Degenerate Topic)。一个主题几乎分不到词,它的词分布就只剩先验,每个词的概率都差不多,读不出任何意思。模型训练完,每个主题分到的期望词数 n_k 是现成的,用它算份额。

· · ·

s_k = n_k / Σ_j n_j

主题 k 有效:s_k ≥ (1 / K) × 0.2

平均份额是 1/K,份额不到平均的五分之一,就算退化。

· · ·

K = 6 时各主题的期望词数:300, 260, 210, 150, 70, 10,合计 1,000

门槛 = 1,000 × 0.2 / 6 ≈ 33.3

主题 6 只有 10,低于门槛,这个 K 的有效主题数 = 5

第二件事是主题一致性,按工具页【主题一致性评估方法】选中的指标计算,后面会专门讲。两件事合起来决定推荐哪个 K。

· · ·

合格的 K:K 个主题全部有效

推荐的 K:合格的 K 里一致性最高的一个,一致性相同时取较小的 K

没有合格的 K:取有效主题数最多的 K

K 有效主题数 c_v 一致性 能否参加比较
3 3 0.41
4 4 0.46
5 5 0.44
6 5 0.49 有退化主题
7 6 0.47 有退化主题

K = 6 的一致性最高,但它有一个退化主题,不参加比较。能参加比较的 K 里 K = 4 最高,推荐 K = 4。

为什么不直接取困惑度最低的 K?Chang 等人 2009 年做过人工评测,请人从一组主题词里挑出混进去的外来词,结果困惑度更低的模型,主题反而更难被人读懂。Newman 等人 2010 年和 Röder 等人 2015 年的研究都显示,基于词语共现的一致性指标和人的判断更吻合。TATOOLS 先用份额排除读不出意思的主题,再在剩下的候选里比一致性。

自动定出的主题数写在报告顶部的提示框里,标题是【自动主题数:N 个】,下面写明这次实际比较的范围,【各指标推荐值】列出【无退化主题中一致性最高】和【有效主题数最多】两个读数。上传多个文件时,每个文件各自选主题数。想先看一条完整的曲线,可以用 TATOOLS 的【LDA主题数评估】,它在你设定的范围内逐个主题数计算困惑度和一致性等指标,给出建议的主题数。

07

词袋方式:按词语在同一个片段里一起出现

三个片段筛完词,数一数每个词出现几次,得到一张表。

片段 租金 房东 学校 老师 通勤
片段 1 2 1 0 0 1
片段 2 0 0 2 1 1
片段 3 1 1 1 0 0

词袋(Bag of Words)把每个片段表示成一行计数,词表有多少个词就有多少列,LDA 读到的只有这张表。【租金】和【房东】总在同一行里出现,它们会被推到同一个主题;【通勤】在片段 1 和片段 2 都有,概率会分到两个主题上。

在 LDA 里,一个词可以在几个主题里都有概率,把词硬分组的方法做不到这一点。【通勤】同时和住房、上学有关,两个主题都保留它,研究者读的时候能看出它的两层含义。

TATOOLS 默认用词袋方式,它也是三种方式里报告最完整的一种,对应工具页【文本向量化方式】里的【词袋(BoW)】。【最高词频比例】、词组分析和 TF-IDF 过滤只在这个方式下出现,迭代次数和两个先验也只在这里能改。开启【启用词组分析(N-gram)】以后,相邻的几个词可以连成一个词组参与建模,【词组长度】设定最短和最长,最长到 5 个词,【最少出现次数】要求词组在同一个片段里重复出现到这个次数才保留。工具页建议词袋方式用于正式文档,材料在 1,000 个字符以上。

08

语义向量方式:意思相近的片段互相补充关键词

两条评论,【排队排了一个多小时】和【等了好久才轮到我】。筛完词以后,它们几乎没有共同的词,词袋方式很难把它们归到一起。评论、弹幕和开放题这类短文本,每条只有几个实词,同一件事的说法又五花八门,只靠词语共现,主题容易散。

语义嵌入(Sentence Embedding,把一段话变成一组表示意思的数字)把每个片段映射成向量 e_d,意思相近的片段,向量也相近。Reimers 和 Gurevych 2019 年提出的 Sentence-BERT 让这类向量能大规模计算。

TATOOLS 的语义向量方式分三步。

1

先按词袋方式训练 LDA,得到每个主题的词概率 φ_k 和每个片段的主题比例 θ_d。

2

为每个片段算语义向量,缩放到长度 1,再用 K 均值(K-Means,把点分成 K 组、让每组尽量围着自己的中心)把片段分成 K 组。

3

第 k 个主题的关键词,在 LDA 给出的高概率词之外并入第 k 组片段里的高频词,两项加权打分,重新排序取前 10 个。

· · ·

K 均值:min Σ_(j=1..K) Σ_(d∈G_j) ‖e_d − μ_j‖²

关键词得分:s(w, k) = 0.7 × φ_(k,w) + 0.3 × f_k(w)

f_k(w):词 w 在第 k 组片段里的出现次数 ÷ 这组片段的总词数

候选词的得分再除以全部候选词得分之和,作为报告里的权重

手算两个词。第 k 组片段一共 200 个词。【排队】在 LDA 主题 k 里的概率是 0.02,在这组片段里出现 16 次;【客服】在 LDA 主题里是 0.08,在这组片段里出现 4 次。

· · ·

s(排队) = 0.7 × 0.02 + 0.3 × 16 / 200 = 0.014 + 0.024 = 0.038

s(客服) = 0.7 × 0.08 + 0.3 × 4 / 200 = 0.056 + 0.006 = 0.062

【排队】在 LDA 主题里排得靠后,靠这组片段里的频次补回了分数。片段的主题比例 θ_d 仍然来自 LDA,报告里的占比、代表性原文和片段归类表都按它计算。

TATOOLS 工具页【文本向量化方式】选【语义向量(Embedding)】以后,词性、功能词和词频这些设置都不再显示,只保留【主题一致性评估方法】。工具页建议这个方式用于短文本,材料 500 个字符起就能用。【分析场景】里的【用户反馈】和【公众号评论】两个预设用的就是这个方式,主题数自动确定。报告里的关键词经过重新打分,和词袋方式的指标不能直接比较,这个方式下报告只显示【主题 PMI(两个词一起出现的紧密程度)均值】一项模型指标,象限图、流向图等依赖词袋口径的几块也不显示。向量计算没能完成时,主题词退回词袋结果,【这份结果说明了什么】会写明这一点。

09

Word2Vec 方式:从上下文学出词义,再把词分组

【房租】和【租金】很少出现在同一个片段里,一个人说话通常只用其中一个。它们前后的词却很像,都跟着【上涨】【每月】【交】。语言学家 Harris 1954 年提出分布假设(Distributional Hypothesis),出现在相似上下文里的词,意思也相近。Mikolov 等人 2013 年提出的 Word2Vec,就是按这个假设学词义的模型。

Word2Vec 的 Skip-gram 结构用中心词去预测它前后 c 个词,训练的目标是让真实出现的上下文词概率尽量高。

· · ·

max (1 / T) × Σ_t Σ_(−c ≤ j ≤ c, j ≠ 0) log p(w_(t+j) | w_t)

p(w_O | w_I) = exp(u_(w_O) · v_(w_I)) / Σ_w exp(u_w · v_(w_I))

v_w:词 w 作中心词时的向量;u_w:作上下文词时的向量

c:上下文窗口大小;T:语料的总词数

【房租 上涨 年轻人 推迟 结婚】这句话,窗口 c = 2,中心词是【年轻人】时,训练用到四组词对,分别是(年轻人,房租)(年轻人,上涨)(年轻人,推迟)(年轻人,结婚)。上下文相似的词,训练后向量方向相近。

TATOOLS 在每个文件自己的片段上训练 Word2Vec,然后用 K 均值把词向量分成 K 组,每一组就是一个主题。组内的词按出现次数和离组中心的远近打分。

· · ·

g(w, k) = n(w) × max(cos(v_w, μ_k), 0)

p(w | k) = g(w, k) / Σ_(w'∈C_k) g(w', k)

n(w):词 w 在这个文件里出现的次数

μ_k:第 k 组词向量的中心;C_k:第 k 组的词

一组里有三个词,手算它们的权重。

出现次数 与组中心的余弦 得分 权重
租金 12 0.9 10.8 10.8 / 16.8 ≈ 0.643
押金 5 0.8 4.0 4.0 / 16.8 ≈ 0.238
中介 4 0.5 2.0 2.0 / 16.8 ≈ 0.119

片段的主题比例用片段向量和各组中心的余弦相似度来算。片段向量是片段里各词向量的平均,余弦为负的记为 0,再归一化。

· · ·

v̄_d = 片段 d 里各词向量的平均

θ_(d,k) = max(cos(v̄_d, μ_k), 0) / Σ_j max(cos(v̄_d, μ_j), 0)

例:与三个中心的余弦为 (0.6, 0.3, −0.1),θ_d = (0.6, 0.3, 0) / 0.9 ≈ (0.667, 0.333, 0)

这种做法里,一个词只属于一个主题,词和主题之间是硬划分,LDA 则给每个词在各主题上都留了概率。Sia、Dalmia 和 Mielke 2020 年的实验里,把词向量聚类得到的主题,一致性能和 LDA 相当,计算也快得多。

TATOOLS 工具页选【Word2Vec(从上下文学词义的模型)】以后,出现三项专用设置。【词向量维度】50 到 300,默认 100;【上下文窗口大小】3 到 15,默认 5;【Word2Vec(从上下文学词义的模型)最小词频】1 到 10,默认 1,出现次数更少的词不参与向量训练。词种太少时,TATOOLS 会自动调小向量维度和主题数,窗口也不会超过片段平均词数的一半。这个方式没有困惑度,报告里显示为 N/A,一致性固定按 c_v 计算。自动定主题数时,K 仍然用前面那套 LDA 比较来选。工具页建议这个方式用于中长文本,材料在 2,000 个字符以上。

10

三种方式怎么选

三种方式的区别在于词和词怎样发生关系,片段的主题比例又从哪里来。

方式 词和词怎样发生关系 片段的主题比例从哪来 工具页建议的材料
词袋(BoW) 在同一个片段里一起出现 LDA 推断 正式文档,1,000 个字符以上
语义向量(Embedding) 片段意思相近,补充关键词 LDA 推断 短文本,500 个字符起
Word2Vec 前后文相似 片段向量与主题中心的余弦 中长文本,2,000 个字符以上

TATOOLS 工具页【分析场景】的五个预设,把向量化方式、主题数和词表设置一次填好,选完仍然可以逐项改。

分析场景 适合的材料 向量化方式 主题数 其他预设
文献综述 论文摘要、综述、研究报告 词袋 5 保留名词、动词和形容词,开 TF-IDF 过滤,最低词频 3
作文/开放题 学生作文、问卷开放题、自由作答 词袋 3 保留名词、动词和形容词,最低词频 1
用户反馈 产品评价、客服工单、用户建议 语义向量 自动
访谈编码 半结构化访谈、焦点小组 词袋 8 再加副词,开 TF-IDF 过滤和词组分析,最低词频 2
公众号评论 微信评论、弹幕、社交媒体回复 语义向量 自动

TATOOLS 默认用【普通模式】和词袋方式,主题数自动确定,拿不准的时候从默认开始。材料是短评论,可以换成语义向量方式;想看同一个概念的几种说法怎样聚到一起,可以试 Word2Vec 方式,再和词袋结果对照着读。

11

主题标签和代表性原文

一个主题的前几个词是【租金 押金 房东 中介 合同】,读的人很快会把它归成一件事,比如【租房纠纷】。给主题起名叫主题标注(Topic Labeling)。Mei、Shen 和 Zhai 2007 年最早系统研究自动起名,先从语料里找候选短语,再挑和主题词分布最贴近的一个;Lau 等人 2011 年把维基百科的条目标题也纳入候选。现在常见的做法是让语言模型读关键词和原文,直接概括出一个短名字。

TATOOLS 给每个主题起名分三步。

1

取这个主题概率最高的几个词。

2

在原文里找到这些词出现的位置,各截一小段上下文。

3

把关键词和上下文交给语言模型,要求写一个简短的名字,概括这些词共同指向的意思,不能直接拼接关键词,也不能带【主题】二字。

生成的名字不合要求时,这个主题显示为【主题 N】。

名字方便指称,理解主题还要回到原文。TATOOLS 为每个主题挑出主题概率最高的 3 个片段作为代表性原文,放在【主题分析】每个主题卡片下面的【代表性原文段】里。每段标出来源文件、片段编号和这个主题的概率,超过 200 个字符的截到 200 个字符以内的句末。Grimmer 和 Stewart 为自动内容分析提出四条原则,最后一条是反复验证(validate, validate, validate),主题的含义要靠读原文来确认。关键词告诉你这个主题里常出现什么词,代表性原文告诉你这些词在谈什么。

12

一个主题有多大:占主导的片段比例和平均权重

四个片段、三个主题,每个片段的主题比例如下表。

片段 主题 1 主题 2 主题 3 概率最高的主题
片段 1 0.80 0.10 0.10 主题 1
片段 2 0.50 0.40 0.10 主题 1
片段 3 0.20 0.70 0.10 主题 2
片段 4 0.30 0.25 0.45 主题 3

报告用两个数描述主题的规模。

· · ·

占比_k = 以主题 k 为最大概率主题的片段数 / N

平均权重_k = (1 / N) × Σ_d θ_(d,k)

主题 占比 平均权重
主题 1 2 / 4 = 50% 1.80 / 4 = 0.45
主题 2 1 / 4 = 25% 1.45 / 4 ≈ 0.36
主题 3 1 / 4 = 25% 0.75 / 4 ≈ 0.19

主题 2 和主题 3 的占比都是 25%,平均权重差了将近一倍。主题 2 在片段 2 里没排第一,也分到了 0.40。占比只数第一名,平均权重把第二名、第三名的份额也算进去,两个数一起看,才知道一个主题是集中在几个片段里,还是作为次要话题散在很多片段中。

TATOOLS 报告的【主题占比一览】按占比画条形图,条形旁边写着这个主题在多少个片段里占主导。【主题分析】里每个主题都有一个【占比】标签,鼠标停上去能看到平均权重。主题排序先看占比,占比相同再看平均权重。占主导的片段数为 0 的主题,在任何片段里都排不到第一,它的词仍然可能散在很多片段里。【这份结果说明了什么】按占比列出前 5 个主题,附上主题名和代表词。

13

一致性、PMI 和困惑度各量什么

一个主题的前几个词是【租金 房东 押金】,这几个词在材料里经常同时出现,读起来是一件事。另一个主题是【租金 学校 客服】,三个词很少同时出现,读起来像是拼凑的。一致性和 PMI 用词语共现来量这种差别,困惑度量的是模型对这批词有多意外。TATOOLS 报告【模型指标】里的三张卡片,分别对应这一节的三小节。

主题一致性

主题一致性(Topic Coherence)的几种指标都建立在点互信息(PMI,Pointwise Mutual Information,两个词一起出现的次数比偶然碰上多多少)上。

· · ·

PMI(a, b) = log[ P(a, b) / (P(a) × P(b)) ]

NPMI(a, b) = PMI(a, b) / (−log P(a, b))

P(a) 是一个统计窗口里出现 a 的概率,P(a, b) 是 a 和 b 同时出现的概率。NPMI 把 PMI 缩放到 −1 到 1 之间,1 表示两个词总是一起出现,0 表示碰上的次数和随机一样。手算一个。

· · ·

P(a) = 0.2,P(b) = 0.25,P(a, b) = 0.1

PMI = ln(0.1 / 0.05) = ln 2 ≈ 0.693

NPMI = 0.693 / (−ln 0.1) = 0.693 / 2.303 ≈ 0.301

指标 共现在哪里数 怎样汇总 大致范围
c_v 滑动窗口 每个词的 NPMI 向量与整组词向量的余弦,取平均 0 到 1
c_npmi 滑动窗口 词对 NPMI 取平均 −1 到 1
c_uci 滑动窗口 词对 PMI 取平均 没有固定上下界
u_mass 整个片段 按词的排名顺序算条件概率的对数,取平均 通常是负数

c_v 由 Röder、Both 和 Hinneburg 2015 年提出,他们系统比较了各种一致性构造,c_v 和人工评分的相关最高。c_uci 来自 Newman 等人 2010 年的研究;u_mass 来自 Mimno 等人 2011 年的研究,只用本语料内部的共现就能算。

TATOOLS 工具页【主题一致性评估方法】可以选这四种,默认 c_v。报告【模型指标】里的整体一致性是所有主题一致性的平均,按选中的指标计算。不同指标的数值不能互相比较,比较几次运行时要固定同一种指标。

主题 PMI

TATOOLS 报告里每个主题还有一个【PMI(两个词一起出现的紧密程度)】标签。它把每个片段当成一个窗口,对主题前 10 个词两两算 PMI,再取平均。

· · ·

PMI(a, b) = ln[ D(a, b) × N / (D(a) × D(b)) ]

D(a):含有 a 的片段数;D(a, b):同时含有 a 和 b 的片段数;N:片段数

N = 40,【租金】出现在 10 个片段里,【押金】出现在 8 个片段里,两个词同时出现在 6 个片段里。

· · ·

PMI = ln(6 × 40 / (10 × 8)) = ln(240 / 80) = ln 3 ≈ 1.10

两个词同时出现的次数是随机碰上的 3 倍。从没在同一个片段里出现过的词对不计入平均。这个值可以是负数,也可以大于 1,和上面的 c_v 口径不同。【各主题 PMI(两个词一起出现的紧密程度)对比】把各主题的值画成条形图,【模型指标】里的【主题 PMI(两个词一起出现的紧密程度)均值】是所有主题的平均。

困惑度

困惑度(Perplexity)是语言模型的传统评价指标,衡量模型对这批词有多意外。

· · ·

ℓ = (1 / N_w) × log p(全部词 | 模型)

困惑度 = exp(−ℓ)

N_w:全部词次

ℓ 是平均每个词的对数似然,LDA 算不出它的精确值,报告的是它的变分下界。ℓ = −6 时,困惑度 = exp(6) ≈ 403,模型预测每个词的难度,相当于从 403 个同样可能的词里猜一个。ℓ 越接近 0,困惑度越小,模型对这批词越不意外。

TATOOLS 报告【模型指标】里的【对数困惑度】就是 ℓ,通常是负数。它只在同一个文件、同一张词表内部可比,换了材料或改了词表设置,数值就不能拿来比较了。前面讲过 Chang 等人的评测,困惑度更低的模型主题反而可能更难读,TATOOLS 自动选主题数用的是一致性。Word2Vec 方式没有困惑度。

14

主题之间有多像,关键词是否独有

两个主题,一个是【租金 房东 押金 合同】,另一个是【租金 房东 中介 看房】,前两个词完全一样。两个主题重叠太多,往往是主题数设多了,同一个话题被拆成了两半。

主题相似度用两个主题的词分布之间的余弦相似度来量,范围是整张词表。

· · ·

sim(i, j) = (φ_i · φ_j) / (‖φ_i‖ × ‖φ_j‖)

词表只有四个词时手算一次,φ_1 = (0.5, 0.3, 0.2, 0),φ_2 = (0.4, 0, 0.1, 0.5)。

· · ·

φ_1 · φ_2 = 0.5 × 0.4 + 0.3 × 0 + 0.2 × 0.1 + 0 × 0.5 = 0.22

‖φ_1‖ = √0.38 ≈ 0.616,‖φ_2‖ = √0.42 ≈ 0.648

sim = 0.22 / (0.616 × 0.648) ≈ 0.55

TATOOLS 报告【主题关系】里的【主题相似度矩阵】列出所有主题两两的余弦相似度,按高低分三档着色,【这份结果说明了什么】会写出相似度最高的那一对。相似度高的一对主题,可以把主题数调小一档再跑一次,看它们会不会合成一个。

关键词唯一性从另一面看同一件事。

· · ·

唯一性_k = 1 − (1 / (K − 1)) × Σ_(j≠k) |T_k ∩ T_j| / |T_k|

T_k:主题 k 的前 10 个词

K = 3,主题 1 的前 10 个词里有 2 个也在主题 2 的前 10 个词里,和主题 3 没有重合,唯一性 = 1 − (0.2 + 0) / 2 = 0.9。【主题分析】每个主题卡片底部把【关键词唯一性】和另外两个数放在一起。【片段覆盖度】是这个主题概率不低于 0.1 的片段所占比例。【代表词共现率】看前 5 个词两两组成的 10 对,至少在一个片段里同时出现过的对数占多少。

【主题占比 × PMI 四象限】把占比放在横轴、PMI 放在纵轴,用两项的中位数画出四个象限。右上角的主题占的片段多,代表词又常在一起出现,是材料里分量重、轮廓清楚的主题。落在右下角的主题,代表词很少一起出现,占的片段却不少,值得回到代表性原文看看它是不是几件事混在了一起。

15

每个片段归到哪个主题

一个片段的主题比例是 (0.52, 0.45, 0.03),它归到主题 1,主题 2 只差 7 个百分点。这样的片段往往同时谈两件事,读原文时最值得看。

TATOOLS 报告的【片段归类表】每行一个片段,列出【主导主题】【主导概率】和【第二主题】,可以按主题筛选,完整表格能下载成 CSV。【文档-主题流向】把片段按原文顺序分成几组,画出每组片段流向哪些主题,色带宽度是片段数。旁边的【平均主导概率】越高,片段越集中在单个主题上;【出现过的主导主题】数出至少在一个片段里排第一的主题有几个。

【主题在片段序列中的分布】按片段在原文里的先后,记录每个主题占过主导的片段区间和次数,以及它在这些片段里的平均概率。它反映主题在文本里的位置,一份访谈稿前半段谈什么、后半段谈什么,从这里能看出来。【集中度统计】里的【单主题片段】是只有一个主题的概率达到 1% 的片段,【高集中主题】是在它主导的片段里平均概率超过 80% 的主题。

16

上传多个文件时怎样对照

TATOOLS 为每个文件单独建模,报告一次显示一个文件,用【选择查看的文件】切换。多文件的报告多出两块内容。

【整体分析概览】汇总所有文件的片段数和主题总数,给出平均一致性和平均对数困惑度。跨文件的对照卡片把各文件并排放在一起,列出平均主题数、各文件每个主题的前 5 个关键词和各文件的整体一致性,还用两个数描述每个文件内部主题之间关键词重复得多不多。

· · ·

重复率 = 1 − 不重复关键词数 / 关键词总数

主题间差异度 = 1 − 主题两两之间关键词重合比例的平均值

重合比例 = |T_i ∩ T_j| / |T_i ∪ T_j|

一个文件有 4 个主题,每个主题 10 个关键词,共 40 个,其中不重复的有 34 个,重复率 = 1 − 34 / 40 = 15%。

各文件的主题编号各自独立,对照时看关键词和主题标签。文件 A 的主题 2 和文件 B 的主题 5,前 5 个词有 3 个相同,它们谈的很可能是同一件事。也可以在【向这份材料提问】里直接问两份文件的主题有什么不同,报告给出的起手问题里就有这一条。

17

直接向材料提问

读完报告,手里常常还有具体问题,比如受访者谈到租房时最常抱怨什么,某个主题还有哪些原文。TATOOLS 报告里的【向这份材料提问】可以直接问,回答只依据这次上传的材料,每句结论后面用编号标出原文出处,点开就能对照。占比和排名这类数字直接取自任务结果。

检索增强生成(Retrieval-Augmented Generation,RAG,先找原文再回答)由 Lewis 等人 2020 年提出,追问按这个思路来做。任务完成时,每个片段已经建好检索索引,每个主题的片段数、占比和排名也已算好,还配了一句内容概括。问题里写【主题 N】或者主题名,TATOOLS 就知道你问的是哪个主题;每个主题卡片上的【就这个主题提问】按钮,会把【主题 N】自动填进输入框。上传了多个文件时,写成【文件名 · 主题 N】。

18

工具页上的设置一览

TATOOLS 工具页从上到下的设置如下表,【专业模式】里的设置按向量化方式显示。

设置 在哪里显示 范围或选项 默认
普通模式、专业模式 始终 两种 普通模式
文档主要语言 始终 中文、英文 中文
分析场景 始终 自定义和五个预设 自定义(不预设)
提取的主题数量 始终 自动 3 到 12,手动 2 到 20 自动
文本向量化方式 专业模式 词袋、语义向量、Word2Vec 词袋
保留词性类型 词袋、Word2Vec 名词、动词、形容词、副词 名词
过滤功能词(单字、纯数字) 词袋、Word2Vec 开、关
自定义词典、自动补充词典、自定义停用词 词袋、Word2Vec 自己填写,自动补充词典只用于中文
词形合并 词袋、Word2Vec 一行一组
最低词频要求 词袋、Word2Vec 1 到 10 2
最高词频比例 词袋 10% 到 100% 80%
启用词组分析(N-gram) 词袋 词组长度最长 5 个词,最少出现次数 1 到 10
TF-IDF 智能过滤 词袋 最低阈值 0.001 到 0.1,最高阈值 0.5 到 1
词向量维度 Word2Vec 50 到 300 100
上下文窗口大小 Word2Vec 3 到 15 5
Word2Vec 最小词频 Word2Vec 1 到 10 1
主题一致性评估方法 专业模式 c_v、c_npmi、c_uci、u_mass c_v
语料库迭代次数 词袋 1 到 50 10
每文档迭代次数 词袋 1 到 1,000 50
Alpha 词袋 自定义 0.01 到 1、对称、自动 自定义 0.1
Beta 词袋 0.01 到 1 0.01

按研究需要调参数,可以从下面几种情况入手。

想要的效果 先调哪个设置
主题分得更粗,先看大块 关掉自动,手动指定较小的主题数
主题分得更细,看子话题 关掉自动,手动指定较大的主题数
主题词里少出现泛泛的词 补进【自定义停用词】,或调低【最高词频比例】
专有名词被切碎 【自定义词典】或【自动补充词典】
同一个说法的几种写法合成一个词 【词形合并】
动作和评价也要进主题 【保留词性类型】加上动词和形容词
每段话更集中在一两个主题上 调小【Alpha】
每个主题更集中在少数几个词上 调小【Beta】
短评论分出的主题太散 换成【语义向量(Embedding)】
两个主题几乎一样 调小主题数

19

把结果写进论文

TATOOLS 报告的【主题编码本】把每个主题的编号和标签放在一张表里,旁边列出前 5 个代表词、占比和 PMI,可以下载 CSV 或 Markdown 版本,当作编码表的初稿。【片段归类表】的 CSV 列出每个片段的主导主题和第二主题。方法部分要交代的参数,在【模型训练参数】里都能找到。

Roberts 等人 2014 年用结构主题模型分析问卷开放题,先让模型给出主题,研究者读代表性回答后给主题命名,再用主题比例做后续分析。LDA 的结果写进论文,也常走这条路径。下面是一段方法部分的写法示例,方括号里换成自己的数字。

本研究使用 TATOOLS 的高级LDA主题模型(Blei 等,2003)分析 [文件数] 份文本。每份文本单独建模,按段落切分为片段,共得到 [片段数] 个片段。分词后保留 [名词] 并去除停用词,按词频与片段频率过滤后建立词袋,词表共 [词数] 个词。模型用变分贝叶斯估计,α = [值],β = [值],遍历语料 [次数] 次。主题数在 3 至 12 之间自动选择,排除份额过小的退化主题后取 c_v 一致性最高者,最终为 [K] 个。研究者对照各主题的高概率词与代表性原文逐一命名,主题规模以片段的主导主题比例表示。

20

小结

LDA 假设每个片段由几个主题按比例 θ 混合写成,每个主题是词表上的一组概率 φ,两组概率都从词语在片段里一起出现的规律估计出来。

α 管一个片段集中在几个主题上,β 管一个主题集中在几个词上,两者在估计时都相当于预先垫上的虚拟计数。

TATOOLS 把每个文件切成片段、单独建模,片段数是所有占比的分母;想让多个文件共用一套主题,用【经典LDA主题建模】。

进入模型的词要经过词性、停用词、词频和 TF-IDF 几道筛选,这些设置会改变主题,写论文时一并报告。

自动定主题数先用份额排除退化主题,再取一致性最高的 K。

词袋方式按共现建模,语义向量方式用意思相近的片段补充关键词,Word2Vec 方式把从上下文学出的词向量分组。

占比只数第一名,平均权重把次要份额也算上;c_v 等一致性量主题词是否常一起出现,困惑度只在同一文件内部可比。

主题标签和代表性原文帮助给主题命名,片段归类表和追问帮助回到原文核对。

同一批材料想换个角度看,可以用 TATOOLS 的【BERTopic 主题聚类】按语义把片段聚成主题,和 LDA 的结果对照;正式建模前想先比较几个主题数,可以用【LDA主题数评估】。

21

资料来源

Blei、Ng 与 Jordan:Latent Dirichlet Allocation,Journal of Machine Learning Research,第 3 卷,2003,第 993–1022 页

Griffiths 与 Steyvers:Finding Scientific Topics,PNAS,第 101 卷增刊 1,2004

Hoffman、Blei 与 Bach:Online Learning for Latent Dirichlet Allocation,NeurIPS,2010

Wallach、Mimno 与 McCallum:Rethinking LDA: Why Priors Matter,NeurIPS,2009

Chang、Boyd-Graber、Gerrish、Wang 与 Blei:Reading Tea Leaves: How Humans Interpret Topic Models,NeurIPS,2009

Newman、Lau、Grieser 与 Baldwin:Automatic Evaluation of Topic Coherence,NAACL-HLT,2010

Mimno、Wallach、Talley、Leenders 与 McCallum:Optimizing Semantic Coherence in Topic Models,EMNLP,2011

Röder、Both 与 Hinneburg:Exploring the Space of Topic Coherence Measures,WSDM,2015

DiMaggio、Nag 与 Blei:Exploiting Affinities between Topic Modeling and the Sociological Perspective on Culture,Poetics,第 41 卷第 6 期,2013

Grimmer 与 Stewart:Text as Data: The Promise and Pitfalls of Automatic Content Analysis Methods for Political Texts,Political Analysis,第 21 卷第 3 期,2013

Denny 与 Spirling:Text Preprocessing for Unsupervised Learning: Why It Matters, When It Misleads, and What to Do about It,Political Analysis,第 26 卷第 2 期,2018

Roberts 等:Structural Topic Models for Open-Ended Survey Responses,American Journal of Political Science,第 58 卷第 4 期,2014

Reimers 与 Gurevych:Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks,EMNLP-IJCNLP,2019

Harris:Distributional Structure,Word,第 10 卷第 2–3 期,1954

Mikolov、Chen、Corrado 与 Dean:Efficient Estimation of Word Representations in Vector Space,arXiv:1301.3781,2013

Sia、Dalmia 与 Mielke:Tired of Topic Models? Clusters of Pretrained Word Embeddings Make for Fast and Good Topics too!,EMNLP,2020

MacQueen:Some Methods for Classification and Analysis of Multivariate Observations,Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability,1967

Mei、Shen 与 Zhai:Automatic Labeling of Multinomial Topic Models,KDD,2007

Lau、Grieser、Newman 与 Baldwin:Automatic Labelling of Topic Models,ACL,2011

Lewis 等:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,NeurIPS,2020


END