Swivel
Swivel算法
对于X_ij=0
Swivel是如何工作的?
- 统计字典、同现矩阵(矩阵中是两个词同现的次数)
- 重组同现矩阵(chop it into smaller pieces) 为了并行执行
- 为每个word和每个contex,指定一个固定维数的random embedding vector
- 迭代近似 点PMI和vector的点积。
需要注意的是,同现矩阵是非常稀疏的,对于罕见词,可能是没有足够的样本数据去发现他们共现,也可能是,常见词,但是我们没有观察到他们同现。Swivel 尝试去捕获这种没有同现的情况,通过observed和un-observed同现,去调整词向量.根据经验,swivel会产生更好的词向量,尤其是对生僻词。
swivel包括了哪些程序?
prep.py
统计字典和同现.swivel.py
根据同现矩阵生成swivel词向量. 生成两个text文件,行向量和列向量.text2bin.py
把上一步生成的文件转化成二进制文件(快速加载,快速计算). 这个工具还可以把Glove和word2vec生成的向量转化成二进制.nearest.py
手动检查binary embeddings.eval.mk
一个GNU makefile, fill retrieve and 标准化常见的问题集.wordsim.py
andanalogy
执行问题集.fastprep
和prep.py一样,但是基于C++.
怎么运行swivel?
TODO LIST
- swivel的pmi是如何计算的?
- swivel的同现矩阵是如何统计的?