[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-vi3k6i5--GuidedLDA":3,"tool-vi3k6i5--GuidedLDA":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",151314,2,"2026-04-11T23:32:58",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":78,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":102,"forks":103,"last_commit_at":104,"license":105,"difficulty_score":32,"env_os":106,"env_gpu":107,"env_ram":108,"env_deps":109,"category_tags":115,"github_topics":117,"view_count":32,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":124,"updated_at":125,"faqs":126,"releases":167},6831,"vi3k6i5\u002FGuidedLDA","GuidedLDA","semi supervised guided topic model with custom guidedLDA","GuidedLDA 是一款基于潜在狄利克雷分配（LDA）算法的半监督主题建模工具。传统的无监督 LDA 模型在自动挖掘文本主题时，生成的类别往往不够精准或难以符合业务预期。GuidedLDA 通过引入“种子词”机制巧妙解决了这一痛点：用户只需为每个期望的主题提供几个关键词作为引导，模型在训练过程中便会向这些方向收敛，从而生成更可控、更具解释性的主题结果。\n\n该工具采用折叠吉布斯采样（Collapsed Gibbs Sampling）技术实现，接口设计遵循 scikit-learn 规范，支持稀疏矩阵输入，便于开发者快速集成到现有的 Python 数据分析流程中。其独特的技术亮点在于将人工先验知识与统计模型完美结合，既保留了机器学习的自动化能力，又赋予了用户对输出结果的干预权。\n\nGuidedLDA 非常适合数据科学家、自然语言处理研究人员以及需要深入分析文档集合的开发者使用。无论是进行新闻分类、用户评论情感分析，还是构建垂直领域的知识图谱，只要您希望对提取的主题拥有更高的掌控度，GuidedLDA 都是一个轻量且高效的选择。","GuidedLDA: Guided Topic modeling with latent Dirichlet allocation\n====================================================\n\n.. image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fguidedlda\u002Fbadge\u002F?version=latest\n    :target: http:\u002F\u002Fguidedlda.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n    :alt: Documentation Status\n\n.. image:: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fguidedlda.svg\n    :target: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fguidedlda\n    :alt: Package version\n\n\n``GuidedLDA`` OR ``SeededLDA`` implements latent Dirichlet allocation (LDA) using collapsed Gibbs sampling. ``GuidedLDA`` can be guided by setting some seed words per topic. Which will make the topics converge in that direction.\n\nYou can read more about guidedlda in `the documentation \u003Chttps:\u002F\u002Fguidedlda.readthedocs.io>`_.\n\nI published an article about it on `freecodecamp Medium blog \u003Chttps:\u002F\u002Fmedium.freecodecamp.org\u002Fhow-we-changed-unsupervised-lda-to-semi-supervised-guidedlda-e36a95f3a164>`_.\n\nInstallation\n------------\n\n::\n\n    pip install guidedlda\n\nIf pip install does not work, then try the next step:\n\n::\n\n    https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\n    cd GuidedLDA\n    sh build_dist.sh\n    python setup.py sdist\n    pip install -e .\n\nIf the above step also does not work, please raise an `issue \u003Chttps:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002Fguidedlda\u002Fissues>`_ with details of your workstation's OS version, Python version, architecture etc. and I will try my best to fix it ASAP.\n\nGetting started\n---------------\n\n``guidedlda.GuidedLDA`` implements latent Dirichlet allocation (LDA). The interface follows\nconventions found in scikit-learn_.\n\n`Example Code \u003Chttps:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fblob\u002Fmaster\u002Fexamples\u002Fexample_seeded_lda.py>`_.\n\n\nThe following demonstrates how to inspect a model of a subset of the NYT\nnews dataset. The input below, ``X``, is a document-term matrix (sparse matrices\nare accepted).\n\n.. code-block:: python\n\n    >>> import numpy as np\n    >>> import guidedlda\n    \n    >>> X = guidedlda.datasets.load_data(guidedlda.datasets.NYT)\n    >>> vocab = guidedlda.datasets.load_vocab(guidedlda.datasets.NYT)\n    >>> word2id = dict((v, idx) for idx, v in enumerate(vocab))\n    \n    >>> X.shape\n    (8447, 3012)\n    \n    >>> X.sum()\n    1221626\n    >>> # Normal LDA without seeding\n    >>> model = guidedlda.GuidedLDA(n_topics=5, n_iter=100, random_state=7, refresh=20)\n    >>> model.fit(X)\n    INFO:guidedlda:n_documents: 8447\n    INFO:guidedlda:vocab_size: 3012\n    INFO:guidedlda:n_words: 1221626\n    INFO:guidedlda:n_topics: 5\n    INFO:guidedlda:n_iter: 100\n    WARNING:guidedlda:all zero column in document-term matrix found\n    INFO:guidedlda:\u003C0> log likelihood: -11489265\n    INFO:guidedlda:\u003C20> log likelihood: -9844667\n    INFO:guidedlda:\u003C40> log likelihood: -9694223\n    INFO:guidedlda:\u003C60> log likelihood: -9642506\n    INFO:guidedlda:\u003C80> log likelihood: -9617962\n    INFO:guidedlda:\u003C99> log likelihood: -9604031\n    \n    >>> topic_word = model.topic_word_\n    >>> n_top_words = 8\n    >>> for i, topic_dist in enumerate(topic_word):\n    >>>     topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1]\n    >>>     print('Topic {}: {}'.format(i, ' '.join(topic_words)))\n    Topic 0: company percent market business plan pay price increase\n    Topic 1: game play team win player season second start\n    Topic 2: life child write man school woman father family\n    Topic 3: place open small house music turn large play\n    Topic 4: official state government political states issue leader case\n    \n    >>> # Guided LDA with seed topics.\n    >>> seed_topic_list = [['game', 'team', 'win', 'player', 'season', 'second', 'victory'],\n    >>>                    ['percent', 'company', 'market', 'price', 'sell', 'business', 'stock', 'share'],\n    >>>                    ['music', 'write', 'art', 'book', 'world', 'film'],\n    >>>                    ['political', 'government', 'leader', 'official', 'state', 'country', 'american','case', 'law', 'police', 'charge', 'officer', 'kill', 'arrest', 'lawyer']]\n    \n    >>> model = guidedlda.GuidedLDA(n_topics=5, n_iter=100, random_state=7, refresh=20)\n    \n    >>> seed_topics = {}\n    >>> for t_id, st in enumerate(seed_topic_list):\n    >>>     for word in st:\n    >>>         seed_topics[word2id[word]] = t_id\n    \n    >>> model.fit(X, seed_topics=seed_topics, seed_confidence=0.15)\n    INFO:guidedlda:n_documents: 8447\n    INFO:guidedlda:vocab_size: 3012\n    INFO:guidedlda:n_words: 1221626\n    INFO:guidedlda:n_topics: 5\n    INFO:guidedlda:n_iter: 100\n    WARNING:guidedlda:all zero column in document-term matrix found\n    INFO:guidedlda:\u003C0> log likelihood: -11486362\n    INFO:guidedlda:\u003C20> log likelihood: -9767277\n    INFO:guidedlda:\u003C40> log likelihood: -9663718\n    INFO:guidedlda:\u003C60> log likelihood: -9624150\n    INFO:guidedlda:\u003C80> log likelihood: -9601684\n    INFO:guidedlda:\u003C99> log likelihood: -9587803\n    \n    \n    >>> n_top_words = 10\n    >>> topic_word = model.topic_word_\n    >>> for i, topic_dist in enumerate(topic_word):\n    >>>     topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1]\n    >>>     print('Topic {}: {}'.format(i, ' '.join(topic_words)))\n    Topic 0: game play team win season player second point start victory\n    Topic 1: company percent market price business sell executive pay plan sale\n    Topic 2: play life man music place write turn woman old book\n    Topic 3: official government state political leader states issue case member country\n    Topic 4: school child city program problem student state study family group\n\nThe document-topic distributions should be retrived as: ``doc_topic = model.transform(X)``.\n\n.. code-block:: python\n\n    >>> doc_topic = model.transform(X)\n    >>> for i in range(9):\n    >>>     print(\"top topic: {} Document: {}\".format(doc_topic[i].argmax(), \n                                                      ', '.join(np.array(vocab)[list(reversed(X[i,:].argsort()))[0:5]])))\n    top topic: 4 Document: plant, increase, food, increasingly, animal\n    top topic: 3 Document: explain, life, country, citizen, nation\n    top topic: 2 Document: thing, solve, problem, machine, carry\n    top topic: 2 Document: company, authority, opera, artistic, director\n    top topic: 3 Document: partner, lawyer, attorney, client, indict\n    top topic: 2 Document: roll, place, soon, treat, rating\n    top topic: 3 Document: city, drug, program, commission, report\n    top topic: 1 Document: company, comic, series, case, executive\n    top topic: 3 Document: son, scene, charge, episode, attack\n\nOptionally, reduce the model by purging additional matrices:\n\n.. code-block:: python\n\n    >>> # Next step will lighten the model object\n    >>> # This step will delete some matrices inside the model.\n    >>> # you will be able to use model.transform(X) the same way as earlier.\n    >>> # you wont be able to use model.fit_transform(X_new)\n    >>> model.purge_extra_matrices()\n\nSave the model for production or for running later:\n\n.. code-block:: python\n\n    >>> from six.moves import cPickle as pickle\n    >>> with open('guidedlda_model.pickle', 'wb') as file_handle:\n    >>>     pickle.dump(model, file_handle)\n    >>> # load the model for prediction\n    >>> with open('guidedlda_model.pickle', 'rb') as file_handle:\n    >>>     model = pickle.load(file_handle)\n    >>> doc_topic = model.transform(X)\n\n\nRequirements\n------------\n\nPython 2.7 or Python 3.3+ is required. The following packages are required\n\n- numpy_\n- pbr_\n\nCaveat\n------\n\n``guidedlda`` aims for Guiding LDA. More often then not the topics we get from a LDA model are not to our satisfaction. GuidedLDA can give the topics a nudge in the direction we want it to converge. We have production trained it for half a million documents (We have a big machine). We have run predictions on millions and manually checked topics for thousands (we are satisfied with the results).\n\nIf you are working with a very large corpus you may wish to use more sophisticated topic models such as those implemented in hca_ and MALLET_.  hca_ is written entirely in C and MALLET_ is written in Java. Unlike ``guidedlda``, hca_ can use more than one processor at a time. Both MALLET_ and hca_ implement topic models known to be more robust than standard latent Dirichlet allocation.\n\nNotes\n-----\n\nLatent Dirichlet allocation is described in `Blei et al. (2003)`_ and `Pritchard\net al. (2000)`_. Inference using collapsed Gibbs sampling is described in\n`Griffiths and Steyvers (2004)`_. And Guided LDA is described in `Jagadeesh Jagarlamudi, Hal Daume III and Raghavendra Udupa (2012)`_\n\n\nImportant links\n---------------\n\n- Documentation: http:\u002F\u002Fguidedlda.readthedocs.org\n- Source code: https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002Fguidedlda\u002F\n- Issue tracker: https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002Fguidedlda\u002Fissues\n\nOther implementations\n---------------------\n- scikit-learn_'s `LatentDirichletAllocation \u003Chttp:\u002F\u002Fscikit-learn.org\u002Fdev\u002Fmodules\u002Fgenerated\u002Fsklearn.decomposition.LatentDirichletAllocation.html>`_ (uses online variational inference)\n- `gensim \u003Chttps:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fgensim>`_ (uses online variational inference)\n\nCredits\n-------\nI would like to thank the creators of `LDA project \u003Chttps:\u002F\u002Fgithub.com\u002Flda-project\u002Flda>`_. I used the code from that LDA project as base to implement GuidedLDA on top of it.\n\nThanks to : `Allen Riddell \u003Chttps:\u002F\u002Ftwitter.com\u002Fariddell>`_ and `Tim Hopper \u003Chttps:\u002F\u002Ftwitter.com\u002Ftdhopper>`_. :)\n\nLicense\n-------\n\n``guidedlda`` is licensed under Version 2.0 of the Mozilla Public License.\n\n.. _Python: http:\u002F\u002Fwww.python.org\u002F\n.. _scikit-learn: http:\u002F\u002Fscikit-learn.org\n.. _hca: http:\u002F\u002Fwww.mloss.org\u002Fsoftware\u002Fview\u002F527\u002F\n.. _MALLET: http:\u002F\u002Fmallet.cs.umass.edu\u002F\n.. _numpy: http:\u002F\u002Fwww.numpy.org\u002F\n.. _pbr: https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fpbr\n.. _Cython: http:\u002F\u002Fcython.org\n.. _Blei et al. (2003): http:\u002F\u002Fjmlr.org\u002Fpapers\u002Fv3\u002Fblei03a.html\n.. _Pritchard et al. (2000): http:\u002F\u002Fwww.genetics.org\u002Fcontent\u002F155\u002F2\u002F945.full\n.. _Griffiths and Steyvers (2004): http:\u002F\u002Fwww.pnas.org\u002Fcontent\u002F101\u002Fsuppl_1\u002F5228.abstract\n.. _Jagadeesh Jagarlamudi, Hal Daume III and Raghavendra Udupa (2012): http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FE12-1021\n","GuidedLDA：基于潜在狄利克雷分配的引导主题建模\n====================================================\n\n.. image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fguidedlda\u002Fbadge\u002F?version=latest\n    :target: http:\u002F\u002Fguidedlda.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n    :alt: 文档状态\n\n.. image:: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fguidedlda.svg\n    :target: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fguidedlda\n    :alt: 包版本\n\n\n``GuidedLDA`` 或 ``SeededLDA`` 使用折叠吉布斯采样实现了潜在狄利克雷分配（LDA）。通过为每个主题设置一些种子词，可以引导 ``GuidedLDA`` 的主题学习方向，从而使主题向指定方向收敛。\n\n您可以在 `文档 \u003Chttps:\u002F\u002Fguidedlda.readthedocs.io>`_ 中了解更多关于 guidedlda 的信息。\n\n我还曾在 `freecodecamp Medium 博客 \u003Chttps:\u002F\u002Fmedium.freecodecamp.org\u002Fhow-we-changed-unsupervised-lda-to-semi-supervised-guidedlda-e36a95f3a164>` 上发表了一篇文章，介绍了这一方法。\n\n安装\n------------\n\n::\n\n    pip install guidedlda\n\n如果使用 pip 安装失败，请尝试下一步：\n\n::\n\n    https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\n    cd GuidedLDA\n    sh build_dist.sh\n    python setup.py sdist\n    pip install -e .\n\n如果上述步骤仍然无法成功，请在 `GitHub 仓库的 Issues 页面 \u003Chttps:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002Fguidedlda\u002Fissues>`_ 上提交问题，并提供您的工作环境的操作系统版本、Python 版本、架构等详细信息，我会尽力尽快修复。\n\n开始使用\n---------------\n\n``guidedlda.GuidedLDA`` 实现了潜在狄利克雷分配（LDA）。其接口遵循 scikit-learn_ 中的惯例。\n\n`示例代码 \u003Chttps:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fblob\u002Fmaster\u002Fexamples\u002Fexample_seeded_lda.py>`_。\n\n\n以下演示如何检查 NYT 新闻数据集子集的模型。下面的输入 ``X`` 是一个文档-词矩阵（支持稀疏矩阵）。\n\n.. code-block:: python\n\n    >>> import numpy as np\n    >>> import guidedlda\n    \n    >>> X = guidedlda.datasets.load_data(guidedlda.datasets.NYT)\n    >>> vocab = guidedlda.datasets.load_vocab(guidedlda.datasets.NYT)\n    >>> word2id = dict((v, idx) for idx, v in enumerate(vocab))\n    \n    >>> X.shape\n    (8447, 3012)\n    \n    >>> X.sum()\n    1221626\n    >>> # 无种子的普通 LDA\n    >>> model = guidedlda.GuidedLDA(n_topics=5, n_iter=100, random_state=7, refresh=20)\n    >>> model.fit(X)\n    INFO:guidedlda:n_documents: 8447\n    INFO:guidedlda:vocab_size: 3012\n    INFO:guidedlda:n_words: 1221626\n    INFO:guidedlda:n_topics: 5\n    INFO:guidedlda:n_iter: 100\n    WARNING:guidedlda:发现文档-词矩阵中存在全零列\n    INFO:guidedlda:\u003C0> 对数似然值: -11489265\n    INFO:guidedlda:\u003C20> 对数似然值: -9844667\n    INFO:guidedlda:\u003C40> 对数似然值: -9694223\n    INFO:guidedlda:\u003C60> 对数似然值: -9642506\n    INFO:guidedlda:\u003C80> 对数似然值: -9617962\n    INFO:guidedlda:\u003C99> 对数似然值: -9604031\n    \n    >>> topic_word = model.topic_word_\n    >>> n_top_words = 8\n    >>> for i, topic_dist in enumerate(topic_word):\n    >>>     topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1]\n    >>>     print('Topic {}: {}'.format(i, ' '.join(topic_words)))\n    Topic 0: company percent market business plan pay price increase\n    Topic 1: game play team win player season second start\n    Topic 2: life child write man school woman father family\n    Topic 3: place open small house music turn large play\n    Topic 4: official state government political states issue leader case\n    \n    >>> # 带有种子主题的引导 LDA\n    >>> seed_topic_list = [['game', 'team', 'win', 'player', 'season', 'second', 'victory'],\n    >>>                    ['percent', 'company', 'market', 'price', 'sell', 'business', 'stock', 'share'],\n    >>>                    ['music', 'write', 'art', 'book', 'world', 'film'],\n    >>>                    ['political', 'government', 'leader', 'official', 'state', 'country', 'american','case', 'law', 'police', 'charge', 'officer', 'kill', 'arrest', 'lawyer']]\n    \n    >>> model = guidedlda.GuidedLDA(n_topics=5, n_iter=100, random_state=7, refresh=20)\n    \n    >>> seed_topics = {}\n    >>> for t_id, st in enumerate(seed_topic_list):\n    >>>     for word in st:\n    >>>         seed_topics[word2id[word]] = t_id\n    \n    >>> model.fit(X, seed_topics=seed_topics, seed_confidence=0.15)\n    INFO:guidedlda:n_documents: 8447\n    INFO:guidedlda:vocab_size: 3012\n    INFO:guidedlda:n_words: 1221626\n    INFO:guidedlda:n_topics: 5\n    INFO:guidedlda:n_iter: 100\n    WARNING:guidedlda:发现文档-词矩阵中存在全零列\n    INFO:guidedlda:\u003C0> 对数似然值: -11486362\n    INFO:guidedlda:\u003C20> 对数似然值: -9767277\n    INFO:guidedlda:\u003C40> 对数似然值: -9663718\n    INFO:guidedlda:\u003C60> 对数似然值: -9624150\n    INFO:guidedlda:\u003C80> 对数似然值: -9601684\n    INFO:guidedlda:\u003C99> 对数似然值: -9587803\n    \n    \n    >>> n_top_words = 10\n    >>> topic_word = model.topic_word_\n    >>> for i, topic_dist in enumerate(topic_word):\n    >>>     topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1]\n    >>>     print('Topic {}: {}'.format(i, ' '.join(topic_words)))\n    Topic 0: game play team win season player second point start victory\n    Topic 1: company percent market price business sell executive pay plan sale\n    Topic 2: play life man music place write turn woman old book\n    Topic 3: official government state political leader states issue case member country\n    Topic 4: school child city program problem student state study family group\n\n文档-主题分布可以通过 ``doc_topic = model.transform(X)`` 获取。\n\n.. code-block:: python\n\n    >>> doc_topic = model.transform(X)\n    >>> for i in range(9):\n    >>>     print(\"top topic: {} Document: {}\".format(doc_topic[i].argmax(), \n                                                      ', '.join(np.array(vocab)[list(reversed(X[i,:].argsort()))[0:5]])))\n    top topic: 4 Document: plant, increase, food, increasingly, animal\n    top topic: 3 Document: explain, life, country, citizen, nation\n    top topic: 2 Document: thing, solve, problem, machine, carry\n    top topic: 2 Document: company, authority, opera, artistic, director\n    top topic: 3 Document: partner, lawyer, attorney, client, indict\n    top topic: 2 Document: roll, place, soon, treat, rating\n    top topic: 3 Document: city, drug, program, commission, report\n    top topic: 1 Document: company, comic, series, case, executive\n    top topic: 3 Document: son, scene, charge, episode, attack\n\n可选地，可以通过清除额外矩阵来简化模型：\n\n.. code-block:: python\n\n    >>> # 下一步将减轻模型对象的负担\n    >>> # 这一步会删除模型内部的一些矩阵。\n    >>> # 您仍然可以像之前一样使用 model.transform(X)。\n    >>> # 但将无法再使用 model.fit_transform(X_new)。\n    >>> model.purge_extra_matrices()\n\n将模型保存以供生产或后续运行使用：\n\n.. code-block:: python\n\n>>> from six.moves import cPickle as pickle\n    >>> with open('guidedlda_model.pickle', 'wb') as file_handle:\n    >>>     pickle.dump(model, file_handle)\n    >>> # 加载模型进行预测\n    >>> with open('guidedlda_model.pickle', 'rb') as file_handle:\n    >>>     model = pickle.load(file_handle)\n    >>> doc_topic = model.transform(X)\n\n\n要求\n------------\n\n需要 Python 2.7 或 Python 3.3 及以上版本。以下软件包是必需的：\n\n- numpy_\n- pbr_\n\n注意事项\n------\n\n``guidedlda`` 的目标是引导式 LDA。通常情况下，我们从 LDA 模型中得到的主题并不令人满意。GuidedLDA 可以将主题朝我们希望的方向稍微调整。我们在生产环境中用五十万篇文档训练过该模型（我们有一台性能强大的机器）。我们也对数百万篇文档进行了预测，并手动检查了数千个主题（结果令我们满意）。\n\n如果你处理的是非常大的语料库，可能需要使用更复杂的话题模型，例如 hca_ 和 MALLET_ 中实现的那些。hca_ 完全用 C 语言编写，而 MALLET_ 则是用 Java 编写的。与 ``guidedlda`` 不同，hca_ 可以同时利用多个处理器。MALLET_ 和 hca_ 都实现了比标准潜在狄利克雷分配更为稳健的话题模型。\n\n注释\n-----\n\n潜在狄利克雷分配在 `Blei 等人 (2003)`_ 和 `Pritchard 等人 (2000)`_ 中有描述。使用折叠吉布斯采样的推断方法在 `Griffiths 和 Steyvers (2004)`_ 中有所介绍。而引导式 LDA 则在 `Jagadeesh Jagarlamudi、Hal Daume III 和 Raghavendra Udupa (2012)`_ 中有说明。\n\n\n重要链接\n---------------\n\n- 文档：http:\u002F\u002Fguidedlda.readthedocs.org\n- 源代码：https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002Fguidedlda\u002F\n- 问题跟踪器：https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002Fguidedlda\u002Fissues\n\n其他实现\n---------------------\n- scikit-learn_ 的 `LatentDirichletAllocation \u003Chttp:\u002F\u002Fscikit-learn.org\u002Fdev\u002Fmodules\u002Fgenerated\u002Fsklearn.decomposition.LatentDirichletAllocation.html>`_（使用在线变分推断）\n- `gensim \u003Chttps:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fgensim>`_（使用在线变分推断）\n\n致谢\n-------\n我要感谢 `LDA 项目 \u003Chttps:\u002F\u002Fgithub.com\u002Flda-project\u002Flda>`_ 的创建者们。我以该 LDA 项目的代码为基础，在其上实现了 GuidedLDA。\n\n特别感谢：`Allen Riddell \u003Chttps:\u002F\u002Ftwitter.com\u002Fariddell>`_ 和 `Tim Hopper \u003Chttps:\u002F\u002Ftwitter.com\u002Ftdhopper>`_。:)\n\n许可证\n-------\n\n``guidedlda`` 采用 Mozilla 公共许可证第 2.0 版本授权。\n\n.. _Python: http:\u002F\u002Fwww.python.org\u002F\n.. _scikit-learn: http:\u002F\u002Fscikit-learn.org\n.. _hca: http:\u002F\u002Fwww.mloss.org\u002Fsoftware\u002Fview\u002F527\u002F\n.. _MALLET: http:\u002F\u002Fmallet.cs.umass.edu\u002F\n.. _numpy: http:\u002F\u002Fwww.numpy.org\u002F\n.. _pbr: https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fpbr\n.. _Cython: http:\u002F\u002Fcython.org\n.. _Blei et al. (2003): http:\u002F\u002Fjmlr.org\u002Fpapers\u002Fv3\u002Fblei03a.html\n.. _Pritchard et al. (2000): http:\u002F\u002Fwww.genetics.org\u002Fcontent\u002F155\u002F2\u002F945.full\n.. _Griffiths and Steyvers (2004): http:\u002F\u002Fwww.pnas.org\u002Fcontent\u002F101\u002Fsuppl_1\u002F5228.abstract\n.. _Jagadeesh Jagarlamudi, Hal Daume III and Raghavendra Udupa (2012): http:\u002F\u002Fwww.aclweb.org\u002Fanthology\u002FE12-1021","# GuidedLDA 快速上手指南\n\nGuidedLDA（也称为 SeededLDA）是一个基于坍缩吉布斯采样（Collapsed Gibbs Sampling）实现的主题模型工具。与传统的无监督 LDA 不同，它允许用户为每个主题指定“种子词”，从而引导模型向预期的方向收敛，生成更符合业务需求的话题分类。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：Python 2.7 或 Python 3.3+\n*   **核心依赖**：\n    *   `numpy`\n    *   `pbr`\n\n## 安装步骤\n\n推荐使用 `pip` 进行安装。如果直接安装失败，可尝试从源码构建。\n\n### 方法一：使用 pip 安装（推荐）\n\n```bash\npip install guidedlda\n```\n\n> **提示**：国内用户若下载缓慢，可使用清华或阿里镜像源加速：\n> `pip install guidedlda -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n### 方法二：源码安装\n\n如果上述命令无效，请尝试从 GitHub 克隆源码并手动构建：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\ncd GuidedLDA\nsh build_dist.sh\npython setup.py sdist\npip install -e .\n```\n\n## 基本使用\n\nGuidedLDA 的接口设计遵循 `scikit-learn` 规范。以下是加载数据、训练普通 LDA 模型以及使用种子词引导训练的完整示例。\n\n### 1. 导入库与加载数据\n\n```python\nimport numpy as np\nimport guidedlda\n\n# 加载示例数据集 (NYT 新闻数据子集)\nX = guidedlda.datasets.load_data(guidedlda.datasets.NYT)\nvocab = guidedlda.datasets.load_vocab(guidedlda.datasets.NYT)\n\n# 构建单词到 ID 的映射字典\nword2id = dict((v, idx) for idx, v in enumerate(vocab))\n\nprint(f\"文档数量: {X.shape[0]}, 词汇表大小: {X.shape[1]}\")\n```\n\n### 2. 训练普通 LDA 模型（无引导）\n\n首先演示不设置种子词的标准训练过程：\n\n```python\n# 初始化模型\nmodel = guidedlda.GuidedLDA(n_topics=5, n_iter=100, random_state=7, refresh=20)\nmodel.fit(X)\n\n# 查看生成的主题关键词\nn_top_words = 8\ntopic_word = model.topic_word_\nfor i, topic_dist in enumerate(topic_word):\n    topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1]\n    print('Topic {}: {}'.format(i, ' '.join(topic_words)))\n```\n\n### 3. 训练 GuidedLDA 模型（带种子词引导）\n\n这是 GuidedLDA 的核心功能。通过定义 `seed_topic_list`，我们可以强制模型将特定词汇归类到指定主题中。\n\n```python\n# 定义种子词列表，每个子列表代表一个期望的主题方向\nseed_topic_list = [\n    ['game', 'team', 'win', 'player', 'season', 'second', 'victory'],\n    ['percent', 'company', 'market', 'price', 'sell', 'business', 'stock', 'share'],\n    ['music', 'write', 'art', 'book', 'world', 'film'],\n    ['political', 'government', 'leader', 'official', 'state', 'country', 'american','case', 'law', 'police', 'charge', 'officer', 'kill', 'arrest', 'lawyer']\n]\n\n# 重新初始化模型\nmodel = guidedlda.GuidedLDA(n_topics=5, n_iter=100, random_state=7, refresh=20)\n\n# 构建 seed_topics 字典：{word_id: topic_id}\nseed_topics = {}\nfor t_id, st in enumerate(seed_topic_list):\n    for word in st:\n        # 确保种子词在词汇表中\n        if word in word2id:\n            seed_topics[word2id[word]] = t_id\n\n# 拟合模型，传入 seed_topics 和置信度 (seed_confidence)\n# seed_confidence 越高，种子词对主题形成的影响力越大\nmodel.fit(X, seed_topics=seed_topics, seed_confidence=0.15)\n\n# 查看引导后的主题关键词\nn_top_words = 10\ntopic_word = model.topic_word_\nfor i, topic_dist in enumerate(topic_word):\n    topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1]\n    print('Topic {}: {}'.format(i, ' '.join(topic_words)))\n```\n\n### 4. 预测与模型保存\n\n训练完成后，可以使用 `transform` 获取文档 - 主题分布，并支持序列化保存。\n\n```python\n# 获取文档的主题分布\ndoc_topic = model.transform(X)\n\n# 打印前几个文档的主要主题及关键词\nfor i in range(5):\n    top_topic = doc_topic[i].argmax()\n    top_words = ', '.join(np.array(vocab)[list(reversed(X[i,:].argsort()))[0:5]])\n    print(\"top topic: {} Document: {}\".format(top_topic, top_words))\n\n# (可选) 清理模型内部多余矩阵以减小体积（清理后无法再调用 fit_transform，但可正常 transform）\n# model.purge_extra_matrices()\n\n# 保存模型\nfrom six.moves import cPickle as pickle\nwith open('guidedlda_model.pickle', 'wb') as file_handle:\n    pickle.dump(model, file_handle)\n\n# 加载模型\nwith open('guidedlda_model.pickle', 'rb') as file_handle:\n    loaded_model = pickle.load(file_handle)\n    \n# 使用加载的模型进行预测\n# new_doc_topic = loaded_model.transform(new_X)\n```","某电商数据团队需要从数万条用户评论中自动提取“物流体验”和“售后质量”等特定维度的反馈，以优化运营策略。\n\n### 没有 GuidedLDA 时\n- **主题不可控**：传统 LDA 算法完全无监督，生成的主题往往混杂了“价格”、“包装”等无关词汇，难以精准聚焦业务关心的核心维度。\n- **人工清洗成本高**：数据分析师需要逐个检查生成的几十个主题，手动筛选并重新归类包含目标信息的文档，耗时耗力。\n- **关键信号被淹没**：由于缺乏引导，稀疏但重要的“配送延迟”或“客服态度”等关键词容易被高频通用词（如“好的”、“收到”）掩盖，导致洞察缺失。\n- **结果复现性差**：每次运行模型得到的主题定义都不一致，难以建立标准化的监控指标体系。\n\n### 使用 GuidedLDA 后\n- **精准定向挖掘**：通过预设“快递、慢、破损”作为物流主题的种子词，GuidedLDA 强制模型向该方向收敛，直接输出纯净的物流体验主题。\n- **自动化分类高效**：模型自动将涉及种子词相关语义的评论归入指定主题，无需人工二次干预，分析效率提升数倍。\n- **长尾问题显性化**：即使“冷链断裂”等低频词在语料中占比很小，只要纳入种子列表，GuidedLDA 也能将其识别为独立主题，避免关键风险被忽略。\n- **业务对齐稳定**：不同批次的数据分析均能保持主题定义的一致性，便于长期追踪特定维度的用户满意度变化趋势。\n\nGuidedLDA 的核心价值在于将领域专家的先验知识融入无监督学习，把“碰运气”式的主题发现转变为可定制、可解释的业务洞察工具。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvi3k6i5_GuidedLDA_c1fdc717.png","vi3k6i5","Vikash Singh","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fvi3k6i5_8a51ab58.png","Senior Software Engineer (AI) @ Google","Google","London, UK",null,"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fvi3k6i5\u002F","https:\u002F\u002Fgithub.com\u002Fvi3k6i5",[82,86,90,94,98],{"name":83,"color":84,"percentage":85},"Python","#3572A5",83.8,{"name":87,"color":88,"percentage":89},"C","#555555",8.7,{"name":91,"color":92,"percentage":93},"Cython","#fedf5b",6.6,{"name":95,"color":96,"percentage":97},"Shell","#89e051",0.8,{"name":99,"color":100,"percentage":101},"Makefile","#427819",0.2,518,112,"2026-04-07T04:54:05","MPL-2.0","未说明","不需要 GPU","未说明（作者提及处理 50 万文档需大型机器，具体数值取决于数据量）",{"notes":110,"python":111,"dependencies":112},"该工具基于折叠吉布斯采样（collapsed Gibbs sampling）实现，仅支持单处理器运行，不支持多核并行。对于超大规模语料库，作者建议使用 HCA 或 MALLET 等更高效的替代方案。安装失败时可能需要手动从源码构建。","2.7 或 3.3+",[113,114],"numpy","pbr",[116,14,16],"其他",[118,119,120,121,122,123],"topic-modeling","guided-topic-modeling","machine-learning","data-science","guidedlda","seededlda","2026-03-27T02:49:30.150509","2026-04-12T16:43:15.679564",[127,132,137,142,147,152,157,162],{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},30804,"如何将 TF-IDF 模型或 Pandas DataFrame 作为输入传递给 GuidedLDA？","GuidedLDA 模型设计为在文档 - 词项矩阵（Document Term Matrix, DTM）上运行，通常由 CountVectorizer 生成。虽然不确定是否直接支持 TF-IDF，但用户需要先将数据转换为模型可接受的格式。如果您有包含 ID 和文本列的 Pandas DataFrame，需要先使用 sklearn 的 CountVectorizer 将其转换为稀疏矩阵或列表格式，而不是直接传入 TF-IDF 结果或原始 DataFrame。建议分享几行数据给维护者以确认兼容性，但目前标准做法是使用词频矩阵。","https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fissues\u002F7",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},30805,"设置了 random_state 为什么每次运行结果仍然不同？","这是一个已修复的问题。早期版本中库未在初始化时正确设置随机种子。维护者确认需要在 `__init__` 函数中使用 `random.seed(random_state)` 来初始化随机状态。该修复已部署在版本 `guidedlda-2.0.0.dev22.tar.gz` 及更高版本中。请升级您的库以确保结果的可重复性。","https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fissues\u002F5",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},30806,"遇到 AttributeError: module 'guidedlda' has no attribute '_guidedlda' 错误如何解决？","此错误通常与 Windows 环境下 Cython 编译的 .c 文件有关。这通常意味着安装不完整或编译失败。建议参考相关的 StackOverflow 问答（搜索该错误信息）获取详细的编译和安装步骤。确保已正确安装 C++ 构建工具（如 Visual C++ Build Tools）以及 Cython，并尝试重新安装库。","https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fissues\u002F64",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},30807,"在 macOS 或 Linux 上使用 pip 安装时出现 setup.py 错误或编译失败怎么办？","如果在执行 `pip install guidedlda` 时遇到编译错误，通常是因为缺少必要的构建依赖。解决方法是先手动安装 Cython：运行命令 `pip install Cython`。安装完成后，再按照官方文档的安装说明重新安装 GuidedLDA。这能确保在构建过程中正确编译所需的扩展模块。","https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fissues\u002F30",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},30808,"调用 fit() 方法时出现 TypeError: argument of type 'float' is not iterable 错误是什么原因？","此错误发生在初始化种子主题分布时，通常与并行处理（multiprocessing）有关。即使指定了 1 个 worker，问题也可能存在。解决方案是移除代码中的并行处理逻辑，改为单进程运行。有用户反馈禁用 multiprocessing 包后问题消失。此外，注意检查 numpy 版本兼容性，因为警告中提到了 `issubdtype` 的参数弃用问题。","https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fissues\u002F32",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},30809,"如何设置 doc_topic_prior 和 topic_word_prior 参数？","是的，可以设置这些参数。虽然文档中可能未显著标出，但这些参数在库的实现中是可用的，类似于 sklearn 中的 LDA 实现。您可以在初始化模型时直接传递这些参数来控制先验分布。","https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fissues\u002F44",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},30810,"Windows 用户使用 pip install guidedlda 时遇到 \"python setup.py egg_info\" 失败怎么办？","这是 Windows 平台上常见的安装问题，通常由于缺乏编译 C 扩展所需的环境（如 Visual C++ Compiler）导致。由于维护者无法在 Windows 上复现，建议确保已安装适用于 Python 版本的 Microsoft C++ Build Tools。如果问题依旧，可能需要寻找预编译的二进制文件（wheel）或从源码手动编译，具体可参考类似的安装问题讨论。","https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fissues\u002F8",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},30811,"GuidedLDA 模型是否支持 sklearn 的 GridSearchCV 进行超参数调优？","目前不支持直接使用 sklearn 的 GridSearchCV。这是因为 GuidedLDA 模型尚未实现 `get_params()` 方法，而这是 sklearn 网格搜索所必需的接口。如果需要进行参数调优（如主题数量），可能需要手动编写循环来遍历参数并计算对数似然度，或者自行封装模型以添加缺失的方法。","https:\u002F\u002Fgithub.com\u002Fvi3k6i5\u002FGuidedLDA\u002Fissues\u002F15",[]]