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

手机电脑网站一站式微信管理工具

手机电脑网站一站式,微信管理工具,旅游b2b网站开发,辽宁丹东建设厅网站提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言加载预训练词向量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.dtcms.com/wzjs/191327.html

相关文章:

  • 高端企业网站建设蓦然郑州网站建设6水果网络营销策划方案
  • 做商城网站长春疫情最新情况
  • 四川网站建设博客手机网站建设价格
  • 上海明鹏建设集团有限公司网站app拉新一手渠道
  • 欢迎进入中国建设银行网站站长工具seo综合查询源码
  • 免费的外网连接器北京seo排名外包
  • 合江网站建设广东省白云区
  • 邯郸做移动网站报价搜索引擎营销分析
  • 正在进入一站式服务平台镇江网站seo
  • 什么叫网站收录百度seo排名优化软件
  • 智加设计简述搜索引擎优化的方法
  • 帮别人做网站服务器南京seo代理
  • 北京网站建设方案书培训机构是干什么的
  • 上海网站建设永灿14年品牌百度指数排名明星
  • 检察门户网站 建设意义百度关键词搜索指数查询
  • 做算命网站网站建设案例
  • 可信网站 quot 验证能防范哪些安全.广西壮族自治区免费百度推广
  • 网站utf8乱码微营销官网
  • 做网站为什么要公安局备案最全磁力搜索引擎
  • 北京网站制作百度推广关键词排名代发
  • 南宁网站建设 超博网络百度广告联盟一个月能赚多少
  • 做物流的网站都有什么风险网络营销课程大概学什么内容
  • 网站构建代码模板seo学堂
  • 十大必做调查网站营销网页
  • 郑州制作网站设计免费自助建站
  • 怀远网站建设哪家好培训心得体会万能模板
  • 高端的网站开发公司电子商务网站设计方案
  • 西安网站制作sxyun百度一下百度搜索网站
  • 博学网站建设公司百度关键词优化首选667seo
  • php是用来做网站的吗如何搜索网页关键词