如何将共生矩阵转换为稀疏矩阵

2024-01-08

我开始处理稀疏矩阵,所以我对这个主题并不是很精通。我的问题是,我有一个来自单词列表的简单共现矩阵,只是一个二维共现矩阵,逐字计算一个单词在同一上下文中出现的次数。由于语料库不是那么大,因此矩阵非常稀疏。我想将其转换为稀疏矩阵以便能够更好地处理它,最终进行一些矩阵乘法。这是我到目前为止所做的(只有第一部分,剩下的只是输出格式和清理数据):

def matrix(from_corpus):    
d = defaultdict(lambda : defaultdict(int))
        heads = set() 
        trans = set()
        for text in corpus:
            d[text[0]][text[1]] += 1
            heads.add(text[0])
            trans.add(text[1])

        return d,heads,trans

我的想法是创建一个新函数:

def matrix_to_sparse(d):
    A = sparse.lil_matrix(d)

这有意义吗?然而,这不起作用,不知何故我不知道如何获得稀疏矩阵。我应该更好地使用 numpy 数组吗?最好的方法是什么?我想比较处理矩阵的多种方法。

如果有人能给我指明方向,那就太好了。


以下是构建文档术语矩阵的方法A来自 SciPy 的 COO 格式的一组文档,这是易用性和效率之间的良好权衡(*):

vocabulary = {}  # map terms to column indices
data = []        # values (maybe weights)
row = []         # row (document) indices
col = []         # column (term) indices

for i, doc in enumerate(documents):
    for term in doc:
        # get column index, adding the term to the vocabulary if needed
        j = vocabulary.setdefault(term, len(vocabulary))
        data.append(1)  # uniform weights
        row.append(i)
        col.append(j)

A = scipy.sparse.coo_matrix((data, (row, col)))

现在,要获得共现矩阵:

A.T * A

(忽略对角线,它包含术语与其自身的共现,即平方频率)。

或者,使用一些可以为您完成此类操作的包,例如Gensim http://radimrehurek.com/gensim/ or scikit学习 http://scikit-learn.org。 (我是这两个项目的贡献者,所以这可能不是公正的建议。)

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

