Word2vec 学习笔记

news2024/11/24 2:25:55

word2vec 学习笔记

  • 0. 引言
  • 1. Word2vec 简介
    • 1-1. CBOW
    • 1-2. SG
  • 2. 实战

0. 引言

最近研究向量检索,看到有同事使用 MeCab、Doc2Vec,所以把 Word2vec 这块知识学习一下。

1. Word2vec 简介

Word2vec 即 word to vector,顾名思义,就是把词转换成向量,该方法在 2013 年由谷歌公司提出并实现。

笼统地说,Word2vec 的原理是根据词语的上下文来提取一个词的语义,在统计上,词义相同的词的上下文也应该比较类似。例如"猫"和"狗"都是人类的宠物,可能会和"喂"“可爱”"粘人"之类的词一起出现,通过这样的规律,我们可以得出"猫"和"狗"这两个词的相似性。

该方法使在深度学习中使用很大的词表成为可能。

Word2vec 可以解决 One-Hot 表示法的词向量维度高且无法体现词语意义的问题,也就是说 One-Hot 表示法的 0 和 1 是无规律的,而 Word2vec 产生的词向量能体现词语间的关系。

该方法有以下特点:

  • 第一,算法效率高,可以在百万数量级的词典和上亿规模的数据上训练;
  • 第二,得到的词向量可以较好地反映词间的语义关系。

Word2vec 提出两种基本模型:

  • CBOW:连续词袋模型
  • SG:跳词模型

1-1. CBOW

CBOW 即 Continuous Bag-of-Words,是通过一个词的上下文来预测这个词的含义。

在这里插入图片描述

1-2. SG

SG 即 Skip-Gram,是通过一个词语来预测上下文词语。

在这里插入图片描述

2. 实战

下面实战的对象语言是日文,如果想尝试中文,请自行搜索其他文档。

安装MeCab,

sudo dnf install mecab

安装词典,

sudo dnf install mecab-ipadic

安装开发包(用于gensim),

sudo dnf install mecab-devel

安装Python绑定,

pip install mecab-python3

安装gensim,

pip install gensim

下载 wiki 记事(日文),

curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2
-o jawiki-latest-pages-articles.xml.bz2

整理 wiki 记事,

git clone https://github.com/attardi/wikiextractor; cd wikiextractor
rm -rf .git
vi wikiextractor/extract.py

--- modify
ANCHOR_CLASS = r'[^][\x00-\x08\x0a-\x1F]'
ExtLinkBracketedRegex = re.compile(
    '\[((' + '|'.join(wgUrlProtocols) + ')' + EXT_LINK_URL_CLASS + r'+)' +
    r'\s*((?:' + ANCHOR_CLASS + r'|\[\[' + ANCHOR_CLASS + r'+\]\])' + r'*?)\]',
    re.I | re.S | re.U)

EXT_IMAGE_REGEX = re.compile(
    r"""^(http://|https://)([^][<>"\x00-\x20\x7F\s]+)
    /([A-Za-z0-9_.,~%\-+&;#*?!=()@\x80-\xFF]+)\.(gif|png|jpg|jpeg)$""",
    re.I | re.X | re.S | re.U)
---

refer: https://github.com/attardi/wikiextractor/pull/182/commits/45662a5c914a1fb896bbdbbc26be5b3ea598cc51

python setup.py install
python -m wikiextractor.WikiExtractor ../jawiki-latest-pages-articles.xml.bz2
# 该命令将从指定目录中提取所有包含 "wiki" 的文本文件并将其合并到一个名为 "wiki.txt" 的文件中。
find text/ | grep wiki | awk '{system("cat "$0" >> wiki.txt")}'
# 下面这个过程比较花时间
mecab -Owakati wiki.txt -o wiki_wakati.txt
nkf -w --overwrite wiki_wakati.txt

训练,

from gensim.models import word2vec
import logging

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus('./wiki_wakati.txt')

model = word2vec.Word2Vec(sentences, size=200, min_count=20, window=15)
model.save("./wiki.model")

推理1,在推理过程中,可以提取与指定为正向的词语相似的词语。

