Python LDA,基于lda的人脸识别

  Python LDA,基于lda的人脸识别

  在本书的后续部分,前面三篇文章分别介绍了LDA的基本原理、LDA的Python实现、LDA主题的选择和模型的可视化。今天的文章,我们来看看不同的LDA实现方式,以及LDA在学术界的现状(因为我也是yhdbm,可能不是最新的技术)。

  LDA作为2003年提出的技术,现在肯定存在一些问题。在过去的LDA模型中,不考虑词序影响的词袋模型被用来对文本建模。“我喜欢你”和“你喜欢我”在单词袋模型中是完全一样的。显然,这是不合理的。袋模型只考虑了字数的影响。但实际上“自然语言处理”的频率普遍较低,只是因为“你”、“我”、“他”的出现频率较高,无法使用词袋模型进行建模。那么,在2002年,我们的科学家想到了什么样的解决方案呢?除了常见的LDA主题模型之外,没有模型生成方法吗?

  用Mallet和TF-IDF训练LDA模型

  LDA由Mallet和TF-IDF实现。首先用Mallet实现LDA,然后用TF-IDF实现LDA模型。

  简单来说,Mallet是一个Java包,用于文本的统计自然语言处理、文本分类、聚类、主题建模、信息抽取等机器学习app。虽然听起来很可怕,但是在Python面前,学生其实是平等的。果然是一个字。下一行代码。

  gens im . models . wrappers . LDA mallet(mallet _ path,corpus,4,dictionary))。

  这里显示mallet_path可以在线下载。(http://mallet.cs.umass.edu/download。PHP),我下载了mallet-2.0.8,并将路径设置为。/mallet-2.0,并发布了下面的完整代码。其实很简单,和以前差不多。

  efmallet_model(self):

  " @ LDA建模,使用@ description:mallet @ param @ return:"

  mallet _ path=。/mallet-2.0.8/wj DBM/mallet

  字典,语料库=self.weibo_lda(

  texts=self.fenci_data(

  LDA _ model=gens im . models . wrappers . LDA mallet(mallet _ path,corpus,num_topics=4,id2word=dictionary))

  LDA _ model.save。/mallet _4。模型’)

  cv _ tmp=coherence模型(model=LDA _ model,texts=texts,dictionary=dictionary,coherence=c_v ))

  打印(coherence: (})。format) cv _ tmp.get _ coherence))

  如上所述,在最初的LDA模型中,以文本建模的方式使用了词袋模型,但只要词袋模型存在严重问题,就可以了。常用词数量多,专有名词数量少。这种建模方法存在一定的不合理性。为了解决词袋模型的问题,科学家们开始使用TF-IDF对文本进行建模。TF-IDF这里不多解释了。大家都是自己用百度和谷歌。总之,这就是上面的词袋模型中可以用TF-IDF解决的字数问题。这里的重点是如何用Python实现TF-IDF训练LDA模型,通过构造型和一个代码来解决问题。

  tfidf=型号。TfidfModel(语料库)

  语料库_ tfi df=tfi df[语料库]

  下面的描述中,这里的语料库是之前生成的词袋模型,格式为{字数:词度}。这里生成的corpus_tfidf相当于原码的corpus,其他基本和原码一样。以下是三组实验的结果:

  在这个实验之前,我觉得Mallet的模型得分会高一点,但毕竟是比较新的技术。结果会很尴尬。因为和之前看到的投稿结果不一样,所以考虑了原因。也许是因为数据问题,Mallet训练的模型的匹配度和困惑度得分并不比原模型高。(一致性比原模型低,混乱度比原模型高,达到“不能做什么”的结果。然而,这里有另一种方法来获得LDA模型。各位,当我们训练自己的模型时,毕竟程序员展现价值的地方在于他们不断的努力!

  使用TF-IDF后,我们的模型在数据集上得到了改进。与传统模型相比,一致性更高,混淆度更低,但也有一些改进。在完成了不同的实现之后,让我们来看看0202对传统LDA的改进。

  优化思维

  在本文的开头,我提到了传统的词袋模型无法解决文本中的词序问题,即生成的模型没有考虑词与词之间的顺序。现在这个问题肯定已经解决了,比如跟踪。

  环形神经网络(RNN),以及循环神经网络的升级版,长短期记忆网络(LSTM),那么我们就可以把神经网络和传统的LDA结合起来。下面的论文都与这方面有关。

  Latelstm分配联合聚类和序列数据的非线性动态建模(来自2017年机器学习国际会议)

  LSTM神经网络在语言建模中的应用[C]//文本、语音和对话国际会议。施普林格,柏林,海德堡,2013: 105-112。

  谢X,刘X,李T,等. LDA聚类在基于特征的DNN自适应中的应用[C]//INTERSPEECH .2017: 2396-2400.

  haidar M . A,Kurimo M. LDA .基于上下文相关的递归神经网络语言模型使用基于文档的词的主题分布[C]//2017 IEEE声学、语音和信号处理国际会议(ICASSP)。IEEE,2017: 5730-5734。

  附言

  到目前为止,我已经研究这个LDA相关技术一周左右了。理论还没看懂,还在看,主要是‘LDA数学八卦’和‘LDA漫游指南’。什么?你问我第一篇文章是怎么写的。肯定不是我写的,是我们团的大神自己写的。有人说LDA是过时的技术。其实我想说,我不知道技术是否过时,但里面的数学原理在下个世纪肯定不会过时。如果你懂了里面的数学,其他技术肯定也差不多。

  好了,LDA的用户手册到此为止。下一个话题是什么?这么大的事,还得问主任。目前钱不够,演员未定,剧本拿不到。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: