当前位置: 首页 > news >正文

h5网站和传统网站荣成市信用建设网站

h5网站和传统网站,荣成市信用建设网站,河南建设工程信息网阳光平台,外贸建站用的服务器PyTorch 实现 Word2Vec#xff08;Skip-gram 模型#xff09; 的完整代码#xff0c;使用 中文语料 进行训练#xff0c;包括数据预处理、模型定义、训练和测试。 1. 主要特点 支持中文数据#xff0c;基于 jieba 进行分词 使用 Skip-gram 进行训练#xff0c;适用于小数…PyTorch 实现 Word2VecSkip-gram 模型 的完整代码使用 中文语料 进行训练包括数据预处理、模型定义、训练和测试。 1. 主要特点 支持中文数据基于 jieba 进行分词 使用 Skip-gram 进行训练适用于小数据集 支持负采样提升训练效率 使用 cosine similarity 计算相似单词 完整代码 import torch import torch.nn as nn import torch.optim as optim import numpy as np import random import jieba from collections import Counter from sklearn.metrics.pairwise import cosine_similarity# 1. 数据预处理 corpus [我们 喜欢 深度 学习,自然 语言 处理 是 有趣 的,人工智能 改变 了 世界,深度 学习 是 人工智能 的 重要 组成部分 ]# 超参数 window_size 2 # 窗口大小 embedding_dim 10 # 词向量维度 num_epochs 100 # 训练轮数 learning_rate 0.01 # 学习率 batch_size 4 # 批大小 neg_samples 5 # 负采样个数# 分词 构建词汇表 tokenized_corpus [list(jieba.cut(sentence)) for sentence in corpus] vocab set(word for sentence in tokenized_corpus for word in sentence) word2idx {word: idx for idx, word in enumerate(vocab)} idx2word {idx: word for word, idx in word2idx.items()}# 统计词频 word_counts Counter([word for sentence in tokenized_corpus for word in sentence]) total_words sum(word_counts.values())# 计算负采样概率 word_freqs {word: count / total_words for word, count in word_counts.items()} word_powers {word: freq ** 0.75 for word, freq in word_freqs.items()} Z sum(word_powers.values()) word_distribution {word: prob / Z for word, prob in word_powers.items()}# 负采样函数 def negative_sampling(positive_word, num_samples5):words list(word_distribution.keys())probabilities list(word_distribution.values())negatives []while len(negatives) num_samples:neg np.random.choice(words, pprobabilities)if neg ! positive_word:negatives.append(neg)return negatives# 生成 Skip-gram 训练数据 data [] for sentence in tokenized_corpus:indices [word2idx[word] for word in sentence]for center_idx in range(len(indices)):center_word indices[center_idx]for offset in range(-window_size, window_size 1):context_idx center_idx offsetif 0 context_idx len(indices) and context_idx ! center_idx:context_word indices[context_idx]data.append((center_word, context_word))# 转换为 PyTorch 张量 data [(torch.tensor(center), torch.tensor(context)) for center, context in data]# 2. 定义 Word2Vec (Skip-gram) 模型 class Word2Vec(nn.Module):def __init__(self, vocab_size, embedding_dim):super(Word2Vec, self).__init__()self.embedding nn.Embedding(vocab_size, embedding_dim)self.output_layer nn.Linear(embedding_dim, vocab_size)def forward(self, center_word):embed self.embedding(center_word) # 获取中心词向量out self.output_layer(embed) # 计算词分布return out# 初始化模型 model Word2Vec(len(vocab), embedding_dim)# 3. 训练 Word2Vec criterion nn.CrossEntropyLoss() optimizer optim.Adam(model.parameters(), lrlearning_rate)for epoch in range(num_epochs):total_loss 0random.shuffle(data) # 每轮打乱数据for center_word, context_word in data:optimizer.zero_grad()output model(center_word.unsqueeze(0)) # 预测词分布loss criterion(output, context_word.unsqueeze(0)) # 计算损失loss.backward()optimizer.step()total_loss loss.item()if (epoch 1) % 10 0:print(fEpoch [{epoch1}/{num_epochs}], Loss: {total_loss:.4f})# 4. 测试词向量 word_vectors model.embedding.weight.data.numpy()# 计算单词相似度 def most_similar(word, top_n3):if word not in word2idx:return 单词不在词汇表中word_vec word_vectors[word2idx[word]].reshape(1, -1)similarities cosine_similarity(word_vec, word_vectors)[0]# 获取相似度最高的 top_n 个单词排除自身similar_idx similarities.argsort()[::-1][1:top_n1]return [(idx2word[idx], similarities[idx]) for idx in similar_idx]# 测试相似词 test_words [深度, 学习, 人工智能] for word in test_words:print(f【{word}】的相似单词:, most_similar(word))数据预处理 使用 jieba.cut() 进行分词创建 word2idx 和 idx2word使用滑动窗口生成 (中心词, 上下文词) 训练样本实现 negative_sampling() 提高训练效率 模型 Embedding 层 学习词向量Linear 层 计算单词的概率分布CrossEntropyLoss 计算目标词与预测词的匹配度使用 Adam 进行梯度更新 计算词相似度 使用 cosine_similarity 计算词向量相似度找出 top_n 个最相似的单词 5. 可优化点 使用更大的中文语料库如 THUCNews  使用 t-SNE 进行词向量可视化 增加负采样提升模型训练效率
http://www.zqtcl.cn/news/413075/

相关文章:

  • 制作网站图片手机网站跳转
  • 装修公司营销网站模板东莞家居网站建设
  • 网站模板建站教程视频德州极速网站建设百家号
  • 专做蔬菜水果的网站自学it从哪里学起
  • 邵阳红网站搭建平台聚合力
  • 滁州网站建设信息推荐软件开发技术方案模板
  • 商务网站建设有哪几个步骤拼多多网页qq登录
  • 厦门商城网站开发宜昌小程序开发公司
  • 东莞沙田网站建设榆林网站建设价格
  • 无锡网站制作建设wordpress写文章模板
  • 企业网站销售提升学历要多少钱
  • 打开建设银行官方网站首页wordpress 站库分离
  • 电子商务网站建设的试卷设计之家app
  • 抚养网站建设黔东南小程序开发公司
  • 网站建设相关行业有哪些wordpress 内容管理系统
  • 网站 备案地温州网站优化排名推广
  • 做网站的工作量国内 wordpress
  • 定制网站开发是什么大业推广网站
  • 网站建设每年需要交多少钱天津制作网站公司
  • 网站平台都有哪些wordpress 主题制作 视频
  • 中山网站建设方案家具网站开发目的
  • 教师个人网站建设建模培训多少钱
  • 个人网站可以做社交类型网站建设功能说明书
  • 微站是什么移动网站 拉新
  • 黑龙江省农业网站建设情况wordpress4.94主题上传不显示
  • 个人网站的域名重庆建立公司网站
  • 什么做网站做个多少钱啊百度网盘app
  • 做网站的公司挣钱吗石家庄房产
  • 烟台网站建设设计公司安徽建设工程信息网查询平台蔡庆树
  • 微信链接的微网站怎么做西安企业网站制作价格