From 27ab59efb61ec1f5fab5343293ca856f682a1d12 Mon Sep 17 00:00:00 2001 From: shataowei Date: Sun, 13 Sep 2020 15:44:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E4=BA=86LDA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E9=9B=86=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 106 ++++++++++++------ README.md | 3 + .../LDA.md" | 19 +++- 3 files changed, 91 insertions(+), 37 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 4936d40..c5784ae 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,7 +2,9 @@ - + + + @@ -22,13 +24,13 @@ - - + + - - + + @@ -47,12 +49,12 @@ - - + + - - + + @@ -114,7 +116,6 @@ @@ -208,7 +210,6 @@ - @@ -228,6 +229,20 @@ + - + @@ -549,7 +579,7 @@ - + @@ -904,16 +934,6 @@ - - - - - - - - - - @@ -1230,7 +1250,6 @@ - @@ -1239,7 +1258,6 @@ - @@ -1247,11 +1265,31 @@ - + - - + + + + + + + + + + + + + + + + + + + + + + @@ -1260,7 +1298,7 @@ - + @@ -1269,11 +1307,11 @@ - + - - + + @@ -1282,7 +1320,7 @@ - + diff --git a/README.md b/README.md index 2ac4ded..8cb0907 100644 --- a/README.md +++ b/README.md @@ -333,6 +333,9 @@ - [LDA算法里面Dirichlet分布的两个参数alpha和beta怎样确定?trick?](自然语言处理/LDA.md#L164) - [使用过LDA,你有什么问题?](自然语言处理/LDA.md#L164) - [你用真实用过吗?对比过效果吗?](自然语言处理/LDA.md#L164) + - [超参数\alpha \beta对训练的影响?](自然语言处理/LDA.md#L164) + - [LDA你会有哪些常规的预处理步骤](自然语言处理/LDA.md#L164) + - [LDA的最大似然不好求的原因?为什么不直接用EM?为什么LDA引入了一堆数学理论?](自然语言处理/LDA.md#L164) - LSTM - GRU - Bert:[实现/使用的代码](https://github.com/sladesha/deep_learning/tree/master/Bert) diff --git "a/\350\207\252\347\204\266\350\257\255\350\250\200\345\244\204\347\220\206/LDA.md" "b/\350\207\252\347\204\266\350\257\255\350\250\200\345\244\204\347\220\206/LDA.md" index af6cd6a..d8cb028 100644 --- "a/\350\207\252\347\204\266\350\257\255\350\250\200\345\244\204\347\220\206/LDA.md" +++ "b/\350\207\252\347\204\266\350\257\255\350\250\200\345\244\204\347\220\206/LDA.md" @@ -68,6 +68,7 @@ - 多次尝试,调优perplexity-topic number曲线 - 困惑度越小,越容易过拟合 - 某个词属于某个主题的困惑度:![](https://tva1.sinaimg.cn/large/006y8mN6gy1g9b7zjns8uj305i012jr7.jpg),某个文章的困惑度即为词的连乘:![](https://tva1.sinaimg.cn/large/006y8mN6gy1g9b83z3d22j304q01dweb.jpg) +- K × 词典的大小 约等于 语料库中词的总数,这个是老师上课说的,但是实锤无效。\alpha的经验选择为50/k, 其中k是topic数目,beta一般为0.01 # LDA和Word2Vec区别?LDA和Doc2Vec区别? - LDA比较是doc,word2vec是词 @@ -94,13 +95,25 @@ - 对通识性的内容效果好,对突发性的内容效果差。可以识别法律相关的内容,因为它们不咋变化,聚出来的可以长时间复用;但是对热点资讯就不好,因为热点是一阵一阵的,很难长久化复用 # 你用真实用过吗?对比过效果吗? +- 迭代次数在1000-1200次基本上均可收敛,亲测了20万条的小样本数据和1亿2000万条的大样本数据均在1100-1400收敛,loss提升小于十万分之一 +- 不要用变分推断,实测吉布斯采样的warplda,lightlda效果比GensimLDA要好,聚出来的主题一致性更高 +- 如果内容偏向单一主题的场景,比如信息流中的新闻,通常只讲一件事,alpha建议小一点,建议0.1;如果是传统的小说散文法律文本,通常会有很多思想不能简单化为一个主题的时候,alpha建议大一点,建议10 -我觉得gensim和sklearn里面的两个我就不说了,gensim里面的可以做困惑度gridsearch,比较舒适;sklearn的便捷性高,计算速度相对于gensim的,我个人感觉更快,而且参数解析更加清晰。 +# 超参数\alpha \beta对训练的影响? +\alpha越大,先验起的作用就越大,推导的topic分布就越倾向于在每个topic上的概率都差不多。\alpha的经验选择为50/k, 其中k是topic数目,beta一般为0.01 +![](https://tva1.sinaimg.cn/large/007S8ZIlgy1gip21g3g9rj30ic07tn1t.jpg) -除此之外,个人强推warplda,这个模型的计算是用的吉布斯采样替代了以上两种模型的变分推断,理论上效果更好,(小声bb,其实没有很大差异),速度也是o(1)的,主要是还方便集成到familia的框架下。 +3个彩图中,每一个点对应一个主题分布,高度代表某个主题分布被dirichlet分布选中的概率,且选不同的alpha,dirichlet 分布会偏向不同的主题分布 +# LDA你会有哪些常规的预处理步骤? +- 去除一些TF/DF较低/高的词,较低的词在拟合的过程中会被平滑掉,较高的词没有区分力 +- 手动合并2-gram的一些词,会增强生成主题的表述能力 +- 可以通过相似文本合并,相似用户合并,解决短文本主题生成不准的问题,如果数据量很大则不用考虑,直接剔除短文本即可 +- 数据分布不平衡会导致小主题识别不出来。原因是LDA设计思路就是使得通过主题-词分布+文本-主题分布矩阵最大化语料库词出现的似然概率,如果某个类别特别大,小主题可以拆开单独训练一个model +# LDA的最大似然不好求的原因?为什么不直接用EM?为什么LDA引入了一堆数学理论? + +LDA的最大似然不好求的原因是引入了主题的概率先验,alpha和beta需要求,且还有考虑每个主题生成词的概率,通常求隐藏变量的EM算法需要条件概率,但是LDA的条件概率难以描述。所以用的是吉布斯得到的几个样本来近似这个条件分布替代精准求解。 -另外就是lightlda,这个没用过,但是业界传的还行,也可以试试,综合建议lightlda或者warplda吧。 \ No newline at end of file