python 中 GSDMM 的实际示例?

2023-12-06

我想使用 GSDMM 将主题分配给我的数据集中的一些推文。我发现的唯一例子(1 and 2)不够详细。我想知道您是否知道一个显示 GSDMM 是如何使用 python 实现的来源(或者足够关心做一个小例子)。


我最终编译了 GSDMM 的代码,并将其从头开始放在这里供其他人使用。我尝试对重要部分进行评论:

# Imports
import random

import numpy as np
from gensim.models.phrases import Phraser, Phrases
from gensim.utils import simple_preprocess
from gsdmm import MovieGroupProcess


# data
data = ...

# stop words
stop_words = ...

# turning sentences into words
data_words =[]
for doc in data:
    doc = doc.split()
    data_words.append(doc)

# create vocabulary
vocabulary = ...

# Removing stop Words
stop_words.extend(['from', 'rt'])

def remove_stopwords(texts):
    return [
        [
            word
            for word in simple_preprocess(str(doc))
            if word not in stop_words
        ]
        for doc in texts
    ]

data_words_nostops = remove_stopwords(vocabulary)

# building bi-grams 
bigram = Phrases(vocabulary, min_count=5, threshold=100) 
bigram_mod = Phraser(bigram)
print('done!')

# Form Bigrams
data_words_bigrams = [bigram_mod[doc] for doc in data_words_nostops]

# lemmatization
pos_to_use = ['NOUN', 'ADJ', 'VERB', 'ADV']
data_lemmatized = []
for sent in data_words_bigrams:
    doc = nlp(" ".join(sent)) 
    data_lemmatized.append(
        [token.lemma_ for token in doc if token.pos_ in pos_to_use]
    )
      
docs = data_lemmatized
vocab = set(x for doc in docs for x in doc)

# Train a new model 
random.seed(1000)
# Init of the Gibbs Sampling Dirichlet Mixture Model algorithm
mgp = MovieGroupProcess(K=10, alpha=0.1, beta=0.1, n_iters=30)

vocab = set(x for doc in docs for x in doc)
n_terms = len(vocab)
n_docs = len(docs)

# Fit the model on the data given the chosen seeds
y = mgp.fit(docs, n_terms)

def top_words(cluster_word_distribution, top_cluster, values):
    for cluster in top_cluster:
        sort_dicts = sorted(
            mgp.cluster_word_distribution[cluster].items(),
            key=lambda k: k[1],
            reverse=True,
        )[:values]
        print('Cluster %s : %s'%(cluster,sort_dicts))
        print(' — — — — — — — — — ')

doc_count = np.array(mgp.cluster_doc_count)
print('Number of documents per topic :', doc_count)
print('*'*20)

# Topics sorted by the number of document they are allocated to
top_index = doc_count.argsort()[-10:][::-1]
print('Most important clusters (by number of docs inside):', top_index)
print('*'*20)


# Show the top 10 words in term frequency for each cluster 
top_words(mgp.cluster_word_distribution, top_index, 10)


Links

  1. gensim modules
    • https://radimrehurek.com/gensim/models/phrases.html#module-gensim.models.phrases
    • https://radimrehurek.com/gensim/utils.html#gensim.utils.simple_preprocess
  2. Python库gsdmm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 中 GSDMM 的实际示例? 的相关文章

