紧凑型全词覆盖向量技术解析

floret: fastText + Bloom嵌入实现紧凑型全词覆盖向量

项目概述

floret是fastText的扩展版本,能够从紧凑的向量表中为任何单词生成词向量表示。它结合了:

  • fastText的子词功能,为任何单词提供嵌入
  • Bloom嵌入(“哈希技巧”)实现紧凑向量表

安装方法

从源码构建

git clone https://github.com/explosion/floret
cd floret
make

Python安装

pip install floret

或开发者模式安装:

git clone https://github.com/explosion/floret
cd floret
pip install -r requirements.txt
pip install --no-build-isolation --editable .

使用方法

floret在fasttext基础上增加了两个命令行选项:

  • -mode:fasttext(默认)或floret(单词和字符n-gram哈希到桶中)
  • -hashCount:floret模式专用,每个单词/子词的哈希数量(1-4)

使用-mode floret时,单词条目与子词嵌入存储在同一个表中,减少了保存向量数据的大小。

训练CBOW嵌入的示例:

floret cbow -dim 300 -minn 4 -maxn 5 -mode floret -hashCount 2 -bucket 50000 \
-input input.txt -output vectors

技术原理

传统fastText的局限性

原始fastText实现将单词和子词存储在两个独立的表中:

  • 单词表:词汇表中每个单词一个条目(约100万条目)
  • 子词表:通过哈希每个子词到表中的一行(默认200万条目)

对于100万单词+200万子词,300维32位浮点向量需要约3GB存储空间。

floret的解决方案

floret采用Bloom嵌入算法,通过将每个条目哈希到表中的多个行来存储不同的表示。通过将每个条目表示为多个行的和,大多数条目都能获得不同的表示。

以单词"apple"为例,设置-minn 4 -maxn 5 -mode floret -hashCount 2时,其嵌入存储为以下各项的两个哈希行的和:

<apple>
<app
appl
pple
ple>
<appl
apple
pple>

向量表格式

floret生成.floret格式的向量表,类似于.vec格式,但包含扩展的头部信息:

bucket dim minn maxn hashCount hashSeed BOW EOW

示例表结构:

10 10 2 3 2 2166136261 < >
0 -2.2611 3.9302 2.6676 -11.233 0.093715 -10.52 -9.6463 -0.11853 2.101 -0.10145
1 -3.12 -1.7981 10.7 -6.171 4.4527 10.967 9.073 6.2056 -6.1199 -2.0402
...

与spaCy集成

在spaCy v3.2+中导入floret向量表:

spacy init vectors LANG vectors.floret spacy_vectors_dir --mode floret

注意事项

  • fastText和floret二进制格式(.bin)不兼容
  • floret支持所有现有的fasttext命令,不修改任何fasttext默认值
  • 使用MurmurHash与spaCy兼容

技术优势

  1. 紧凑存储:显著减少向量表大小
  2. 全词覆盖:为训练期间未见过的单词生成向量
  3. 灵活配置:支持1-4个哈希 per条目
  4. 框架集成:与spaCy等流行NLP框架无缝集成

该项目为资源受限环境下的词向量应用提供了高效的解决方案,特别适合形态丰富的语言和处理未知词汇的场景。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值