每次我在同一语料库上训练时,LDA 模型都会生成不同的主题

2024-02-26

我正在使用Pythongensim从包含 231 个句子的小语料库中训练潜在狄利克雷分配 (LDA) 模型。然而,每次我重复这个过程,它都会产生不同的主题。

为什么相同的LDA参数和语料每次生成不同的主题?

如何稳定话题生成?

我正在使用这个语料库(http://pastebin.com/WptkKVF0 http://pastebin.com/WptkKVF0)和这个停用词列表(http://pastebin.com/LL7dqLcj http://pastebin.com/LL7dqLcj)这是我的代码:

from gensim import corpora, models, similarities
from gensim.models import hdpmodel, ldamodel
from itertools import izip
from collections import defaultdict
import codecs, os, glob, math

stopwords = [i.strip() for i in codecs.open('stopmild','r','utf8').readlines() if i[0] != "#" and i != ""]

def generateTopics(corpus, dictionary):
    # Build LDA model using the above corpus
    lda = ldamodel.LdaModel(corpus, id2word=dictionary, num_topics=50)
    corpus_lda = lda[corpus]

    # Group topics with similar words together.
    tops = set(lda.show_topics(50))
    top_clusters = []
    for l in tops:
        top = []
        for t in l.split(" + "):
            top.append((t.split("*")[0], t.split("*")[1]))
        top_clusters.append(top)

    # Generate word only topics
    top_wordonly = []
    for i in top_clusters:
        top_wordonly.append(":".join([j[1] for j in i]))

    return lda, corpus_lda, top_clusters, top_wordonly

####################################################################### 

# Read textfile, build dictionary and bag-of-words corpus
documents = []
for line in codecs.open("./europarl-mini2/map/coach.en-es.all","r","utf8"):
    lemma = line.split("\t")[3]
    documents.append(lemma)
texts = [[word for word in document.lower().split() if word not in stopwords]
             for document in documents]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]

lda, corpus_lda, topic_clusters, topic_wordonly = generateTopics(corpus, dictionary)

for i in topic_wordonly:
    print i

为什么相同的LDA参数和语料每次生成不同的主题?

因为 LDA 在训练和推理步骤中都使用随机性。

如何稳定话题生成?

通过重置numpy.random每次训练模型或执行推理时都将种子设置为相同的值,其中numpy.random.seed:

SOME_FIXED_SEED = 42

# before training/inference:
np.random.seed(SOME_FIXED_SEED)

