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

制作网站的视频教程wordpress主题选项框架

制作网站的视频教程,wordpress主题选项框架,企业标准信息公共服务平台官网,百度搜索网站图片提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言加载预训练词向量TokenEmbedding 类详解预训练词向量简介 (GloVe)具体含义总结建议应用预训练词向量词相似度knn 函数get_similar_tokens 函数相似词查找示例词类比get_analogy 函数词类比任务…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 加载预训练词向量
    • TokenEmbedding 类详解
    • 预训练词向量简介 (GloVe)
      • 具体含义
      • 总结建议
  • 应用预训练词向量
    • 词相似度
      • knn 函数
      • get_similar_tokens 函数
      • 相似词查找示例
    • 词类比
      • get_analogy 函数
      • 词类比任务示例
  • 总结


前言

词向量(Word Embeddings)是自然语言处理(NLP)中的基石之一。它们是将词汇表中的词语映射到低维连续向量空间的技术,使得语义上相似的词在向量空间中也彼此接近。实际上,在大型语料库上预先训练的词向量可以应用于下游的自然语言处理任务,这将在后面讨论。为了直观地演示大型语料库中预训练词向量的语义,让我们将预训练词向量应用到词的相似性和类比任务中。

本篇博客将通过 PyTorch 代码实例,展示如何加载和使用预训练的 GloVe 词向量,并将其应用于查找相似词和完成词类比任务。我们将一步步解析代码,帮助大家理解其背后的原理。

在这里插入图片描述

完整代码:下载链接

加载预训练词向量

首先,我们需要一种方式来加载和管理预训练的词向量。下面我们将定义一个 TokenEmbedding 类,它能够从文本文件中加载词向量(如 GloVe 或 fastText 格式),并提供方便的接口来查询词语对应的向量。

TokenEmbedding 类详解

这个类将负责以下核心功能:

  1. 从指定的词向量文件加载词汇表和对应的向量。
  2. 为词汇表中的每个词创建一个索引。
  3. 为不在词汇表中的“未知”词(unk)提供一个默认向量(通常是零向量)。
  4. 允许通过词语列表快速获取它们对应的向量矩阵。
import torch
import osclass TokenEmbedding:"""GloVe词嵌入类用于加载和使用预训练的词向量(如GloVe、fastText等)"""def __init__(self, embedding_name):"""初始化TokenEmbedding对象参数:embedding_name (str): 嵌入文件名(不含扩展名),例如 'glove.6B.50d'属性:idx_to_token (list): 索引到词汇的映射列表,维度为[vocab_size]idx_to_vec (torch.Tensor): 索引到向量的映射矩阵,维度为[vocab_size, embedding_dim]unknown_idx (int): 未知词汇的索引,默认为0token_to_idx (dict): 词汇到索引的映射字典"""# 加载嵌入文件,获取词汇列表和向量矩阵self.idx_to_token, self.idx_to_vec = self._load_embedding(embedding_name)# 设置未知词汇的索引为0(对应'<unk>'标记)self.unknown_idx = 0# 创建词汇到索引的反向映射字典# token_to_idx: dict,键为词汇(str),值为索引(int)self.token_to_idx = {token: idx for idx, token in enumerate(self.idx_to_token)}def _load_embedding(self, embedding_name):"""从文件加载预训练的词嵌入参数:embedding_name (str): 嵌入文件名返回:idx_to_token (list): 词汇列表,维度为[vocab_size]idx_to_vec (torch.Tensor): 词向量矩阵,维度为[vocab_size, embedding_dim]"""# 初始化词汇列表和向量列表,第一个位置预留给未知词汇标记idx_to_token = ['<unk>']  # list,存储所有词汇,维度为[vocab_size]idx_to_vec = []  # list,临时存储向量,后续转换为tensor# 构建数据文件路径data_dir = embedding_name + ".txt"# GloVe网站:https://nlp.stanford.edu/projects/glove/# fastText网站:https://fasttext.cc/# 检查文件是否存在if not os.path.exists(data_dir):print(f"警告:嵌入文件 {data_dir} 不存在。请确保已下载并放置在正确路径。")print("例如,可以从 https://nlp.stanford.edu/data/glove.6B.zip 下载glove.6B.50d.txt")# 为演示目的,创建一个空的占位符,实际应用中应抛出错误或处理# raise FileNotFoundError(f"嵌入文件 {data_dir} 不存在")return ['<unk>'], torch.zeros((1,1)) # 返回一个最小的有效结构# 逐行读取嵌入文件with open(data_dir, 'r', encoding='utf-8') as f:for line in f:# 移除行尾换行符并按空格分割elems = line.rstrip().split(' ')# 第一个元素是词汇,其余元素是向量值token = elems[0]  # str,当前词汇# 将字符串向量值转换为浮点数列表try:# 尝试转换,处理fastText首行可能不符合格式的情况vec_values = [float(elem) for elem in elems[1:]]  # list[float],维度为[embedding_dim]except ValueError:# print(f"跳过格式不正确的行: {line[:50]}...") # 对于fastText,这可能是第一行continue# 跳过标题信息或格式错误的行(例如fastText中的首行通常是词汇数和维度)if len(vec_values) > 1 and token: # 确保有向量值且token不为空idx_to_token.append(token)idx_to_vec.append(vec_values)# 为未知词汇<unk>创建零向量# 向量维度与其他词汇向量保持一致embedding_dim = len(idx_to_vec[0]) if idx_to_vec else 50 # 如果列表为空,默认50维unknown_vec = [0.0] 
http://www.yayakq.cn/news/875385/

相关文章:

  • 南京自助建站公司网站建设制作商
  • 淘客做网站的话虚拟主机多大域名空间网站怎么做
  • 有域名自己做网站wordpress ping大全
  • 常州网站开发超凡网络网站
  • 怎样辨别网站空间设计公司
  • 文章资讯类网站模板石家庄建设厅官方网站
  • 早教网站设计山东网站建设哪家权威
  • 做网站虚拟主机wordpress 二级目录 404
  • 做网站开发的有哪些公司好网站建设类行业资讯
  • 南京网站建设苏icp备学生怎么制作网站
  • 个人网站推荐手机上购物哪个平台比较好
  • 建设网站成本公司形象墙设计效果图
  • 网站和网络建设调研情况新站如何快速收录
  • 想学做网站可以在哪学网站建设设计摘要
  • 福建石狮有做网站的没做网站需要用到什么技术
  • 泉州手机网站建设公司哪家好wordpress改插件
  • wordpress referer和田地seo
  • 网站设置访问权限旅游电子商务网站规划书
  • php网站后台访问统计分析apache php mysql wordpress
  • 网站建设需求报告WordPress 邮件发文
  • 企业品牌推广方案范文搜索引擎优化方法与技巧
  • 如何制作网站地图wordpress主题结构讲解视频教程
  • 郑州建站费用WordPress无法自动推送
  • 高性能网站建设进阶指南互联网推广外包
  • 书画网站免费源码小程序注册方法
  • 一流 北京网站建设表格网站源码
  • 新乡网站建设waterseowordpress 模板之家
  • 抚顺网站开发招聘营销型企业网站建站
  • 河源网站建设公司上海外贸仓储公司
  • 临沂营销型网站建设莱芜拉呱