from gensim.models import word2vec

model = word2vec.Word2Vec.load("./wiki.model")
results = model.wv.most_similar(positive=['講義'])
for result in results:
    print(result)

推理2,如果指定多个正向词语,可以提取与这些词语语义相近的词语。

from gensim.models import word2vec

model = word2vec.Word2Vec.load("../../dataset/w2v_wiki/wiki.model")
results = model.wv.most_similar(positive=['メジャー',"野球"])
for result in results:
    print(result)

推理3,通过指定正向和反向词语,可以进行语义消减。

from gensim.models import word2vec

model = word2vec.Word2Vec.load("../../dataset/w2v_wiki/wiki.model")
results = model.wv.most_similar(positive=['東京',"ロンドン"],negative=["日本"])
for result in results:
    print(result)

完结!

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

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

相关文章

在MongoDB建模1对N关系的基本方法

“我在 SQL 和规范化数据库方面拥有丰富的经验&#xff0c;但我只是 MongoDB 的初学者。如何建立一对 N 关系模型&#xff1f;” 这是我从参加 MongoDB 分享日活动的用户那里得到的最常见问题之一。 我对这个问题没有简短的答案&#xff0c;因为方法不只有一种&#xff0c;还有…

HarmonyOS(鸿蒙)ArkUI组件

方舟开发框架&#xff08;简称ArkUI&#xff09;为HarmonyOS应用的UI开发提供了完整的基础设施&#xff0c;包括简洁的UI语法、丰富的UI功能&#xff08;组件、布局、动画以及交互事件&#xff09;&#xff0c;以及实时界面预览工具等&#xff0c;可以支持开发者进行可视化界面…

风速预测(八)VMD-CNN-Transformer预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

负数,小数转换二进制

负数转换二进制 例&#xff1a;在带符号整数signed char的情况下&#xff0c;-57如何被表示成负数呢&#xff1f;在计算机中又是如何计算66-57呢&#xff1f; 解析 考虑int占有32位太长&#xff0c;因此使用只占8位的signed char类型来举例。57用二进制表示位00111001&#…

【Mysql数据库基础04】连接查询、内连接、外连接

Mysql数据库基础04 0 该博客所要用的数据库表的属性1 SQL92 内连接1.1 等值连接1.1.1 两个表的顺序可以调换1.1.2 加筛选1.1.3 加分组1.1.4 加排序1.1.5 三表连接 1.2 非等值连接1.3 自连接 2 SQL99 内连接2.1 等值连接2.2 非等值连接2.3 自连接 3 外连接3.1 左外和右外连接 4 …

大模型主流微调训练方法总结 LoRA、Adapter、Prefix-tuning、P-tuning、Prompt-tuning 并训练自己的数据集

大模型主流微调训练方法总结 LoRA、Adapter、Prefix-tuning、P-tuning、Prompt-tuning 概述 大模型微调(finetuning)以适应特定任务是一个复杂且计算密集型的过程。本文训练测试主要是基于主流的的微调方法:LoRA、Adapter、Prefix-tuning、P-tuning和Prompt-tuning,并对…

网络原理(3)——TCP协议

目录 一、连接管理 二、三次握手 1、何为三次握手&#xff1f; 2、三次握手有何意义&#xff1f; 三、四次挥手 三次握手和四次挥手的相似之处和不同之处 &#xff08;1&#xff09;相似之处 &#xff08;2&#xff09;不同之处 四、TCP的状态 建立连接&#xff1a; 断开…

Matlab中inv()函数的使用

在Matlab中&#xff0c;inv()函数是用来求解矩阵的逆矩阵的函数。逆矩阵是一个与原矩阵相乘后得到单位矩阵的矩阵。在数学中&#xff0c;矩阵A的逆矩阵通常用A^-1表示。 什么是逆矩阵 在数学中&#xff0c;对于一个n阶方阵A&#xff0c;如果存在一个n阶方阵B&#xff0c;使得…

华为综合案例-普通WLAN全覆盖配置(1)