(这很丑陋,而且它使 Gensim 结果难以重现;考虑提交补丁。我已经打开了一个issue https://github.com/piskvorky/gensim/issues/113.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每次我在同一语料库上训练时,LDA 模型都会生成不同的主题 的相关文章

  • Python CSV Writer 在文件末尾留下一个空行

    以下代码在 txt 文件末尾留下一个空白行 我怎样才能不让 writerows 不终止最后一行 with open fname wb as myFile Start the CSV Writer wr csv writer myFile d
  • 在 Python 中,部分函数应用(柯里化)与显式函数定义

    在 Python 中 以下方式是否被认为是更好的风格 根据更一般的 可能是内部使用的功能显式定义有用的功能 或者 使用偏函数应用来显式描述函数柯里化 我将通过一个人为的例子来解释我的问题 假设编写一个函数 sort by scoring 它
  • 使用 glGetFloatv 检索 pyglet 中的模型视图矩阵

    我正在使用 pyglet 在 python 中进行 3D 可视化 并且需要检索模型视图和投影矩阵来进行一些选择 我使用以下方式定义我的窗口 from pyglet gl import from pyglet window import wi
  • 如何将人物传奇带到前台?

    我有一系列子图 其中每个子图都有一个图例 我想在每个子图之外与相邻子图重叠 问题在于图例位于其自己的图的 顶部 但位于相邻图的下方 Legend 不将 zorder 作为参数 所以我不知道如何解决这个问题 这是我使用过的代码 import
  • Python,将字典存储在数据库中

    在数据库中存储和检索 python 字典的最佳方法是什么 如果您对使用传统 SQL 数据库 例如 MySQL 不是特别感兴趣 您可以研究非结构化文档数据库 其中文档自然映射到 python 字典 例如MongoDB http www mon
  • 使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

    非常简单的例子是 city print city 我期望输出是 但实际上输出是相反的字符串 字母看起来有点不同 因为它们有开始 中间和结束形式 我无法将其粘贴到此处 因为复制粘贴会再次更正字符串的顺序 如何在 Linux 终端上正确打印阿拉
  • Django“模型”对象不可迭代

    我有一张表 其中显示了已注册的员工 我想根据他们的数据库生成一个简单的 HTML 页面 其中包括他们的姓名 id 职称等 为此 我将一个 id 传递给视图 以便它可以获取相应用户的详细信息并向我显示 一切正常 直到出现错误对象不可迭代 下面
  • Pygooglevoice登录错误

    另一个人问了这个问题 但没有回复 所以我再问一遍 我正在尝试使用 pygooglevoice API 但是当我运行 SMS py 示例脚本时 它给了我一个登录错误 我已经安装了 Enthought python 我想也许我还需要安装其他东西
  • Django Rest Framework 序列化器中的聚合(和其他带注释的)字段

    我正在尝试找出添加带注释字段的最佳方法 例如将任何聚合 计算 字段添加到 DRF 模型 序列化器 我的用例只是一种情况 端点返回的字段未存储在数据库中 而是从数据库计算得出 让我们看下面的例子 模型 py class IceCreamCom
  • 为什么最简单的 requests_mock 示例在 pytest 中失败?

    我有一个特殊的问题requests mock 我想用它pytest测试我的 API 包装器库 我尝试过使用requests mock 文档中的第一个示例 http requests mock readthedocs io en latest
  • 在 python 中使用 subprocess.call 时如何将 stdout 重定向到文件?

    我正在从另一个 python 脚本 A 调用一个 python 脚本 B 使用 subprocess call 如何将 B 的标准输出重定向到指定的文件 我正在使用 python 2 6 1 传递一个文件作为stdout参数为subproc
  • Python itertools groupby 中令人不安的奇怪行为/错误?

    我在用itertools groupby解析一个短的制表符分隔的文本文件 文本文件有几列 我想做的就是对具有特定值的所有条目进行分组x在特定的列中 下面的代码对名为的列执行此操作name2 寻找变量中的值x 我尝试使用以下方法来做到这一点c
  • 枚举上的 random.choice

    我想用random choice on an Enum I tried class Foo Enum a 0 b 1 c 2 bar random choice Foo 但是这段代码失败了KeyError 我怎样才能随机选择一个成员Enum
  • 返回吃异常

    我至少发现了以下行为weird def errors try ErrorErrorError finally return 10 print errors prints 10 It should raise NameError name E
  • 如何从 IDLE 命令行运行 Python 脚本?

    在 bash shell 中 我可以使用 bash 或 source 手动调用脚本 我可以在 Python IDLE 的交互式 shell 中做类似的事情吗 我知道我可以转到文件 gt gt 打开模块 然后在单独的窗口中运行它 但这很麻烦
  • Python 对列表中的值求和(如果它存在于另一个列表中)

    我有一个列表和一组 a list 1 2 2 1 1 1 b list 1 2 我正在寻找对应 b list 中的项目并将它们从 a list 中的值相加 以便输出为 1 3 2 1 我尝试过的 sum 0 for i in a list
  • 将同一 numpy 数组的两个视图组合成单个视图而不复制数组?

    我有一个大型 2d numpy 数组 我想删除它的子集并处理函数剩下的内容 我需要对许多子集执行此操作 因此理想情况下我不想每次都创建数组的副本 该函数不会更改数组中的任何值 mat np load filename mat 1 mat i
  • 将 .parquet 编码为 io.Bytes

    目标 将 Parquet 文件上传到 MinIO 这需要将文件转换为字节 我已经能够做到这一点了 csv json and txt bytes data to csv encode utf 8 bytes json dumps self d
  • 真实值与预测值的降维可视化

    我有一个数据框 如下所示 label predicted F1 F2 F3 F40 major minor 2 1 4 major major 1 0 10 minor patch 4 3 23 major patch 2 1 11 min
  • 使用 TkInter 绑定设置不可交互(点击)覆盖

    我已经浏览了其他几篇关于类似问题的帖子 所有这些似乎都指向this https stackoverflow com questions 29458775 tkinter see through window not affected by

随机推荐

  • 将双向实体方法与 Mapstruct 结合使用

    我有双向映射 OneToMany Hibernate 和额外的方法来确保两个对象链接 简单的例子 Setter class ParentDto List
  • PHP urlencode - 仅对文件名进行编码,不要触及斜杠

    http www example com some folder some file that needs to be encoded zip urlencode myurl 问题是urlencode还会对斜杠进行编码 从而导致 URL 无
  • 在不同目录中导入类

    其实我是想在 Think in Java 中完成这个练习 以达到自学的目的 练习 6 2 创建一个接口 在其自己的包中至少包含一个方法 创建一个 类在一个单独的包中 添加一个实现该接口的受保护内部类 在一个 第三个包 从您的类继承 并在方法
  • 如何获取调用堆栈回溯? (深度嵌入,无库支持)

    我希望我的异常处理程序和调试函数能够打印调用堆栈回溯 基本上就像 glibc 中的 backtrace 库函数一样 不幸的是 我的 C 库 Newlib 不提供这样的调用 我有这样的事情 include
  • 在 Rails 5 中将类添加到 bootstrap_form_for collection_select

    我使用 bootstrap form for 创建表单并选择一个集合 我想在其中添加自定义类 我尝试过这个 但这不起作用 有任何想法吗 许多 Rails 助手采用多个哈希参数 这个collection select方法的定义如下 colle
  • Java ClassCastException 具有不同包中的两个相同的类,通过网络发送

    我遇到以下问题 我的项目由两个包 客户端和服务器 组成 其中每个包都有类Package 现在我想通过网络发送这个类ObjectOutputStream ObjectInputStream像这样 Client this is in packa
  • new() 在 `where T: new()?` 中做什么?

    下面代码中的 new 做了什么 public class A
  • 构建 REST API 的在线文档

    我正在构建我的第一个 Rest API 它将数据序列化为 JSON 和 XML 格式 我想向 API 客户端提供一个索引页面 他们可以在其中选择已实现的端点 我需要包含哪些信息才能使我的 API 最有用 我应该如何组织它 这是一个非常复杂的
  • 如何通过 ID 检查 WooCommerce 订单的付款方式?

    如果选择的付款方式是货到付款 我想进行一些更改 在我使用过的现有 WC Order 上 order gt payment method title Cash On Delivery 检索标题 但我想检查 id cod 因为标题字符串被翻译成
  • 类数据成员的初始化顺序

    在下面的代码中 当 ctor 为X被称为意志的演员A or B被先叫 它们在类主体中的放置顺序是否控制这一点 如果有人可以提供一段来自 C 标准的文本片段来讨论这个问题 那就完美了 class A class B class X A a B
  • Typescript 中的全局类型

    有没有办法在打字稿文件中创建一个定义全局可访问类型的文件 我喜欢打字稿 但发现当我想要真正类型安全时 我必须从整个系统显式导入类型 这是相当烦人的 是的 这是可能的 您可以在这里找到所有信息 https www typescriptlang
  • 将js对象键名称中的点替换为下划线

    我需要遍历 js 对象并将该对象键中的所有点替换为下划线 例如 a a test to a a test 这是我的代码 Object getOwnPropertyNames match forEach function val idx ar
  • 当虚拟对象具有指定长度时传递字符串作为参数

    如果我有这个代码 module test contains subroutine xx name character len 20 intent in optional name if present name then print nam
  • 规范的 xpath 问题?

    如果将单个点转换为自我 节点 在 xpath 中 Source http msdn microsoft com en us library aa546839 28v bts 70 29 aspx 那么为什么这会起作用
  • 规范化 URL 去掉尾部斜杠

    实施Location normalize在 Angular 2 中 从 URL 中去除尾部斜杠 文档 https angular io docs ts latest api common index Location class html
  • 如何向 Qml 公开用于计算的 C++ 结构

    我有以下问题 我正在 C 中开发一个模型 在 Qml 中开发一个视图 通过控制器连接它们 在我的模型中 我执行了多项计算 我还为我的应用程序的用户提供了编写用 qml 编写的自定义事件处理程序的可能性 现在我遇到了一个问题 我决定使用定点表
  • 充当具有多个模型的树

    我有几个模型想要按层次结构关联在一起 为了简单起见 假设我有这三个 class Group lt ActiveRecord Base acts as tree has many users end class User lt ActiveR
  • T-SQL 美元符号表达式

    In 这个答案 https stackoverflow com a 7213596 3345644 有一个技巧可以使用ROW NUMBER 窗口函数中带有 常量 ORDER BY clause SELECT ROW NUMBER OVER
  • 为什么将数据导出到 .xlsx 比导出到 .xls 或 .csv 慢得多?

    我有一个要导出到 Excel 的数据框 人们希望它是 xlsx 格式 我用to excel 但是当我将扩展名从 xls 更改为 xlsx 时 导出步骤大约需要 9 秒 而不是 1 秒 导出到 csv 甚至更快 我相信这是因为它只是一个特殊格
  • 每次我在同一语料库上训练时,LDA 模型都会生成不同的主题

    我正在使用Pythongensim从包含 231 个句子的小语料库中训练潜在狄利克雷分配 LDA 模型 然而 每次我重复这个过程 它都会产生不同的主题 为什么相同的LDA参数和语料每次生成不同的主题 如何稳定话题生成 我正在使用这个语料库