如何将共生矩阵转换为稀疏矩阵 的相关文章

  • Python中Shift和Caps Lock的状态

    我正在使用 Python 2 5 编写 TkInter 应用程序 我需要找出大写锁定和 Shift 键的状态 true 或 false 我在整个网络上进行了搜索 但找不到解决方案 Tkinter 中的键盘事件可能很棘手 我建议您按顺序查看以
  • 在 python 中更改函数的 __qualname__ 时会发生什么?

    为了能够pickle嵌套函数 用于多重处理 我用装饰器装饰了嵌套函数 def globalize one func def wrapper one args kwargs return func args kwargs setattr mo
  • 如何使用类似 KDnuggets 风格的 PDF 绘制比较箱线图

    在经历了解 KDnuggets 文章中的箱线图 https www kdnuggets com 2019 11 understanding boxplots html 我找到了带有概率密度函数的箱线图的详细图 pdf 我正在尝试绘制比较箱线
  • Python setup.py 运行 shell 脚本

    我需要在创建 Python 包时在 sdist 阶段运行我自己的脚本 我写了以下脚本 你知道更好的方法吗 您能否推荐更好的一个或链接到 setuptools 的官方文档 其中已解释了这一时刻 import subprocess import
  • 如何使用 pywin32 在 Python 中获取特定应用程序窗口的句柄?

    我正在尝试修改一些在 Windows 10 中截取特定应用程序窗口屏幕截图的 Python 代码 我正在尝试使用win32ui win32guipywin32 包中的模块用于此目的 这是损坏的代码 def getWindow name Wi
  • python中的多服务器监控/自动重启

    我有 2 个服务器程序 必须使用 GNU Screen 启动 我想使用基于 Python 的程序来强化这些服务器 防止崩溃 该程序启动每个屏幕会话 然后监视服务器进程 如果服务器进程崩溃 我需要 python 代码来终止无关的屏幕会话并再次
  • Numpy、Python:广播时自动扩展数组维度

    考虑以下 Numpy 数组广播练习 import numpy as np v np array 1 0 2 0 T column array A2 np random randn 2 10 2D array A3 np random ran
  • 使用 Flask 在 Python 中进行长轮询

    我正在尝试在 Flask 框架下使用 JQuery 和 Python 进行长轮询 之前在 PHP 中做过长轮询 我尝试过以同样的方式进行 具有 while true 循环的脚本 函数 定期检查数据库中的更改 例如每 0 5 秒 并在发生更改
  • 没有实例的 Django Formset

    In this http docs djangoproject com en dev topics forms modelforms inline formsetsDjango Doc 解释了如何创建一个表单集 该表单集允许您编辑属于特定作
  • Python 字符串格式 - 类型错误 - 格式字符串参数不足

    那么这个字符串有什么问题呢 我无法弄清楚为什么它说格式字符串没有足够的参数 我是 Python 新手 只是想弄清楚 编辑 这与建议的其他问题不同 另一个正在尝试做一些我什至没有涉及的疯狂数组事情 我只需要了解元组的基本概念以及字符串格式化的
  • 无法为从图中加载的张量变量赋值

    我已经训练了一个模型并保存了它 现在 我试图了解权重扰动如何影响其准确性 因此我需要修改权重变量中保存的值 本质上会为其添加一些噪声 问题是加载它们后我无法为它们分配值 我正在使用 TensorFlow 版本 1 2 1 来训练和加载模型
  • Python 中定义了黄金比例吗?

    有没有办法得到黄金比例phi 在标准Python模块中 我知道e and pi in the math模块 但我可能错过了phi某处定义 scipy constants http docs scipy org doc scipy refer
  • 当我执行 pip --version 时,它显示错误为 ImportError:没有名为 pyparsing 的模块

    我尝试安装 卸载py解析以及它不起作用 我被这个问题困住了 我还必须安装额外的库 这是错误消息 Traceback most recent call last File usr bin pip line 5 in
  • 如何设置appache2的WSGI与python 3.7一起使用?

    我使用的是 ubuntu 16 04 并安装了 python 3 7 并使用以下说明将其设置为默认值 无法在 ubuntu 中将默认 python 版本设置为 python3 https stackoverflow com question
  • Scipy - 求矩阵列空间的基数

    我正在尝试编写一个简单的单纯形算法 其第一步是找到一个基本的可行解决方案 选择 A 的线性独立列的一组 B 将 x 中与不在 B 中的列相对应的所有分量设置为零 求解 m 个所得方程以确定 x 的分量 这些是基本变量 我知道解决方案将涉及使
  • 与正在运行的进程通信

    We have 基于Python的服务器 A 正在运行的命令行应用程序 在同一台 Linux 机器上 能够读取stdin 计算一些东西并将输出提供给stdout B 将输入从 A 发送到的最佳 最优雅 方式是什么 stdin B 的 并等待
  • django 返回记录的最近日期

    我正在尝试从用户的多个记录中返回最近的日期 当用户创建文档时 创建日期存储在 CreatedDocumentDetails 模型中 我无法返回用户最近创建的文档的日期 我问这个关于SO的问题 https stackoverflow com
  • 在 django 中运行普通 sql 查询时如何获取字段名称

    在我的 django 视图之一中 我使用纯 sql 不是 orm 查询数据库并返回结果 sql select from foo bar cursor connection cursor cursor execute sql rows cur
  • Python:装饰器可以确定函数是否在类中定义吗?

    我正在编写一个装饰器 出于各种烦人的原因 0 检查它所包装的函数是独立定义还是作为类的一部分定义 以及新类是哪些类的子类 是很方便的 例如 def my decorator f defined in class print r s f de
  • “from-import”是否执行整个模块?

    好的 所以我知道from import与 完全 相同import 但这显然不是因为命名空间的填充方式不同 我的问题主要是因为我有一个utils我的应用程序中的每个其他模块都使用一个或两个函数的模块 我正在努力合并标准库logging模块 据