随机推荐

  • History.js 插件 - 如何使用

    我需要使用history js 插件 我整理了一个简短的页面来测试功能 http www salesmelbourne com 目前我正在努力解决以下问题 后退 前进按钮不会重新加载 AJAX div 这是我没有添加的额外的 History
  • 如何将 JavaScript 日期初始化为特定时区

    我将特定时区的日期时间作为字符串 我想将其转换为本地时间 但是 我不知道如何在 Date 对象中设置时区 例如 我有Feb 28 2013 7 00 PM ET 那我就可以 var mydate new Date mydate setFul
  • 如何阻止 Iframe 调用

    最近 我的完整网站被另外两个域在 iframe 中调用 我想阻止其他试图在 iframe 中显示我的网站的网站 我如何通过 htaccess 阻止它 您可以在标题 X Frame Options Deny 中设置变量 所有现代浏览器都支持
  • dart flutter 中 DateFormat 中的 tryParse

    我想要tryParse多种日期格式 tryParse方法可在DateTime但不在DateFormat 我想用DateFormat因为我想解析多种格式 如果我使用Parse方法然后我必须使用try catch block 目前我正在解析下面
  • R 中的行矩阵乘法

    我有一个维度为 1 亿条记录和 100 列的矩阵 现在我想将该矩阵乘以行 我的矩阵乘法示例代码是 df lt as matrix mtcars result lt apply df 1 prod 在我的例子中 上面的语法非常慢 I trie
  • keras 自动编码器与 PCA

    我正在玩一个玩具示例来理解 PCA 与 keras 自动编码器 我有以下代码来理解PCA import numpy as np import matplotlib pyplot as plt from mpl toolkits mplot3
  • jquery ajax 帖子说 xxx 不允许 Access-Control-Allow-Origin

    我试图使用 AJAX 调用 eBay FindProducts API post请求 但遇到以下错误 XMLHttpRequest 无法加载http open api ebay com shopping callname FindProdu
  • EntityFramework .net 4 用简单的方法更新实体

    我正在看这个问题 ADO net 实体框架 仅更新分离实体上的某些属性 这对我来说是一个很大的帮助 我现在知道在对其进行更改之前需要附加一个实体 但我该怎么做 我有一个 MVC 网站 一个客户更新页面 其中包含以下字段 ID 名称 地址等
  • C++ 全局重载运算符= [重复]

    这个问题在这里已经有答案了 可能的重复 运算符 必须是非静态成员 是什么意思 C Hi 我有以下代码 Header file struct dataRecord size t id char name gcNameLength void o
  • OpenGL 透明度无法正常工作

    我的项目的透明度存在问题 正如您所看到的 透明度对于其他对象来说效果很好 您可以看到树叶后面的犀牛 但问题出在树本身 当有两个分支并且其中一个比另一个更近时 较远的一个是不可见的 与后备箱相同 透明度对对象本身不起作用 这是我在创建纹理时使
  • 如何更改悬停时的内容

    我一直在研究这个 我认为这会很简单 我想做的是将鼠标悬停在 新 标签上 进入悬停状态后 仅使用 CSS 将内容从 NEW 更改为 ADD body font family Arial Helvetica sans serif item wi
  • 在Java中找到二次回归曲线的最佳方法

    我有三组数据 例如 x y 4 0 6 60 8 0 有谁知道任何 有效的 Java 代码可以给我返回 a b 和 c 的值 系数 我假设您想要这种形式的公式 y a x 2 b x c 如果只有三个点 您可以使用以下公式描述经过所有三个点
  • 在 XHR 中使用 multipart/form-data 作为 Content-Type 时收到“400 Bad Request”

    我有一个发送一些数据的 AJAX 请求 数据尊重 multipart form data规格 我面临的问题是浏览器将 Content Type 标头设置为 text plain 它应该是 multipart form data 我尝试这样做
  • JPanel 不绘画,JFrame 保持空白

    我正在开发一款类似于数字口袋妖怪卡牌的游戏 当我尝试绘制任何图像时 JFrame 仍为空 这可能是一个简单的错误 但我一直无法找到解决方案 在 Stack Overflow 上 我看到了很多像我这样的问题 尽管他们的解决方案不适用于我的代码
  • 如何将图像(播放器)旋转到鼠标方向?

    我正在考虑在 pygame 中制作一个 2d 射击游戏 我想让我的玩家 Player 1 指向鼠标方向 我花了几个小时寻找解决方案 并尝试了我能找到的所有解决方案 但没有一个有效 所以你能帮助我吗 这是我的代码 import pygame
  • 纯 JavaScript,onclick 无法在移动设备上运行

    现在我并不是真正的 Javascript 明星 但我似乎遇到了移动设备和 onclick 功能的所有已知问题 Onclick 需要鼠标操作 当然在手机上不适用 现在在 Jquery 中 您可以使用 on 但是这如何与常规 javascrip
  • 无法解析“SingleSignOutFilter”中的“setCasServerUrlPrefix”

    最近升级了依赖 CAS 进行身份验证的 Spring Boot 应用程序后 该项目不再编译 因为setCasServerUrlPrefix找不到方法SingleSignOutFilter java cannot find symbol sy
  • R:覆盖栅格图层的xy坐标

    我有一个带有 XY 像素坐标的栅格 我想将其转换为纬度和经度 class RasterLayer dimensions 1617 1596 2580732 nrow ncol ncell resolution 1 1 x y extent
  • 使用 C# Process 运行可执行程序

    我是一名生物信息学人员 我的工作使用 C 我已经多次使用 C 中的进程来运行可执行程序 这次我有一个新问题 我在 Windows 中下载了一个名为 Blast 的程序的 exe 文件 如果我输入我的命令 blastp query input
  • python 中 GSDMM 的实际示例?

    我想使用 GSDMM 将主题分配给我的数据集中的一些推文 我发现的唯一例子 1 and 2 不够详细 我想知道您是否知道一个显示 GSDMM 是如何使用 python 实现的来源 或者足够关心做一个小例子 我最终编译了 GSDMM 的代码