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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue cli更新遇到的问题(vue -V查询版本号不变的问题)

1.镜像地址选择 npm会去默认的registry远程仓库中下载指定内容 该过程可能十分缓慢 因此我们可以切换默认仓库为镜像地址 npm config set registry https://registry.npmmirror.com 通过该指令可以从最新的镜像地址下载指定内容(镜像地址可能会有变 有变请重新查询) 2.下载 …

qt中如何判断字符串是否为数字,整数,浮点数?

在 Qt 中&#xff0c;可以使用多种方法来判断字符串是否为数字、整数或浮点数。Qt 提供了一些方便的字符串和数值处理函数&#xff0c;可以帮助你实现这些判断。以下是几种常见的方法&#xff1a; 1. 使用 QRegularExpression Qt 提供了 QRegularExpression 类&#xff0c;可…

搭建nginx文件服务器

方法一&#xff1a;通过docker方式搭建 1、创建一个nginx配置文件/etc/nginx/nginx.conf user nginx; worker_processes 1;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_typ…

练习题:37

目录 Python题目 题目 题目分析 套接字概念剖析 通信原理分析 服务器 - 客户端连接建立过程&#xff1a; 基于套接字通信的底层机制&#xff1a; 代码实现 基于 TCP 的简单服务器 - 客户端通信示例 服务器端代码&#xff08;tcp_server.py&#xff09; 客户端代码&a…

2017年IMO几何预选题第7题

凸四边形 A B C D ABCD ABCD 有内切圆 I I I, △ D A B \triangle DAB △DAB, △ A B C \triangle ABC △ABC, △ B C D \triangle BCD △BCD, △ C D A \triangle CDA △CDA 的内心分别为 I a I_a Ia​, I b I_b Ib​, I c I_c Ic​, I d I_d Id​. △ A I b I d \…

RabbitMQ案例

1. 导入依赖 <!--AMQP依赖&#xff0c;包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 发送消息 注入RabbitTemplate Autowired RabbitT…

特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值

title: 特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值 date: 2025/1/4 updated: 2025/1/4 author: cmdragon excerpt: 随着数据管理需求的多样化,许多现代数据库系统开始支持特殊数据类型,以满足更多复杂应用场景的需求。在 PostgreSQL 中,JSON、数组和 HSTOR…

#渗透测试#漏洞挖掘#WAF分类及绕过思路

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

【Logstash02】企业级日志分析系统ELK之Logstash 输入 Input 插件

Logstash 使用 Logstash 命令 官方文档 https://www.elastic.co/guide/en/logstash/current/first-event.html #各种插件 https://www.elastic.co/guide/en/logstash/current/input-plugins.html https://www.elastic.co/guide/en/logstash/current/filter-plugins.html htt…

1.4 java反射机制 简单的java反射机制实践

这是一个项目用于学习反射 第一个demo是利用反射构建一个对象转换为JSON 第二个demo是用于利用类的名字以及方法名就可以直接执行的实例 package com.zy.reflectiondemo.utils;import com.zy.reflectiondemo.annotation.JsonField;import java.lang.reflect.Field; import jav…

C#设计模式(行为型模式):观察者模式

C#设计模式&#xff1a;观察者模式&#xff0c;让对象间通信更优雅 在软件开发中&#xff0c;我们经常会遇到一个对象的状态发生改变&#xff0c;其他对象需要自动更新或做出相应反应的场景。例如&#xff1a; GUI事件处理&#xff1a; 当用户点击按钮时&#xff0c;按钮需要…

【Vue】:解决动态更新 <video> 标签 src 属性后视频未刷新的问题

问题描述 在 Vue.js 项目&#xff0c;当尝试动态更新 <video> 标签的 <source> 元素 src 属性来切换视频时&#xff0c;遇到了一个问题&#xff1a;即使 src 属性已更改&#xff0c;浏览器仍显示旧视频。具体表现为用户选择新视频后&#xff0c;视频区域继续显示之…

BerOS 文件系统路径归一化问题及其 Python 实现

题目背景 本文将讨论一道与操作系统路径归一化有关的问题&#xff0c;该问题来自 BerOS 文件系统 的设计。BerOS 是一个新型操作系统&#xff0c;其文件路径系统允许路径中的分隔符 / 重复出现。例如&#xff0c;以下路径被视为等价的&#xff1a; /usr//local//nginx/sbin//…

Halcon 显示异常

//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋转 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …

window11 wsl mysql8 错误分析:1698 - Access denied for user ‘root‘@‘kong.mshome.net‘

&#x1f6a8; 错误分析&#xff1a;1698 - Access denied for user rootkong.mshome.net 这个错误是因为 MySQL 的 root 用户 使用 auth_socket 插件进行身份验证&#xff0c;而不是使用密码。因此&#xff0c;当你尝试从 远程主机 连接时&#xff0c;MySQL 会拒绝访问。 ✅ …

CentOS 7安装Docker详细教程

本文以 CentOS7.8 为例安装 Docker 26.1.4 、Docker Compose、以及 Docker 镜像仓库。 安装方式1&#xff1a;自动安装(使用官方脚本) 使用官网一键安装命令&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 或 使用国内 daocloud 一键安…

Java:缓存:LinkedHashMap实现Lru

文章目录 Lru源码分析 ​​​​​​​​​​​​​​LinkedHashMap维护一个LinkedHashMapEntry<K,V>的双向链表对LinkedHashMap的增删查操作,也会对链表进行相同的操作并改变链表的链接顺序小结使用方法​​​​​​​​​​​​​​应用总结Lru Least Recently Used,…

通过代理用户功能可以实现生产用户的应用滚动修改密码

Oracle通过代理用户功能可以实现生产用户的应用滚动修改密码。 测试例子&#xff1a; 生产用户为jyc密码为jyc 现在要求修改jyc的密码为abc&#xff0c;意味着所有应用都得停止同时修改。 此时可以考虑新建代理用户proxy_jyc&#xff0c;密码为jyc1&#xff08;实际修改建议…

Git 仓库与文件管理笔记

Git 的三种仓库概念 本地仓库 (Local Repository) 位于本地 .git 文件夹中通过 git init 或 git clone 创建存储完整的项目历史和分支信息 远程仓库 (Remote Repository) 位于 GitHub、GitLab 等平台服务器使用 git remote -v 查看所有远程仓库默认远程仓库名通常为 origin 工…

【人工智能数据科学与数据处理】——深入详解人工智能数据科学与数据处理之数据可视化与数据库技术

深入详解人工智能数据科学与数据处理 在人工智能&#xff08;AI&#xff09;的数据科学与数据处理中&#xff0c;数据可视化与数据库技术是两项至关重要的技能。本文将深入探讨数据可视化中的可视化技巧及其应用&#xff0c;以及关系型数据库&#xff08;如MySQL、PostgreSQL&…