首页 > 其他分享 >Word2vec 学习笔记

Word2vec 学习笔记

时间:2024-03-17 22:32:39浏览次数:26  
标签:wiki Word2vec 词语 笔记 学习 re word2vec model

word2vec 学习笔记

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)

完结!

标签:wiki,Word2vec,词语,笔记,学习,re,word2vec,model
From: https://blog.csdn.net/engchina/article/details/136781815

相关文章

  • 079基于深度学习的香蕉成熟度检测小程序版_含10多种模型
    代码下载和视频演示地址:079基于深度学习的香蕉成熟度检测小程序版_含10多种模型_哔哩哔哩_bilibili效果展示图如下:​代码文件展示如下: ​运行01数据集文本生成制作.py可以读取图片路径保存再txt文本中,运行02train.py可以对txt文本中的图片路径读取并训练模型,在02......
  • APT32 RTC+低功耗调试笔记
    1、项目需求   采用APT32F1023单片机,内部27K时钟驱动RTC,内部6M定时器作为主频。周期检测外部供电是否恢复,如果恢复则使用正常工作模式,否则仅开启RTC,关闭其他外设,进入低功耗待机模式。2、存在问题    A:开启看门狗后,会周期触发看门狗复位     B:进入低功耗模式后,......
  • 综合架构学习笔记-3---
    综合架构学习笔记-3---rsync-扩展脚本虚拟机测试环境ip10.0.1.0网关10.0.1.2子网掩码255.255.255.0知识回顾rsync如何部署?1.安装软件rsync2.编写配置文件虚拟用户备份目录密码文件具体流程演示linux系统安装部署服务流程:a下载安装软件yumb编写配置......
  • 综合架构学习笔记-2
    综合架构学习笔记-2---rsync-实战实战1rsync守护进程部署测试环境--虚拟机环境ip10.0.1.0网关10.0.1.2子网掩码255.255.255.0步骤服务端第一步:下载安装软件 [root@localhost~]#yuminstall-yrsync 第二步:编写配置文件把原来的配置文件删除 [roo......
  • 综合架构学习笔记-3---rsync-扩展脚本
    综合架构学习笔记-3---rsync-扩展脚本虚拟机测试环境ip10.0.1.0网关10.0.1.2子网掩码255.255.255.0知识回顾rsync如何部署?1.安装软件rsync2.编写配置文件虚拟用户备份目录密码文件具体流程演示linux系统安装部署服务流程:a下载安装软件yumb编写配置......
  • 综合架构学习笔记-2---rsync-实战
    综合架构学习笔记-2---rsync-实战实战1rsync守护进程部署测试环境--虚拟机环境ip10.0.1.0网关10.0.1.2子网掩码255.255.255.0步骤服务端第一步:下载安装软件 [root@localhost~]#yuminstall-yrsync 第二步:编写配置文件把原来的配置文件删除 [roo......
  • AI大型语言模型的微调与迁移学习
    1.背景介绍在过去的几年里,人工智能(AI)和机器学习(ML)领域取得了显著的进步。特别是在自然语言处理(NLP)领域,大型预训练语言模型如BERT、GPT-3等的出现,使得机器对人类语言的理解和生成能力达到了前所未有的高度。然而,这些模型在特定任务上的表现往往需要通过微调(Fine-tuning)和迁......
  • Sass学习记录
    1.变量声明$demo-color:red;$demo-border:1pxsolid$demo-color;.a{border:$demo-border;}2.嵌套#a{.a{width:1px}}3.符号&,伪类选择.bbca{color:red;&:hover{color:blue}}4.群组嵌套#content{h1,h2......
  • 信息安全认证 CISSP 官方学习指南 第9版 中文版 学习记录
    刚考完CISSP考试,顺利通过,因此记录一下相关内容,希望对大家有帮助CISSP介绍CISSP(CertifiedInformationSystemsSecurityProfessional)是全球范围内最受尊敬的信息安全认证之一,由国际信息系统安全认证联盟(ISC)²(InternationalInformationSystemSecurityCertification......
  • Android开发笔记[13]-图案密码
    摘要输入图案密码123跳转到关于页面.关键信息AndroidStudio:Iguana|2023.2.1Gradle:distributionUrl=https://services.gradle.org/distributions/gradle-8.4-bin.zipjvmTarget='1.8'minSdk21targetSdk34compileSdk34开发语言:Kotlin,JavandkVersion='21.1.6......