学习随笔:word2vec在win11 vs2022下编译、测试运行

  1. word2vec 官网
  2. word2vec的本质是在自然语言词条数据集与计算机浮点数据集之间建立双射关系。
  3. word2vec建立的数据集最厉害的一点是,将自然语言词条数据集内部的推理过程,映射到了计算机浮点数据集内部的数值运算。我个人感觉理解这个数据映射方式是理解AI大语言模型的关键。

官网有以下描述:例如向量运算 vector('Paris') - vector('France') + vector('Italy') 导致向量非常接近 vector('Rome'),而 vector('king') - vector('man') + vector('woman') 接近 vector('queen')[3, 1]。

  1. word2vec开源版本只是映射算法的一个基本实现,效果受限于训练数据集和算法本身。有些难以表达的知识,实际很难数据化,例如中医模糊的辨证方法、苏东坡的艺术感。这是一个需要持续研究的基础方向。
  2. google word2vec官网的代码似乎已经不能访问了,github上还可以检索到。原版拷贝可能是这个:tmikolov/word2vec
  3. word2vec主要实现两个算法:the Continuous Bag-of-Words (CBOW) and the Skip-gram model (SG)
  4. word2vec readme内容翻译如下
    https://github.com/tmikolov/word2vec/blob/master/README.txt
    给定一个文本语料库,word2vec 工具使用连续词袋或 Skip-Gram 神经网络架构为词汇表中的每个单词学习一个向量。用户应指定以下内容:
  • 所需的向量维数
  • Skip-Gram 或连续词袋模型的上下文窗口大小
  • 训练算法:分层 softmax 和/或 负采样
  • 对频繁词进行下采样的阈值
  • 要使用的线程数
  • 输出词向量文件的格式(文本或二进制)

通常,其他超参数(例如学习率)不需要针对不同的训练集进行调整。

脚本 demo-word.sh 从网络下载一个小型(100MB)文本语料库,并训练一个小型词向量模型。训练完成后,用户可以交互式探索单词的相似性。

有关脚本的更多信息,请访问 https://code.google.com/p/word2vec/

  1. word2vec示例数据下载:wget http://mattmahoney.net/dc/text8.zip -O text8.gz

  2. forked from tmikolov/word2vec 得到 https://github.com/swordll80/word2vec

  3. 在本地 C:\code目录下启动git命令行,执行git clone https://github.com/swordll80/word2vec.git

  4. 在 PowerShell中执行cmake生成vs的sln等文件

    此sln文件实际是基于CMakeLists.txt文件生成的。

  5. 或者直接使用CMakeLists.txt

  6. 在win11下编译时,需要linux的pthreads,下载pthreads-win32自己编译也可以实现在win11下使用linux pthreads接口。用我编译好的pthreads可能也可以,如果不行,那就是编译环境差别太大。

  7. 修改少量代码后,就可以在win11 vs2022环境下编译word2vec

    也可以直接从https://github.com/swordll80/word2vec下载后debug win版本。

    实际也可以在linux 虚拟机等环境测试原版代码。

  8. 运行word2vec进行训练,运行distance进行推理

    参考demo-word.sh文件(别的文件用的不同测试数据,可以先不管)

    ./word2vec.exe -train text8 -output vectors.bin -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 1 -iter 15

    ./distance.exe vectors.bin 测试计算单词的距离

    word2vec的帮助信息如下:

    ./word-analogy.exe vectors.bin 三词测试效果,参考demo-analogy.sh 文件

    word2phrase用于短语训练,参考demo-phrases.sh

  9. Python interface to Google word2vec

  10. 影响单词向量的质量: * 训练数据的数量和质量 * 向量的大小 * 训练算法

  11. ./compute-accuracy vectors.bin 30000 < questions-words.txt 用于测试词向量质量。同理,demo-phrase-accuracy.sh用于测试短语质量。

  12. demo-classes.sh 与Word clustering 单词聚类有关

  13. 架构:Skip-gram(较慢,更适合不常见的单词)与 CBOW(快速)

  14. 训练算法:分层 SoftMax(更适合不经常使用的单词)与负采样(更适合频繁的单词,更适合低维向量)

  15. 高频词的子采样:可以提高大型数据集的准确性和速度(有用的值在 1e-3 到 1e-5 范围内)

  16. 单词 Vectors 的维度:通常越多越好,但并非总是如此

  17. 上下文(窗口)大小:对于 skip-gram,通常在 10 左右,对于 CBOW,通常在 5 左右

  18. 代码注释,单步调试等后续补充。

相关推荐
curemoon8 分钟前
理解都远正态分布中指数项的精度矩阵(协方差逆矩阵)
人工智能·算法·矩阵
胡桃不是夹子1 小时前
CPU安装pytorch(别点进来)
人工智能·pytorch·python
Fansv5871 小时前
深度学习-6.用于计算机视觉的深度学习
人工智能·深度学习·计算机视觉
xjxijd1 小时前
AI 为金融领域带来了什么突破?
人工智能·其他
SKYDROID云卓小助手2 小时前
无人设备遥控器之如何分享数传篇
网络·人工智能·算法·计算机视觉·电脑
deephub2 小时前
LLM高效推理:KV缓存与分页注意力机制深度解析
人工智能·深度学习·语言模型
奋斗的袍子0072 小时前
Spring AI + Ollama 实现调用DeepSeek-R1模型API
人工智能·spring boot·深度学习·spring·springai·deepseek
青衫弦语2 小时前
【论文精读】VLM-AD:通过视觉-语言模型监督实现端到端自动驾驶
人工智能·深度学习·语言模型·自然语言处理·自动驾驶
没枕头我咋睡觉2 小时前
【大语言模型_4】源码编译vllm框架cpu版
人工智能·语言模型·自然语言处理
视觉语言导航2 小时前
NeurIPS-2024 | 具身智能如何理解空间关系?SpatialRGPT:视觉语言模型中的具象空间推理
人工智能·具身智能