适用范围和业务需求 适用范围 本案例适用于大多数场景&#xff0c;如办公室、普通教室、会议室等普通非高密场景。 业务需求 主要业务需求如下&#xff1a; 接入需求 随时、随地无线业务接入。无线覆盖需要做到覆盖均匀、无盲区。 无线漫游需求 多层网络、快速切换、网络…

P1143 进制转换题解

题目 请你编一程序实现两种不同进制之间的数据转换。 输入输出格式 输入格式 共三行&#xff0c;第一行是一个正整数&#xff0c;表示需要转换的数的进制n (2≤n≤16)&#xff0c;第二行是一个n进制数&#xff0c;若n>10则用大写字母A∼F表示数码10∼15&#xff0c;并且…

使用 GTSAM 进行曲线拟合的示例

GTSAM介绍 GTSAM(通用因子图优化库)是一种用于状态估计和传感器数据融合的开源C++库。它提供了强大的工具,用于在机器人和自主系统领域进行感知、决策和控制。 功能和特点 状态估计与优化: GTSAM 提供了灵活且高效的状态估计框架,能够处理从传感器获取的数据,并…

接口测试系列 —— 转转交易业务场景接口测试实践

01 Why接口测试 一、提高效率 关键词&#xff1a;QA 职责保质保量的完成需求测试工作在保证质量的前提下提高效率&#xff0c;要保证质量&#xff0c;首先需要先弄清楚这次需求的测试范围&#xff0c;针对性的使用不同的测试方法&#xff0c;而接口测试就是其中的一种&#x…

JMeter 并发测试和持续性压测详解

并发测试和持续性压测都是评估系统性能的常用方法&#xff0c;它们可以帮助开发人员发现并解决系统中的性能问题。本文来详细介绍下。 概念 并发测试&#xff1a; 旨在评估系统在同时处理多个用户请求时的性能。在这种 测试 中&#xff0c;系统会暴露于一定数量的用户负载下&…

Bito插件

此文档只作用于指导性工作&#xff0c;更多资料请自行探索。 1、插件安装与介绍 1.1 插件下载与安装 在idea中搜索&#xff1a;Bito Bito is also available for:​编辑VSCode​编辑JetBrains​编辑CLI 1.2 官方介绍 插件&#xff1a;ChatGPT GPT-4 - Bito AI Code Assista…

SQLiteC/C++接口详细介绍sqlite3_stmt类(五)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;四&#xff09;- 下一篇&#xff1a; 无 12. sqlite3_bind_text16函数 sqlite3_bind_text16函数用于将UTF-16编码的文本数据&#xff08;字符串&#xff09;绑定…

推荐一款管理hosts文件的利器

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

windows下不同python版本切换

一、简介 有时候在windows环境下会安装很多个不同的Python版本&#xff0c;但是在运行一些特定环境时&#xff0c;又需要特定的python版本。于是就需要切换Python版本。 二、实操 右键“我的电脑”-》属性 右侧“高级系统设置” “高级”-》“环境变量” 双击“Path” 可以看到…

计算机视觉之三维重建(2)---摄像机标定

文章目录 一、回顾线代1.1 线性方程组的解1.2 齐次线性方程组的解 二、透镜摄像机的标定2.1 标定过程2.2 提取摄像机参数2.3 参数总结 三、径向畸变的摄像机标定3.1 建模3.2 求解 四、变换4.1 2D平面上的欧式变换4.2 2D平面上的相似变换和仿射变换4.3 2D平面上的透射变换4.4 3D…

深入浅出前端本地储存(1)

引言 2021 年&#xff0c;如果你的前端应用&#xff0c;需要在浏览器上保存数据&#xff0c;有三个主流方案&#xff1a; CookieWeb Storage (LocalStorage)IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史…

全球首例AI软件工程师Devin:Cognition AI引领智能编程新纪元

近日&#xff0c;初创企业Cognition AI震撼发布了全球首位AI软件工程师——Devin&#xff0c;这一开创性的突破标志着人工智能在编程与软件开发领域的应用迈上了全新的台阶。Devin以其卓越的计算机推理与规划能力&#xff0c;正在重新定义我们对软件工程实践的理解。 Devin&am…