学习随笔: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. 代码注释,单步调试等后续补充。

相关推荐
阿泽·黑核6 分钟前
Easy Vibe Coding 学习心得(六):RAG 入门——让 AI 拥有企业级知识库
人工智能·vibe coding·easy vibe
光之后裔8 分钟前
人工智能对计算机领域冲击思考
人工智能
AI人工智能+13 分钟前
一种融合大模型微调与高精度OCR的智能文档抽取系统,实现对合同文本中关键要素的高精度语义理解与结构化抽取
人工智能·语言模型·ocr·文档抽取
程序员水自流16 分钟前
【AI大模型第13集】Transformer底层架构原理详细介绍(核心组件拆解分析)
java·人工智能·架构·llm·transformer
code_pgf17 分钟前
openclaw配置高德导航、京东商品搜索、QQ 音乐播放控制
人工智能·gateway·边缘计算
IT观测18 分钟前
品牌在AI中的影响力如何评估?2026年AI营销工具实战选型指南
大数据·人工智能
ai_xiaogui19 分钟前
PanelAI前端全面升级!私有化部署AI面板控制台+生态市场一键管理详解
前端·人工智能·comfyui一键部署·生态市场算力共享·ai面板控制台·panelai私有化部署·大模型前端管理
海水冷却22 分钟前
RTC成语音AI基础设施:AWS和ElevenLabs相继跟进,ZEGO已跑三年
人工智能·实时音视频·aws
QC·Rex23 分钟前
国产大模型应用实践:从 0 到 1 搭建企业级 AI 助手
人工智能·langchain·大语言模型·rag·企业应用·ai 助手
墨染天姬24 分钟前
【AI】ollama和vLLM怎么选
人工智能