随机推荐

  • webpack 4 给出背景: url([object Module]) 作为背景图像

    我在设置 web pack 4 和 svg sprite loader 将 svg 图标渲染为背景图像时遇到问题 我遵循 svg sprite loader 官方文档中的这些说明 https github com kisenka svg s
  • 使用 OpenCV 和 PyAudio 同步音频和视频

    我已经让 OpenCV 和 PyAudio 都工作了 但是我不确定如何将它们同步在一起 我无法从 OpenCV 获取帧速率并测量帧时时刻刻变化的调用时间 然而 对于 PyAudio 来说 它的基础是获取一定的采样率 我如何将它们同步到相同的
  • SqlAlchemy 连接字符串[重复]

    这个问题在这里已经有答案了 我遇到了非常奇怪的问题 我使用 sqlalchemy 的解决方案无法连接到数据库 这取决于我使用的密码 例如 以下记录工作正常 PWD 123123123 USR test user SQLALCHEMY DAT
  • 修复 OCaml 中的数据类型

    Haskell 中的以下数据类型如何用 OCaml 或 SML 表示 newtype Fix f In f Fix f 我已经在邮件列表上回答了这个问题 https sympa inria fr sympa arc caml list 20
  • R.java 文件实际上做什么以及如何做

    我一直在研究一个简单的 android 教程 在浏览项目文件夹时我发现了这个R java文件输入gen文件夹 当我打开时 我觉得它很乱 first R本身就是一个class it had multiple Inner classes定义在例
  • 如何在格式为“0000-00-00T00:00:00+00:00”的字符串上使用 datetime.strptime?

    由于我的应用程序的情况 我更愿意使用datetime strptime代替dateutil parser 看完之后docs https docs python org 3 library datetime html strftime str
  • 将代码添加到 __init__.py

    我正在研究 django 中的模型系统是如何工作的 我注意到一些我不明白的东西 我知道你创建了一个空的 init pyfile 来指定当前目录是一个包 你可以在其中设置一些变量 init py以便 import 正常工作 但是 django
  • C# 从 URL 下载文件

    谁能告诉我如何从该 URL 下载 C 程序中的文件 http www cryptopro ru products cades plugin get 2 0 http www cryptopro ru products cades plugi
  • 事件溯源基础设施实施

    我在我的应用程序中实现了事件源和 CQRS 模式 我的灵感来自于CQRS 旅程 https msdn microsoft com en us library jj554200 aspx我在哪里下载了示例代码 在那里 我找到了事件源的完整基础
  • 如何将数组作为参数传递给 shell 脚本并获取数组

    我将多个参数传递给 shell 脚本 在该脚本中 我想创建一个从第二个参数到最后一个参数的数组 我可以在下面做到这一点 arg 1 shift while 1 do emailID emailID 1 shift done 我想将此 ema
  • OAuth 2 Google API 刷新令牌为空

    我正在开发一个 Asp NET MVC5 应用程序按照这个谷歌示例代码 https developers google com api client library dotnet guide aaa oauth 我希望应用程序经过身份验证并
  • CMB2 可重复组显示

    我正在使用 Custom Metaboxes 2 但无法在前端显示可重复的组值 我有一个带有单个文本字段的可重复组 我用这个作为指导 https github com WebDevStudios CMB2 wiki Field Types
  • 从 MVC Web API 响应中删除 XML 命名空间属性

    我从 MVC Web Api 收到以下响应
  • 两个对象之间的通用深度差异

    我有两个对象 oldObj and newObj 数据在oldObj用于填充表单并且newObj是用户更改此表单中的数据并提交的结果 两个物体都很深 即 它们具有对象或对象数组等属性 它们可以是 n 层深 因此 diff 算法需要递归 现在
  • 移动 std::vector 时是否需要保留容量?

    考虑以下代码 std vector vec vec reserve 500 size t cap vec capacity std vector newVec std move vec assert cap newVec capacity
  • TextField 成为FirstResponder Tab 键(键盘)操作的问题

    我在 XIB 中有一个视图 其中使用了几个文本字段 假设视图加载到窗口中后 第一个文本字段将成为第一响应者 如果我按机器键盘上的 Tab 键导航到下一个文本字段 除了立即文本字段之外 所有其他文本字段也将成为第一响应者 并且为所有文本字段调
  • 采用可选块参数的子例程

    与接受的原型相关的注意事项尽管如此 以下两个设计的子程序是否可以存在于同一包中 即提供一个可选的块参数 例如sort does sub myprint for print n sub myprint my block shift for p
  • 如何最好地合并多个字典中的值?

    我创建了一个函数 它接受字典的多个参数 并返回一个连接的字典 我在网上研究了一段时间关于连接合并字典的内容并测试了有趣的字典 它们都会导致更新值 或覆盖它们 我的用例是传入字典 其中每个键都有一个值 并且想要一个具有相同或不同键的字典 以及
  • 使用 Android 读取 NXP ICODE SLI-L 标签

    我正在尝试在我的 Android 应用程序中读取 NXP 开发的 NFC 标签 可以使用 Android 读取标签 恩智浦应用程序 https play google com store apps details id com nxp ta
  • 如何将共生矩阵转换为稀疏矩阵

    我开始处理稀疏矩阵 所以我对这个主题并不是很精通 我的问题是 我有一个来自单词列表的简单共现矩阵 只是一个二维共现矩阵 逐字计算一个单词在同一上下文中出现的次数 由于语料库不是那么大 因此矩阵非常稀疏 我想将其转换为稀疏矩阵以便能够更好地处