zoukankan      html  css  js  c++  java
  • BTM学习小记

    BTM的原理跟LDA很像,下面是该模型的概率图:

    由该图可以看出来,与LDA的区别在于确定主题分布和词分布后相应地取两个词(而LDA只取一个,即类比常见的骰子说法:先投掷K面的骰子得到主题z,再根据相应的V面骰子,连续投掷两次,得到一对词汇),这俩词叫做biterm(就是在把一个文档分词之后,对这些词的设置一个距离指标,从第I个到第j个词之间两两结对,都可以看作一对biterm).从原文档得到biterm代码如下:

    def build_Biterms(self, sentence):

    """

    获取 document 的 biterms

    :param sentence: word id list sentence 是切词后的每一词的ID 的列表

    :return: biterm list

    """

        win = 15 # 设置窗口大小

        biterms = []

        for i in xrange(len(sentence)-1):

             for j in xrange(i+1, min(i+win+1, len(sentence))):

                  biterms.append(Biterm(int(sentence[i]),int(sentence[j])))

        return biterms

    BTM利用了整个文本集合来估计一个theta,解决了稀疏问题(我们通常有海量数据)。放宽了mixture of unigram中对整个文档必须同属于一个主题z的约束(相当于从整个文档放松到了窗口长度内的两个词),加强了LDA中每个词对应于一个Z的假设(BTM中约束了窗长内的两个词组成一个biterm对应于一个z)。这个假设很接近于人类认知,因为我们知道,通常在较短的一段文本内,topic变化不大。

  • 相关阅读:
    OOM when allocating tensor of shape [] and type float [[node conv2d_224/kernel/Initializer/random_uniform/min (defined at ./intances/utils.py:19) ]]
    前端H5,点击选择图片控件,图片直接在页面上展示~
    (五)共用体
    (四)结构体
    (三)指针和数组
    (二)内存分配
    (一)指针就是地址
    MinGW
    设计模式总结
    Java关于md5+salt盐加密验证
  • 原文地址:https://www.cnblogs.com/kjkj/p/9822888.html
Copyright © 2011-2022 走看看