word2vec实例详解python_Python实现word2Vec model过程解析

本文通过Python演示了如何使用gensim库构建word2Vec模型,详细解释了训练过程,并给出了示例代码,展示了词汇间的相似度计算。文章利用nltk的brown语料库进行训练,探讨了不同词汇的相关性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章主要介绍了Python实现word2Vec model过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

import gensim, logging, os

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

import nltk

corpus = nltk.corpus.brown.sents()

fname = 'brown_skipgram.model'

if os.path.exists(fname):

# load the file if it has already been trained, to save repeating the slow training step below

model = gensim.models.Word2Vec.load(fname)

else:

# can take a few minutes, grab a cuppa

model = gensim.models.Word2Vec(corpus, size=100, min_count=5, workers=2, iter=50)

model.save(fname)

words = "woman women man girl boy green blue".split()

for w1 in words:

for w2 in words:

print(w1, w2, model.similarity(w1, w2))

print(model.most_similar(positive=['woman', ''], topn=1))

print(model.similarity('woman', 'girl'))girl

在gensim模块中已经封装了13年提出的model--word2vec,所以我们直接开始建立模型

20191216115812621.jpg?20191116115855

这是建立模型的过程,最后会出现saving Word2vec的语句,代表已经成功建立了模型

20191216115812622.jpg?20191116115855

这是输入了 gorvement和news关键词后 所反馈的词语 --- administration, 他们之间的相关性是0.508

当我在输入 women 和 man ,他们显示的相关性的0.638 ,已经是非常高的一个数字。

值得一提的是,我用的语料库是直接从nltk里的brown语料库。其中大概包括了一些新闻之类的数据。

大家如果感兴趣的话,可以自己建立该模型,通过传入不同的语料库,来calc 一些term的 相关性噢

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Python实现word2Vec model过程解析

本文地址: http://www.cppcns.com/jiaoben/python/293083.html

### 正确配置和使用 Word2Vec 模型的参数 `gensim.models.Word2Vec` 是 Gensim 库中的一个重要工具,用于训练 Word2Vec 模型。以下是该函数的主要参数及其作用: #### 参数详解 1. **sentences**: 输入数据的形式是一个可迭代对象(如列表或生成器),其中每个元素是一组分词后的单词组成的列表。这些输入句子将被用来构建词汇表并进行模型训练[^2]。 2. **vector_size (size)**: 表示每个词向量的维度大小,默认值为 `100`。较大的尺寸通常能捕捉更多的语义信息,但也可能增加计算成本[^3]。 3. **window**: 定义当前词与其上下文中其他词之间的最大距离。例如,如果窗口大小设置为 `5`,则目标词前后的五个词语都会参与预测任务。 4. **min_count**: 设置忽略频率低于此阈值的词语。通过减少低频次词汇的数量来优化性能和内存消耗。 5. **workers**: 控制训练过程中使用的线程数。多核处理器上提高这个数值能够加速训练过程。 6. **sg**: 决定采用哪种算法模式:当 `sg=0` 时,使用 CBOW 方法;而当 `sg=1` 时,则切换至 Skip-gram 方式。 7. **hs & negative**: 这两个选项控制着如何处理 softmax 层以降低计算复杂度。具体来说: - 如果启用层次化 Softmax (`hs=1`) ,那么会利用二叉树结构来进行高效分类; - 同时也可以选择负采样技术(`negative>0`) 来进一步简化运算流程^。 8. **epochs**: 训练轮次数目决定了整个语料库会被遍历多少次以便调整权重直至收敛. 9. **alpha 和 min_alpha**: 初始学习率以及最终降至的学习率下限分别由这两个超参指定,在每次 epoch 结束之后逐步衰减学习速率有助于获得更稳定的解决方案. #### 示例代码 以下展示了一个简单的例子演示如何创建一个基于中文文本的数据集并通过 Gensim 的 API 构建对应的 word embedding: ```python from gensim.models import Word2Vec import jieba # 假设我们有一个包含若干条目的评论集合 reviews = ["这家餐厅的食物非常美味", "服务态度很好"] # 对每条评论应用结巴分词得到tokenized sentences tokenized_reviews = [list(jieba.cut(review)) for review in reviews] model = Word2Vec( tokenized_reviews, # 句子序列 vector_size=100, # 特征向量长度 window=5, # 上下文窗口宽度 min_count=1, # 忽略总频率小于某个值的所有单词 workers=4, # 并行运行的工作进程数量 sg=1 # 使用skip-gram方法而非cbow(default is cbow) ) print(model.wv['食物']) # 输出特定词汇'食物'对应得嵌入表示形式 ``` 上述脚本展示了怎样加载预处理过的汉语资料,并调用了带有自定义设定项的Word2Vec实例化操作最后打印出了单字‘食物’所关联上的特征表达样式[^5].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值