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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949703.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源数据集成平台白皮书重磅发布《Apache SeaTunnel 2024用户案例合集》!

2025年新年临近&#xff0c;Apache SeaTunnel 社区用户案例精选&#x1f4d8;也跟大家见面啦&#xff01;在过去的时间里&#xff0c;SeaTunnel 社区持续成长&#xff0c;吸引了众多开发者的关注与支持。 为了致谢一路同行的伙伴&#xff0c;也为了激励更多人加入技术共创&…

Milvus×合邦电力:向量数据库如何提升15%电价预测精度

01. 全球能源市场化改革下的合邦电力 在全球能源转型和市场化改革的大背景下&#xff0c;电力交易市场正逐渐成为优化资源配置、提升系统效率的关键平台。电力交易通过市场化手段&#xff0c;促进了电力资源的有效分配&#xff0c;为电力行业的可持续发展提供了动力。 合邦电力…

Day21补代码随想录_20241231_669.修剪二叉搜索树|108.将有序数组转换为二叉搜索树|538.把二叉搜索树转换为累加树

669.修剪二叉搜索树 题目 【比增加和删除节点难的多】 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界 low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在 [low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;…

机场安全项目|基于改进 YOLOv8 的机场飞鸟实时目标检测方法

目录 论文信息 背景 摘要 YOLOv8模型结构 模型改进 FFC3 模块 CSPPF 模块 数据集增强策略 实验结果 消融实验 对比实验 结论 论文信息 《科学技术与工程》2024年第24卷第32期刊载了中国民用航空飞行学院空中交通管理学院孔建国, 张向伟, 赵志伟, 梁海军的论文——…

【USRP】教程:在Macos M1(Apple芯片)上安装UHD驱动(最正确的安装方法)

Apple芯片 前言安装Homebrew安装uhd安装gnuradio使用b200mini安装好的路径下载固件后续启动频谱仪功能启动 gnu radio关于博主 前言 请参考本文进行安装&#xff0c;好多人买了Apple芯片的电脑&#xff0c;这种情况下&#xff0c;可以使用UHD吗&#xff1f;答案是肯定的&#…

【C++数据结构——内排序】希尔排序(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 1. 排序算法基础概念 2.插入排序知识 3. 间隔序列&#xff08;增量序列&#xff09;的概念 4. 算法的时间复杂度和空间复杂度分析 5. 代码实现技巧&#xff08;如循环嵌套、索引计算&#xff09; 测试说明 我的通关代码: 测试结…

每天看一个Fortran文件(9)

最后的输出变量是f 这里面调用了一个关键的子程序&#xff0c;spectral_nudging_filter_fft_2d_ncar 这是一个谱逼近的二维快速傅里叶变换过滤的程序。 二维的滤波这个还不是很清楚&#xff0c;找找技术文件看下 超详细易懂FFT&#xff08;快速傅里叶变换&#xff09;及代码…

Centos源码安装MariaDB 基于GTID主从部署(一遍过)

MariaDB安装 安装依赖 yum install cmake ncurses ncurses-devel bison 下载源码 // 下载源码 wget https://downloads.mariadb.org/interstitial/mariadb-10.6.20/source/mariadb-10.6.20.tar.gz // 解压源码 tar xzvf mariadb-10.5.9.tar.gz 编译安装 cmake -DCMAKE_INSTA…

【通俗理解】AI的两次寒冬:从感知机困局到深度学习前夜

AI的两次寒冬&#xff1a;从感知机困局到深度学习前夜 引用&#xff08;中英双语&#xff09; 中文&#xff1a; “第一次AI寒冬&#xff0c;是因为感知机局限性被揭示&#xff0c;让人们失去了对算法可行性的信心。” “第二次AI寒冬&#xff0c;则是因为专家系统的局限性和硬…

数据结构9.3 - 文件基础(C++)

目录 1 打开文件字符读写关闭文件 上图源自&#xff1a;https://blog.csdn.net/LG1259156776/article/details/47035583 1 打开文件 法 1法 2ofstream file(path);ofstream file;file.open(path); #include<bits/stdc.h> using namespace std;int main() {char path[]…

下载ffmpeg执行文件

打开网址&#xff1a;Download FFmpeg 按下面步骤操作 解压文件就可以看到ffmpeg的执行文件了&#xff0c;需要通过命令行进行使用&#xff1a; ffmpeg命令行使用参考&#xff1a; ffmpeg 常用命令-CSDN博客

网络安全抓包

#知识点&#xff1a; 1、抓包技术应用意义 //有些应用或者目标是看不到的&#xff0c;这时候就要进行抓包 2、抓包技术应用对象 //app,小程序 3、抓包技术应用协议 //http&#xff0c;socket 4、抓包技术应用支持 5、封包技术应用意义 总结点&#xff1a;学会不同对象采用…

国产编辑器EverEdit - 两种删除空白行的方法

1 使用技巧&#xff1a;删除空白行 1.1 应用场景 用户在编辑文档时&#xff0c;可能会遇到很多空白行需要删除的情况&#xff0c;比如从网页上拷贝文字&#xff0c;可能就会存在大量的空白行要删除。 1.2 使用方法 1.2.1 方法1&#xff1a; 使用编辑主菜单 选择主菜单编辑 …

可以输入的下拉框(下拉框数据过大,页面卡死)

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在项目中&#xff0c;有些下拉框的数据过于庞大&#xff0c;这样页面有时候会卡死&#xff0c;在vue3中常用的组件库element-puls中有个组件可以避免 在项目中&#xff0c;有些需求要求下拉框选择的同…

基于Python的音乐播放器 毕业设计-附源码73733

摘 要 本项目基于Python开发了一款简单而功能强大的音乐播放器。通过该音乐播放器&#xff0c;用户可以轻松管理自己的音乐库&#xff0c;播放喜爱的音乐&#xff0c;并享受音乐带来的愉悦体验。 首先&#xff0c;我们使用Python语言结合相关库开发了这款音乐播放器。利用Tkin…

谷粒商城-高级篇完结-Sleuth+Zipkin 服务链路追踪

1、基本概念和整合 1.1、为什么用 微服务架构是一个分布式架构&#xff0c;它按业务划分服务单元&#xff0c;一个分布式系统往往有很多个服务单元。由于服务单元数量众多&#xff0c;业务的复杂性&#xff0c;如果出现了错误和异常&#xff0c;很难去定位 。主要体现在&#…

ollama+FastAPI部署后端大模型调用接口

ollamaFastAPI部署后端大模型调用接口 记录一下开源大模型的后端调用接口过程 一、ollama下载及运行 1. ollama安装 ollama是一个本地部署开源大模型的软件&#xff0c;可以运行llama、gemma、qwen等国内外开源大模型&#xff0c;也可以部署自己训练的大模型 ollama国内地…

pandas系列----DataFrame简介

DataFrame是Pandas库中最常用的数据结构之一&#xff0c;它是一个类似于二维数组或表格的数据结构。DataFrame由多个列组成&#xff0c;每个列可以是不同的数据类型&#xff08;如整数、浮点数、字符串等&#xff09;。每列都有一个列标签&#xff08;column label&#xff09;…

Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果

目录 Collider 2D 定义&#xff1a; 类型&#xff1a; Rigidbody 2D 定义&#xff1a; 属性和行为&#xff1a; 运动控制&#xff1a; 碰撞检测&#xff1a; 结合使用 实用检测 延伸拓展 1、在Unity中优化Collider 2D和Rigidbody 2D的性能 2、Unity中Collider 2D…

Java实现UDP与TCP应用程序

三、Java实现UDP应用程序 3.1 InetAddress类 java.net.InteAddress类是用于描述IP地址和域名的一个Java类&#xff1b; 常用方法如下&#xff1a; public static InetAddress getByName(String host)&#xff1a;根据主机名获取InetAddress对象public String getHostName()…