IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 应用工具训练Word2Vec -> 正文阅读

[人工智能]应用工具训练Word2Vec

目录

前言

首先导入相关的包

接下来准备语料

模型训练

应用词向量库

前言

了解了文本表示的基本含义之后,前面学习了词袋模型这种最简单的文本表示方法,接下来学习了Word2Vec。

本文便是使用工具训练Word2Vec的实操代码,代码都是来自参考文献里的这本书,但是我在学习的过程中发现,书上的代码使用的应该gensim3版本,现在gensim已经更新到了v4,所以书中的很多代码报错。

针对这种问题,解决办法有二,第一是下载掉v4版本的gensim,下载v3版本的;第二种方法自然是重新去查询v4版本的相应调用代码。

个人感觉,还是要紧跟时代,哈哈哈哈,所以我决定去查一下v4版本的调用方法。

参考文献:胡盼盼编著. 自然语言处理从入门到实战[M]. 中国铁道出版社, 2020.

1 首先导入相关的包

注释里标明了这是v3或者v4导入包的方式。

from gensim.models import word2vec #v3
from gensim.models import Word2Vec #v4
import jieba

2 接下来准备语料

并且要将语料转化为合适的输入格式,这里的输入格式如下所示:

sentences = [['this', 'is', 'the', 'first', 'sentence', 'for', 'word2vec'],
            ['this', 'is', 'the', 'second', 'sentence'],
            ['yet', 'another', 'sentence'],
            ['one', 'more', 'sentence'],
            ['and', 'the', 'final', 'sentence']]

#该数据样式来自「小王做笔记」https://blog.csdn.net/qsx123432/article/details/120583529

因此我们要将自己的数据处理成这种格式。

raw_texts = [
    '你站在桥上看风景',
    '看风景的人在楼上看你',
    '明月装饰了你的窗子',
    '你装饰了别人的梦',
]
texts = [[word for word in jieba.cut(text, cut_all=True)] for text in raw_texts]
print(texts)

我们看一下打印出来的结果,是否和上面要求的输入格式一致。

[['你', '站', '在', '桥上', '看', '风景'], 
['看', '风景', '的', '人', '在', '楼上', '看', '你'], 
['明月', '装饰', '了', '你', '的', '窗子'],
 ['你', '装饰', '了', '别人', '的', '梦']]

3 模型训练

接下来只需要输入相关参数,比如语料,窗口,向量维度等,就可以获得训练好的模型了。

model = word2vec.word2vec(texts, min_count = 1, window = 3, size = 5) #v3
model = Word2Vec(texts, min_count = 1, window = 3, vector_size = 5) #v4

4 应用词向量库

上面通过一行简单的代码,便训练好了一个迷你版本的词向量库,接下来对其进行应用。

4.1 首先可以打印出某个词的词向量:

print(new_model["你"]) #v3
print(model.wv["你"] #v4

不过这里还有一个问题就是,这个new_model是怎么回事?原本我以为在v3版本里,会直接把训练的model命名为new_model,但是后来我去看网上的帖子发现,v3里面也直接是print(model["你"])这样的。那我在想,是不是这本书写错了,或者跳过了某行代码???

但是目前我也没下载v3版本的gensim,所以无从判断,但从直觉来讲,总觉得是这本书不小心写错了,嘿嘿!不过因为我零基础入门python,所以也无法确定到底是错误,还是因为这上面的代码可能版本比较旧,所以才会在我的电脑上报错。

4.2 其次可以去比较两个词之间的相似度

(这个其实也是计算两个词的相关性)

print(model.wv.similarity("窗子","楼上"))

4.3 查询和某词最相关的几个词

print(model.wv.similar_by_word("你", topn = 3))
#或者以下代码也可以
print(model.wv.most_similar("你", topn = 3))

5 保存模型并再次训练

如果暂时训练的语料太少,那我们可以将该模型保存,等搜集到更多的语料,重新加载模型,并可根据新语料对模型再次训练。

model.save("word2vec_model") #保存模型
new_model = word2vec.word2vec.load("word2vec_model") #v3,重新加载模型
new_model = Word2Vec.load("word2vec_model") #v4,重新加载模型
new_model.train(new_texts) #根据新语料再次训练模型,new_texts即为新语料。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:23:46  更:2022-07-17 16:27:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:28:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码