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

手机电脑网站 建站程序南京seo外包平台

手机电脑网站 建站程序,南京seo外包平台,招生网站建设方案,公众号网页版提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言加载预训练词向量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/337971.html

相关文章:

  • 建设主管部门网站免费注册网址
  • 一个网站做两级三级是什么意思淘数据
  • 易语言如何做网站最好用的磁力搜索器
  • 网站设计是用什么做的百度大数据查询平台
  • 做a小视频免费观看网站东莞seo顾问
  • 下载app 的网站 如何做百度游戏中心
  • 做淘宝要网站做网站的好处
  • 我的网站别人给黑链 攻击网店推广的重要性
  • 企业网站建设的一般要素百度网盘手机版
  • 网站举报官网seo优化员
  • 微信服务号绑定网站吗新东方教育培训机构
  • 北京天津网站建设公司百度导航如何设置公司地址
  • excel动态表格图表制作关键词优化靠谱推荐
  • 福州最好的网站建设网站关键词挖掘
  • 如何使用ftp上传网站精准大数据获客系统
  • 商家小程序怎么制作seo任务
  • 做app和做网站哪个容易网络广告策划书模板范文
  • 个人电脑做网站服务器电商代运营公司100强
  • 上海建设安检站网站设计师经常用的网站
  • k8team wordpress北京网站快速优化排名
  • 滨州seo排名狼雨seo网站
  • 企业营销型网站制作多少钱app推广员好做吗
  • 国外网站模板推广营销是什么
  • 如何做招商性网站360营销推广
  • 淘宝客建网站要钱的吗百度最新收录方法
  • 黄色网站国外免费seo搜索优化
  • 做推文加入视频的网站上海百度公司地址在哪里
  • 网站备案增加域名厦门搜索引擎优化
  • 北京到安阳多少公里路seo网络优化师就业前景
  • 生活分享网站源码 博客风格分享小清新php源码谷歌排名优化入门教程