问题标签 [perplexity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
text - 执行困惑函数评估 LDA 模型时出错
我正在尝试评估主题建模(LDA)。执行困惑函数时出现错误:(函数(类,fdef,mtable)中的错误:无法为签名“LDA_Gibbs”,“numeric”的函数“困惑”找到继承的方法有人请帮助解决这个问题。
python - nltk calc perplexity of bigram/trigram
我训练 bgram,trigram:
并想计算困惑度:
但是得到一个错误:
AttributeError:“生成器”对象没有属性“困惑”
应该如何计算困惑度?
keras - 检查语言模型的困惑度
我用 Keras LSTM 创建了一个语言模型,现在我想评估它是否好,所以我想计算困惑度。
在 Python 中计算模型的困惑度的最佳方法是什么?
python - Python: handling large numbers
I need to count perplexity and I try to do it with
And after some steps my perplexity
is equal to infinity.
I need to get number and as last step to do pow(perplexity, 1/float(n))
Is any to multiply numbers like and get result?
tensorflow - 在 Keras/Tensorflow 中计算困惑度和内存问题
我想在每个训练时期后用 Perplexity 评估我的模型。我正在使用带有 Tensorflow 后端的 Keras。问题是,在每次评估之后,越来越多的内存被使用但从未释放。所以在几个时代之后,我的系统崩溃了。如果我不使用 keras 和 tensorflow 函数,它可以在没有内存问题的情况下工作。但是那样会太慢了。这是代码:
python - 使用 Mallet Perplexity 的 Gensim 主题建模
我是哈佛图书馆书名和主题的主题建模。
我使用 Gensim Mallet Wrapper 与 Mallet 的 LDA 进行建模。当我尝试获取 Coherence 和 Perplexity 值以查看模型有多好时,perplexity 无法计算,但出现以下异常。如果我使用 Gensim 的内置 LDA 模型而不是 Mallet,我不会得到同样的错误。我的语料库包含 7M+ 文档,长度不超过 50 个单词,平均 20 个单词。所以文档很短。
以下是我的代码的相关部分:
困惑:-47.91929228302663
连贯性分数:0.28852857563541856
LDA 给出的分数没有问题。现在我用 MALLET 模拟同一个词袋
连贯性分数:0.5994123896865993
然后我询问 Perplexity 值并获得低于警告和 NaN 值。
/app/app-py3/lib/python3.5/site-packages/gensim/models/ldamodel.py:1108:RuntimeWarning:在乘法得分中遇到无效值+ = np.sum((self.eta - _lambda)* Elogbeta )
困惑:南
/app/app-py3/lib/python3.5/site-packages/gensim/models/ldamodel.py:1109:RuntimeWarning:减分中遇到无效值+ = np.sum(gammaln(_lambda)-gammaln(self。埃塔))
我意识到这是一个非常 Gensim 特定的问题,需要对这个函数有更深入的了解:gensim.models.wrappers.ldamallet.malletmodel2ldamodel(ldamallet)
因此,我将不胜感激对警告和 Gensim 域的任何评论。
python - 如何在开发数据上测试 word2vec?
在计算机作业中,要求实现 word2vec 算法以使用神经网络为某些单词生成密集向量。我实现了神经网络并通过训练数据对其进行了训练。首先,如何通过测试数据对其进行测试?该问题要求绘制一个图表,显示训练(时期)期间训练和测试数据的困惑度。我可以为损失做到这一点,就像这样:
我通过以下代码获得:
但是,我不知道如何找到每个 epoch 中训练和开发数据的困惑。基于这个问题,据说困惑是2**loss
。然而,当我尝试这个公式时,我获得了INF
. 你能指导我如何计算困惑度吗?我可以在当前代码中执行此操作,还是应该对整个开发数据应用一个函数?
nlp - 如何计算文本分类中的困惑度?
我正在使用 scikit learn、naive bayes 和 countvectorizer 进行方言文本分类。到目前为止,我只做 3 种方言文本分类。我将添加一种新的方言(或者实际上,这些方言的正式语言)。问题是,我要添加的新文本与其他 3 种方言有很多相同的词。所以我在一份研究文件中阅读了以下内容:
我们从收集的数据中为每种方言训练一个 n-gram 模型。为了训练 MSA 模型,我们从阿拉伯联合国语料库和新闻集中选择句子。所有方言和 MSA 模型共享相同的词汇表,因此可以正确比较困惑度。在分类时,给定一个输入句子,分类器计算每种方言类型的困惑度,并选择困惑度最小的一个作为标签。
他们的意思是 MSA(现代标准阿拉伯语),这是这些方言的正式语言。他们如何计算困惑度?他们只是使用朴素贝叶斯还是更多?
python - 困惑度随着主题数量的增加而增加
关于这个特定问题有很多帖子,但我无法解决这个问题。我一直在用 Sklearn 和 Gensim 实现在 20newgroup 语料库上试验 LDA。文献中描述了困惑通常会随着主题数量的增加而减少,但我得到了不同的结果。
我已经尝试过不同的参数,但总的来说,当增加主题数量时,测试集的困惑度会增加,而训练集的困惑度会降低。这可能表明该模型在训练集上过度拟合。但是在使用其他文本数据集时会出现类似的模式。此外,专门使用该数据集的研究的困惑度有所降低。(例如ng20 困惑)
我已经对 SkLearn、Gensim 和 Gensim Mallet 包装器进行了实验,所有包都显示了不同的困惑度值(这是可以预料的,因为 LDA 是随机初始化的 + 不同的推理算法),但常见的模式是每个包的困惑度确实增加,这与文献中的许多论文相矛盾。
小示例代码
我希望所有的困惑都会减少,但我得到以下输出:
k = 5,训练困惑度:5531.15,测试困惑度:7740.95
k = 10,训练困惑度:5202.80,测试困惑度:8805.57
k = 15,训练困惑度:5095.42,测试困惑度:10193.42
编辑:运行 5 折交叉验证(从 10-150,步长:10)并平均每折的困惑度后,创建以下图。似乎训练集的困惑度仅在 1-15 个主题之间降低,然后在进入更高主题数时略有增加。测试集的困惑度不断增加,几乎是线性的。sklearn/gensim 实现和研究发表的困惑度降低之间的困惑度计算是否存在差异。