精华内容
下载资源
问答
  • 包括Python分词,去停用词,使用gensim包进行LDA主题分析,并输出每条矩阵属于每个主题的概率的代码,以及停用词表
  • 提出了利用LDA主题模型发掘"方剂—证型—组成成分"的隐含关系的方法,将"方剂—组成成分"转换成"方剂—证型"和"证型—组成成分"两个概率分布,并利用KL距离来计算相似度。实验结果表明基于LDA主题模型的方法能够更好地...
  • 为提升传统LDA 模型的主题识别性能, 并给...阵, 并将传统LDA 模型的主题数目选择问题转化为聚类效果评价问题, 以内部指标F 统计量作为目标函数,计算主题聚类数目的最优解, 并对新旧两种模型的主题识别效果进行比较。
  • LDA主题模型详解

    2019-04-10 23:57:15
    DA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或...每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。 这是论坛上高手所总结。
  • 目标:针对给定输入文本与文本库,计算得出文本库中与输入文本最相似的文本对于人类,两句话的相似性一般都从语义上进行考虑,大白话说就是”这两句话说的是同一件事儿/同一个意思“。相似的句子可能会有相似的语法...

    目标:针对给定输入文本与文本库,计算得出文本库中与输入文本最相似的文本

    对于人类,两句话的相似性一般都从语义上进行考虑,大白话说就是”这两句话说的是同一件事儿/同一个意思“。相似的句子可能会有相似的语法。

    对于当前的计算机来说,已经用标点符号等区分开了句子与句子,但如何理解、表达句子的意思是个难题,也就是需要人工定义语义的概念。另外,人类语言世界中的句子通常都有一定的使用环境,但到了计算机系统中全都统一存储为二进制,使得部分语义在”语言数字化“这一过程中丢失。(类比所有的模拟信号转化为数字信号都存在这样的问题。)

    短文本是社交网络中更加流行的文本形式,特点在于长度短、特征稀疏、实时性强,在舆论监控、热点追踪上可以挖掘出更多有用的信息。短文本由于其特征稀疏、语义依赖强、不遵循语法等特点难以直接应用已有长文本处理技术进行分析。

    文本分析主要分析方向为文本的特征提取、分类、相似度分析和情感分析等。其研究方法可以主要分为两种,基于句法-语义规则的理性方法、统计数学方法。

    基于以上背景,短文本理解通常可以按显性分析和隐性分析两个角度进行划分:

    显性分析方法是从人的角度解释性强的解释方法,包括词义、词性、句法、语义等。这种方法需要有知识库进行匹配。词汇角度的分析上,已有的研究包括WordNet、Hownet、哈工大同义词词林等;ESA算法构建一个词与文本的共现矩阵,词向量的每一个维度代表一个明确的知识库文本,如Wikipedia文章或标题。句法角度的分析,已有研究包括哈工大LTP平台,Stanford Parser,Berkeley Parser,并通常与词汇分析共同使用。

    隐性分析方法是将文本转化为向量表示,从统计规律上弥补因文本数字化导致的语义缺失,使计算机理解文本,而少注重可解释性。

    LSA的核心是在相同语境下出现的词具有较高的语义相关性,其构建一个词语文本的共现矩阵,矩阵每项通常是经过平滑或转化的共现次数,再通过SVD方法将原始矩阵降维。HAL构建词与词的共现矩阵,每个维度代表一个语境词,统计目标词汇与语境词汇的共现次数。LSA和HAL方法中的向量维度是难以从人的角度进行解释的。

    可以在一定程度进行解释的算法称为半隐性分析方法,同样是用向量对词语和文本进行表示,但是在二者之间可以使用“主题”对向量维度进行理解。这一类的代表算法是LDA(Latent Dirichlet Allocation),算法结果为得到两个概率矩阵,维度分别为文本-主题的概率分布矩阵和主题-词的概率分布矩阵。

    下图对上述算法的共现矩阵关系进行总结:

    除了上述方法,更直接的方法可以利用现有工具将文本、词汇直接转为向量,利用聚类、距离计算等方法进行分析。

    相似性的计算只需在以上模型的基础上进一步进行向量距离的度量、聚类等即可实现。

    以上。欢迎各路大神指点。

    展开全文
  • 主题模型LDA.ppt

    2020-02-21 22:49:04
    LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。
  • 提出了利用LDA主题模型发掘“方剂—证型—组成成分”的隐含关系的方法,将“方剂—组成成分”转换成“方剂—证型”和“证型—组成成分”两个概率分布,并利用KL距离来计算相似度。实验结果表明基于LDA主题模型的方法...
  • LDA主题模型.zip

    2019-01-05 21:56:20
    LDA主题模型是一种文档生成模型,是一种非监督机器学习技术。它认为一篇文档是有多个主题的,而每个主题又对应着不同的词。一篇文档的构造过程,首先是以一定的概率选择某个主题,然后再在这个主题下以一定的概率...
  • LDA 模型表示文本词汇的概率分布,通过香农信息抽取体现主题的关键词。采用背景词汇聚类及主题词联想的方式将主题词 扩充到待分析文本之外,尝试挖掘文本的主题内涵。模型拟合基于快速 Gibbs 抽样算法进行。实验...
  • LDA主题模型困惑度计算

    千次阅读 2018-09-26 19:13:12
    对于LDA模型,最常用的两个评价方法困惑度(Perplexity)、相似度(Corre)。  其中困惑度可以理解为对于一篇文章d,所训练出来的模型对文档d...其中p(w)指的是测试集中每个单词出现的概率计算公式如下。p(z|d...

     对于LDA模型,最常用的两个评价方法困惑度(Perplexity)、相似度(Corre)。

        其中困惑度可以理解为对于一篇文章d,所训练出来的模型对文档d属于哪个主题有多不确定,这个不确定成都就是困惑度。困惑度越低,说明聚类的效果越好。

       计算公式     分母是测试集中所有单词之和,即测试集的总长度,不用排重。其中p(w)指的是测试集中每个单词出现的概率,计算公式如下。p(z|d)表示的是一个文档中每个主题出现的概率,就是程序中的.theta文件,p(w|z)表示的是词典中的每一个单词在某个主题下出现的概率,就是程序中的.phi文件。

    复制代码

     1 public void getRe(double[][] phi, double[][] theta){
     2         double count = 0;
     3         int i = 0;
     4         Iterator iterator = userWords.entrySet().iterator();
     5         while(iterator.hasNext()){
     6             Map.Entry entry = (Map.Entry) iterator.next();
     7             ArrayList<String> list = (ArrayList<String>) entry.getValue();
     8             double mul = 0;
     9             for(int j = 0; j < list.size(); j++){
    10                 double sum = 0;
    11                 String word = list.get(j);
    12                 int index = wordMap.get(word);
    13                 for (int k = 0; k < K; k++){
    14                     sum = sum + phi[k][index] * theta[i][k];
    15                 }
    16                 mul = mul + Math.log(sum);
    17             }
    18             count = count + mul;
    19             i++;
    20         }
    21         count = 0 - count;
    22         P = Math.exp(count / N);
    23         System.out.println("Perplexity:" + P);

    复制代码

    对于不同Topic所训练出来的模型,计算它的困惑度。最小困惑度所对应的Topic就是最优的主题数。

     

    转载自https://www.cnblogs.com/bydream/p/6844499.html

    展开全文
  • LDA主题分析代码实现

    2021-04-22 06:47:43
    主题文本分析:首先读取txt文本,并删除stop_list中存放的停止词汇f = open('..\\LDA_test.txt')texts = [[word for word in line.strip().lower().split() if word not in stop_list] for line in f]print('Text = ...

    主题文本分析:

    首先读取txt文本,并删除stop_list中存放的停止词汇

    f = open('..\\LDA_test.txt')

    texts = [[word for word in line.strip().lower().split() if word not in stop_list] for line in f]

    print('Text = ')

    pprint(texts)  #输出格式处理好的文本内容

    然后计算生成文本内容的词典

    dictionary = corpora.Dictionary(texts)

    print('corpora.Dictionary:')

    print(dictionary)

    然后将每个文档或者文档中的每个句子(一行)向量化

    corpus = [dictionary.doc2bow(text) for text in texts]

    print('corpus')

    print(corpus)

    然后计算词频

    corpus_tfidf = models.TfidfModel(corpus)[corpus]

    print('corpus_tfidf:')

    print(corpus_tfidf)

    然后可以条用LSI模型做文本分析

    lsi = models.LsiModel(corpus_tfidf, num_topics=2, id2word=dictionary)

    topic_result = [a for a in lsi[corpus_tfidf]]

    pprint(topic_result) #输出每个文档或者每行句子的主题

    1335113

    或者输出每个主题的词汇构成

    print('LSI Topics:')

    pprint(lsi.print_topics(num_topics=2, num_words=5))

    1335113

    计算文档两两之间的相似度

    similarity = similarities.MatrixSimilarity(lsi[corpus_tfidf])   # similarities.Similarity()

    print('Similarity:')

    pprint(list(similarity))

    1335113

    也可以用LDA模型来做主题分析

    num_topics = 2

    lda = models.LdaModel(corpus_tfidf, num_topics=num_topics, id2word=dictionary,

    alpha='auto', eta='auto', minimum_probability=0.001, passes=10)

    输出每个文档的主题分布:

    doc_topic = [doc_t for doc_t in lda[corpus_tfidf]]

    print('Document-Topic:\n')

    pprint(doc_topic)

    1335113

    或者:

    for doc_topic in lda.get_document_topics(corpus_tfidf):

    print(doc_topic)

    然后输出每个主题的词分布:

    for topic_id in range(num_topics):

    print('Topic', topic_id)

    # pprint(lda.get_topic_terms(topicid=topic_id))

    pprint(lda.show_topic(topic_id))

    1335113

    计算文档之间的相似度

    similarity = similarities.MatrixSimilarity(lda[corpus_tfidf])

    print('Similarity:')

    pprint(list(similarity))

    基于lda第三方库实现的主题分析

    需要先安装这个第三方库lda( pip install lda)

    首先要把每个文档的格式转换为向量来表示

    所以多个文档就形成了一个矩阵,维度为k*n,k为每个文档向量的长度,n为文档个数

    例如:矩阵中的每个元素可以用tf—idf词频来表示

    1335113

    利用LDA模型进行建模

    topic_num = 20

    model = lda.LDA(n_topics=topic_num, n_iter=800, random_state=1)

    model.fit(X)

    输出各个主题的词分布

    topic_word = model.topic_word_

    print(("type(topic_word): {}".format(type(topic_word))))

    print(("shape: {}".format(topic_word.shape)))

    print((topic_word[:, :5]))  #由于词分布太长了,所以只用输出部分

    可以输出每个主题topK个词汇:

    n = 7

    for i, topic_dist in enumerate(topic_word):

    topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n + 1):-1]

    print(('*Topic {}\n- {}'.format(i, ' '.join(topic_words))))

    其中vocab为所有文档的词汇元组,就是对应词向量的词汇元组

    长度等于每个文档词向量的长度

    最终输出我们想要知道的每个文档对应的最有可能的主题:

    doc_topic = model.doc_topic_

    print(("type(doc_topic): {}".format(type(doc_topic))))

    print(("shape: {}".format(doc_topic.shape)))

    for i in range(10):

    topic_most_pr = doc_topic[i].argmax()

    print(("文档: {} 主题: {} value: {}".format(i, topic_most_pr, doc_topic[i][topic_most_pr])))

    最后是可视化:

    mpl.rcParams['font.sans-serif'] = ['SimHei']

    mpl.rcParams['axes.unicode_minus'] = False

    # Topic - word

    plt.figure(figsize=(7, 6))

    # f, ax = plt.subplots(5, 1, sharex=True)

    for i, k in enumerate([0, 5, 9, 14, 19]):

    ax = plt.subplot(5, 1, i+1)

    ax.plot(topic_word[k, :], 'r-')

    ax.set_xlim(-50, 4350)   # [0,4258]

    ax.set_ylim(0, 0.08)

    ax.set_ylabel("概率")

    ax.set_title("主题 {}".format(k))

    plt.xlabel("词", fontsize=13)

    plt.tight_layout()

    plt.suptitle('主题的词分布', fontsize=15)

    plt.subplots_adjust(top=0.9)

    plt.show()

    # Document - Topic

    plt.figure(figsize=(7, 6))

    # f, ax= plt.subplots(5, 1, figsize=(8, 6), sharex=True)

    for i, k in enumerate([1, 3, 4, 8, 9]):

    ax = plt.subplot(5, 1, i+1)

    ax.stem(doc_topic[k, :], linefmt='g-', markerfmt='ro')

    ax.set_xlim(-1, topic_num+1)

    ax.set_ylim(0, 1)

    ax.set_ylabel("概率")

    ax.set_title("文档 {}".format(k))

    plt.xlabel("主题", fontsize=13)

    plt.suptitle('文档的主题分布', fontsize=15)

    plt.tight_layout()

    plt.subplots_adjust(top=0.9)

    plt.show()

    展开全文
  • 机器学习之LDA主题模型算法

    千次阅读 2018-10-01 21:31:04
    文章目录1、知道LDA的特点和应用方向1.1、特点1.2、应用方向2、知道Beta分布和Dirichlet分布数学含义3、了解共轭先验分布4、知道先验概率和后验概率5、知道参数α值的大小对应的含义6、掌握LDA主题模型的生成过程7、...

    1、知道LDA的特点和应用方向

    1.1、特点

    知道LDA说的降维代表什么含义:将一篇分词后的文章降维为一个主题分布(即如20个特征向量主题)。
    根据对应的特征向量中的相关主题概率(20个主题的概率相加为1即为主题分布)得到对应的文档主题,属于无监督学习(你没有给每个数据打标签)

    1.2、应用方向

    信息提取与搜索(语义分析),文档的分、聚类,文章摘要,计算机视觉,生物信息等方向(只要包含隐变量都可考虑使用)

    PS:知道朴素贝叶斯在文本分析的劣势:无法识别一词多义和多词一意。

    2、知道Beta分布和Dirichlet分布数学含义

    Beta分布概率密度表达式是一条曲线,系数B的表达式是曲线下的面积。
    在这里插入图片描述
    知道二项分布的共轭先验分布是Beta分布,多项分布的共轭先验分布是Dirichlet分布。
    在这里插入图片描述
    知道Dirichlet分布的概率密度函数的数学含义:当K=3时,密度函数数学含义也就是一个曲面
    在这里插入图片描述

    3、了解共轭先验分布

    含义:找个一个先验分布和后验分布都满足于同一种分布的概率分布。这样你知道其中的一个分布就代表知道了另外一个分布。
    在这里插入图片描述

    4、知道先验概率和后验概率

    **先验概率:**是指根据以往经验和分析得到的概率.
    **后验概率:**事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小

    5、知道参数α值的大小对应的含义

    当α小于1的时候代表取某一个值的概率很高(即某一主题的概率很高即主题鲜明),=1的时候代表概率为均匀分布,大于1的时候代表k个p相同的概率增大。
    对应的z轴就代表这个点对应的概率
    在这里插入图片描述
    在这里插入图片描述

    6、掌握LDA主题模型的生成过程

    总结一句话:主题概率模型生成一个主题分布再生成一个主题,词概率模型生成主题的词分布再生成一个词;最终得到一个主题对应这个词。(连接的条件主题的标号)
    在这里插入图片描述
    在这里插入图片描述
    掌握整个过程:
    θ代表的一个主题分布,即K维的主题向量。

    1. 从α控制的Dirichlet分布的概率密度函数中采取一个对应的K维的主题分布即θm(第m篇文档的主题)
    2. 从β控制的Dirichlet分布的概率密度函数中生成K个对应的V维的词分布即φk
    3. Zm,n即代表第m个文档的第n个主题。当n=2时即代表采到第m篇文档的第二个主题,就到对应的β生成的第二个主题的词分布即φk(对应的第几个主题的词分布)
    4. 从φk中随机挑选一个词作为Wm,n的值(即第m篇文档第n个主题对应的词)
    5. 循环执行上述步骤得到每个主题对应的词
      在这里插入图片描述
      PS:各个参数的含义
      θm代表第m篇文档的主题分布(m为文档总数)
      φk表示第k个主题的词分布(k为主题的个数)
      Zm,n代表第m篇文档中的第n个主题
      Wm,n代表第m篇文档中的第n个单词

    7、知道超参数α等值的参考值

    在这里插入图片描述

    8、LDA总结

    • 由于在词和文档之间加入的主题的概念,可以较好的解决一词多义和多词一义的问题。
    • 在实践中发现,LDA用于短文档往往效果不明显一这是可以解释的:因为一个词被分配给某个主题的次数和一个主题包括的词数目尚未敛。往往需要通过其他方亲“连接”成长文档。
    • 用户评论/Twitter/微博囗LDA可以和其他算法相结合。首先使用LDA将长度Ni的文档降维到K维(主题的数目),同时给出每个主题的概率(主题分布),从而可以使用if-idf继续分析或者直接作为文档的特征进入聚类或者标签传播算法用于社区发现等问题。
    • 知道LDA是一个生成模型,由y得到对应的x(y代表的是主题,x代表的词)
    展开全文
  • LDA主题模型

    2021-02-06 23:38:48
    (一)LDA主题模型问题问题1:一篇文章,生成乐观主题、悲观主题的概率假设独立同分布(服从伯努利分布),生成n个主题。设生成乐观主题的概率为θ。1.伯努利分布Bernoulli distribution概率密度函数2.二项式分布...
  • LDA主题模型是Blei等人于2003年提出的一种文档主题生成模型,包括文档、主题和词项3个层级结构。LDA常被用于识别语料中潜在的主题信息。 LDA认为第m篇文档的生成方式如下: 1.对每个主题k∈[1,K],生成“主题-词项”...
  • LDA主题模型 | 原理详解与代码实战

    千次阅读 2021-01-17 12:44:17
    一是本文要讲的「隐含狄利克雷分布(Latent Dirichlet Allocation)」,是一种概率主题模型,主要用来文本分类,在NLP领域有重要应用。LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出...
  • LDA 主题模型的几种概率分布

    千次阅读 2015-09-11 13:15:42
    讲述了LDA主体模型中用到的几种概率分布模型 包括伯努利分布、二项分布、多项式分布、beta分布、Dirichlet分布,和他们的关系探讨
  • 文章目录训练LDA模型困惑度计算得到一段文本的主题全部代码及案例(可直接运行) 首先使用gensim库: pip install gensim 训练LDA模型 import gensim # pip install gensim from gensim import corpora def train_...
  • python下进行lda主题挖掘(三)——计算困惑度perplexity

    万次阅读 多人点赞 2018-03-07 17:07:19
    到2018年3月7日为止,本系列三篇文章已写完,可能后续有新的内容的话...python下进行lda主题挖掘(三)——计算困惑度perplexity 本篇是我的LDA主题挖掘系列的第三篇,专门来介绍如何对训练好的LDA模型进行评价。 ...
  • LDA主题模型及python实现

    千次阅读 2020-12-11 04:30:17
    LDA主题模型是一种文档生成模型,是一种非监督机器学习技术。它认为一篇文档是有多个主题的,而每个主题又对应着不同的词。一篇文档的构造过程,首先是以一定的概率选择某个主题,然后再在这个主题下以一定的概率...
  • 基于LDA主题模型的短文本分类

    千次阅读 2021-02-01 07:59:31
    LDA模型的基本思想是将文档描述为主题概率分布并进一步将主题描述为词项概率分布。LDA模型是一个3层Bayes结构,其LDA图模型下图所示。 LDA模型生成过程可描述如下: (1)文档d中词项总数Nd服从泊松分布,其...
  • 我们知道LDA主题模型的最优主题数可以使用困惑度来衡量,但使用困惑度确定最优主题已经被论文证明其实是不适用的。那有没有一种可行的方法计算出最优主题数呢?答案是肯定的,很多论文都会使用主题方差确定最优主题...
  • LDA 主题模型效果度量

    2020-12-29 04:08:03
    计算方法为:计算每篇文档的概率p(d),除以所有文档词的总数(不排重),乘以-1,求指数难点在于计算每篇文档的概率 参考1 参考2, 在Blei原始论文中并没有详说。一种方法是计算一篇文档所有词的概率和,即似然性,然后...
  • 该算法使用概率模型来检测指定主题的数量并提取其相关关键字。 例如,文档可能包含可以分类为与海滩有关和与天气有关的主题。 海滩主题可能包含相关的单词,例如沙子,海洋和水。 同样,天气主题可能包含相关的词,...
  • LDA常见的应用方向:信息提取和搜索(语义分析);文档分类/聚类、文章摘要、社区挖掘;基于内容的图像聚类、目标识别(以及其他计算机视觉应用);生物信息数据的应用;...LDA模型通过增加“主题”的方...
  • 目录什么是LDA主题模型背景知识贝叶斯理论gamma函数多个分布博鲁尼分布二项分布多项分布beta分布Dirichlet 分布开始了解LDAPython建模 什么是LDA主题模型 首先说明一下什么是主题模型。这里的主题模型是把一份份不同...
  • 计算perplexity确定LDA到底聚出多少个主题合适

    万次阅读 热门讨论 2018-05-06 20:34:36
    在对文本的主题特征进行研究时,我们往往要指定LDA生成的主题的数目,而一般的解决方法是使用perplexity来计算,原理如下(概率分布perplexity): 其中,M是测试语料库的大小,Nd是第d篇文本大小(即单词个数) ...
  • 主题模型就是用来发现文档所属主题并归类的算法,它是一种非监督机器学习技术,可以用来识别大规模文档集或预料库中...比如某篇新闻在“汽车”主题概率是60%,“科技”主题概率是20%,“财经”主题概率是10%,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,871
精华内容 2,348
关键字:

lda主题概率如何计算