【问题标题】:How to store Bag of Words or Embeddings in a Database如何在数据库中存储词袋或嵌入
【发布时间】:2021-01-15 03:02:49
【问题描述】:

我想将向量特征(例如大量文本的词袋或词嵌入向量)存储在数据集中,存储在 SQL 数据库中。 保存和检索这些特征的数据结构和最佳做法是什么?

【问题讨论】:

    标签: python database nlp dataset word-embedding


    【解决方案1】:

    这取决于许多因素,例如您打算使用的精确 SQL 数据库以及您如何存储此嵌入。 例如,PostgreSQL 允许存储查询和检索 JSON 变量(https://www.postgresqltutorial.com/postgresql-json/); SQLite 等其他选项将允许存储 JSON 或 pickle 对象的字符串表示形式 - 这可以用于存储,但会使查询向量内的元素变得不可能。

    【讨论】:

      【解决方案2】:

      如果可能的话,词向量通常应该存储为 BLOB。如果不是,它们可以存储为 json 数组。由于词向量唯一合理的操作是通过词键查找它们,因此其他细节并不特别重要。

      对于词袋你通常需要三列,这就是它在 sqlite 中的样子。

      create table bow (
        doc_id int,
        word text,
        count int)
      

      您的文档 ID 来自其他地方。如果需要,可以将(doc_id, word) 设为密钥。

      但是,在 SQL 数据库中存储此类功能通常没有帮助。当您访问字数或字向量时,您通常不需要它们的子集,而是一次需要它们,因此 SQL 的关系特性没有帮助。

      【讨论】:

        【解决方案3】:

        在机器学习中有专门用于矢量数据的数据库。这些是列表。

        1. Milvus https://milvus.io/
        2. 松果https://www.pinecone.io/

        【讨论】:

          猜你喜欢
          • 2018-03-11
          • 2021-05-12
          • 2012-05-30
          • 2020-10-23
          • 1970-01-01
          • 1970-01-01
          • 2019-02-24
          • 1970-01-01
          • 2014-12-08
          相关资源
          最近更新 更多