在信息检索 (IR) 中,稀疏向量是一种用于表示文档或查询的数据结构,其中大多数维度(或位置)的值为零。在 IR 中,文本数据通常转换为数值向量,以支持诸如相似性比较之类的数学运算。向量中的每个维度对应于来自预定义词汇表的唯一术语(单词)。例如,如果词汇表包含 10,000 个术语,则文档的向量将具有 10,000 个维度。但是,由于大多数文档仅包含这些术语的一小部分,因此向量的大部分值将为零。与大多数值非零的密集向量相比,这种稀疏性使得存储和计算更加高效。
稀疏向量通常用于诸如 词袋模型 或 TF-IDF (词频-逆文档频率)之类的模型中。例如,考虑一个包含来自 1,000 个术语的词汇表的词语“猫”、“狗”和“鱼”的文档。它的稀疏向量可能在对应于这三个词语的位置具有非零值(例如,[0, 0, 3, 0, 2, …, 0, 1]),其中数字表示术语频率。其余的 997 个位置保持为零。将此存储为稀疏向量避免了为所有 1,000 个维度分配内存,从而减少了内存使用并加快了诸如点积(用于计算相似度得分)之类的运算。
在实践中,稀疏向量使用诸如字典或哈希图之类的数据结构来实现,其中仅存储非零值及其索引。例如,Python 字典可能会将术语“猫”映射到其 TF-IDF 权重,跳过文档中不存在的所有术语。这种效率在大型系统中(如搜索引擎)至关重要,在这些系统中,使用密集表示处理具有高维词汇表的数百万个文档是不可行的。但是,稀疏向量缺少术语之间的语义关系(例如,“猫”和“小猫”被视为无关),这是密集嵌入(例如,word2vec 或 BERT)解决的一个局限性。尽管如此,由于其简单性和可解释性,稀疏向量仍然广泛用于诸如关键字搜索和排名之类的任务。