基于 PaddleHub 使用 w2v_baidu_encyclopedia_target_word-wordLR_dim300 中文词向量模型实现词嵌入查询与相似度计算
发布时间:2026/9/25 3:40:38来源:尧图网络
人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载本篇技术指南围绕 PaddleFormers 仓库中收录的预训练中文词嵌入模块w2v_baidu_encyclopedia_target_word-wordLR_dim300展开讲解如何通过 PaddleHub 安装该模型、调用其search/cosine_sim/dot等 API 获取 300 维词向量并将其以 Serving 服务的形式在线部署用于计算任意词对的余弦相似度。读完本文后你将掌握该 Embedding 模块从安装、本地预测到 HTTP 服务化部署的完整实战链路并理解其词表、OOV 处理与底层实现原理。一、模型基本信息w2v_baidu_encyclopedia_target_word-wordLR_dim300是 PaddleHub 提供的开源预训练词嵌入Token Embedding模块属于文本-词嵌入类别的 w2v 网络模型训练语料为百度百科baidu_encyclopedia词向量维度为 300。模块的完整信息如下表模型名称w2v_baidu_encyclopedia_target_word-wordLR_dim300类别文本-词嵌入网络w2v数据集baidu_encyclopedia是否支持 Fine-tuning否文件大小678.22MB词表大小635958最新更新日期2021-04-28数据指标-该模型不支持 Fine-tuning其定位是开箱即用的静态词向量查询工具。从命名规则可以解读出其训练配置target.word-wordLR表示以词-词为目标、采用 word-LR词对左右窗口共现训练策略dim300表示输出向量维度为 300词表覆盖约 63.6 万个中文词。PaddleHub 还提供基于不同语料、不同训练方式与不同维度的多组 Embedding 模型本模块即其中的中文目标词向量之一。模块的实际定义位于仓库 modules/text/embedding/w2v_baidu_encyclopedia_target_word-wordLR_dim300/module.py其核心实现如下from paddlenlp.embeddings import TokenEmbedding from paddlehub.module.module import moduleinfo from paddlehub.module.nlp_module import EmbeddingModule moduleinfo( namew2v_baidu_encyclopedia_target_word-wordLR_dim300, version1.0.1, summary, authorpaddlepaddle, author_email, typenlp/semantic_model, metaEmbeddingModule) class Embedding(TokenEmbedding): Embedding model embedding_name w2v.baidu_encyclopedia.target.word-wordLR.dim300 def __init__(self, *args, **kwargs): super(Embedding, self).__init__(embedding_nameself.embedding_name, *args, **kwargs)从源码可以看出该模块通过moduleinfo装饰器向 PaddleHub 注册了名称、版本号1.0.1与类型nlp/semantic_model并将底层实现委托给 PaddleNLP 的TokenEmbedding内部以embedding_name w2v.baidu_encyclopedia.target.word-wordLR.dim300作为资源标识用于定位对应的词表与权重文件。二、环境依赖与安装1、环境依赖使用该模块需要满足以下环境条件paddlepaddle 2.0.0paddlehub 2.0.0PaddleHub 的安装方式可参考 PaddleHub 安装指南。2、安装模块在满足依赖后通过hub install命令即可从 PaddleHub 服务器下载并安装该模块$ hub install w2v_baidu_encyclopedia_target_word-wordLR_dim300安装时若遇到问题可参考对应平台的零基础安装文档Windows 安装、Linux 安装、MacOS 安装。从仓库中 paddlehub/commands/install.py 的InstallCommand实现可以看到hub install支持直接传入模块名也支持通过模块名版本号的形式安装指定版本例如下文更新历史中的hub install w2v_baidu_encyclopedia_target_word-wordLR_dim3001.0.1命令行参数--ignore_env_mismatch可忽略安装时的环境不匹配检查。安装时若传入的是本地目录或.tar包路径则会直接以本地资源安装否则按模块名从远程服务器拉取。三、模型 API 与预测代码示例1、预测代码示例加载模块并执行词向量查询的代码如下import paddlehub as hub embedding hub.Module(namew2v_baidu_encyclopedia_target_word-wordLR_dim300) # 获取单词的embedding embedding.search(中国) # 计算两个词向量的余弦相似度 embedding.cosine_sim(中国, 美国) # 计算两个词向量的内积 embedding.dot(中国, 美国)hub.Module(name...)会根据注册名找到对应模块类并完成实例化权重与词表会在首次使用时自动下载并缓存。2、API 详解__init__def __init__( *args, **kwargs )创建一个 Embedding Module 对象默认无需参数。参数*args用户额外指定的列表类型的参数。**kwargs用户额外指定的关键字字典类型的参数。关于额外参数的详情可参考 PaddleNLP 的paddlenlp.embeddings模块。从 module.py 可见__init__会把embedding_name透传给TokenEmbedding因此额外参数主要用于控制底层词向量的加载行为。searchdef search( words: Union[List[str], str, int], )获取一个或多个词的 embedding。输入可以是str、List[str]和int类型分别代表获取一个词、多个词和指定词编号的 embedding。词的编号与模型的词典相关词典可通过模型实例的vocab属性获取。参数words需要获取词向量的词、词列表或者词编号。cosine_simdef cosine_sim( word_a: str, word_b: str, )计算两个词 embedding 的余弦相似度。需要注意的是word_a和word_b都必须是词典内的单词否则会被判定为 OOVOut-Of-Vocabulary并被替换为unknown_token即unk进而影响相似度结果。参数word_a需要计算余弦相似度的单词 a。word_b需要计算余弦相似度的单词 b。dotdef dot( word_a: str, word_b: str, )计算两个词 embedding 的内积点积。对于输入单词同样需要注意 OOV 问题处理逻辑与cosine_sim一致。参数word_a需要计算内积的单词 a。word_b需要计算内积的单词 b。get_vocab_pathdef get_vocab_path()获取本地词表文件的路径信息。该词表文件以vocab.{embedding_name}的形式存放在 PaddleNLP 的EMBEDDING_HOME目录下若本地不存在会自动从远程下载相关逻辑可在 paddlehub/module/nlp_module.py 的EmbeddingModule.get_vocab_path中看到。get_tokenizerdef get_tokenizer(*args, **kwargs)获取当前模型的 tokenizer返回一个JiebaTokenizer的实例当前仅支持中文 embedding 模型。参数*args额外传递的列表形式的参数。**kwargs额外传递的字典形式的参数。从源码实现看get_tokenizer会检查embedding_name是否以.en结尾英文 embedding 模型会抛出NotImplementedError暂未支持中文模型则基于self.vocab构造JiebaTokenizer返回。因此本模块可直接获得基于结巴分词的中文分词器便于下游对中文文本做分词后再逐词查询向量。3、底层实现EmbeddingModule 与 Serving 方法该模块的元类metaEmbeddingModule指向 paddlehub/module/nlp_module.py 中的EmbeddingModule其类层次为EmbeddingModule(RunModule, EmbeddingServing)。其中get_vocab_path()负责词表文件的定位与自动下载get_tokenizer()返回中文JiebaTokenizerEmbeddingServing.calc_similarity(data)是标注了serving的服务化入口方法它会逐个校验输入词对每个词对必须恰好包含两个字符串元素且两个词都必须存在于词表中通过get_idx_from_word与vocab.unk_token比对判断 OOV最终以字符串形式返回cosine_sim(*word_pair)的计算结果。这意味着当模块以 Serving 模式部署时对外暴露的正是计算两个词向量余弦相似度的能力与本文第四部分的在线服务流程一一对应。四、部署 Serving 在线服务通过 PaddleHub Serving可以部署一个在线获取两个词向量余弦相似度的 HTTP 服务。Step1: 启动 PaddleHub Serving运行启动命令$ hub serving start -m w2v_baidu_encyclopedia_target_word-wordLR_dim300这样就完成了一个获取词向量余弦相似度服务化 API 的部署默认端口号为 8866。NOTE如使用 GPU 预测则需要在启动服务之前设置CUDA_VISIBLE_DEVICES环境变量否则不用设置。从仓库实现看paddlehub/commands/serving.py 中ServingCommand会读取模块列表并启动 HTTP 服务paddlehub/serving/app_compat.py 的create_app注册了POST /predict/module_name路由请求体按application/json解析后交由predict_v2调用模块的 serving 方法本例即calc_similarity最终以package_result统一包装返回结果。默认端口为 8866与文档描述一致。Step2: 发送预测请求配置好服务端后以下数行代码即可实现发送预测请求、获取预测结果import requests import json # 指定用于计算余弦相似度的单词对[[word_a, word_b], [word_a, word_b], ... ]] word_pairs [[中国, 美国], [今天, 明天]] # 以key的方式指定word_pairs传入预测方法的时的参数此例中为data对于每一对单词调用cosine_sim进行余弦相似度的计算 data {data: word_pairs} # 发送post请求content-type类型应指定json方式url中的ip地址需改为对应机器的ip url http://127.0.0.1:8866/predict/w2v_baidu_encyclopedia_target_word-wordLR_dim300 # 指定post请求的headers为application/json方式 headers {Content-Type: application/json} r requests.post(urlurl, headersheaders, datajson.dumps(data)) print(r.json())请求中data键对应calc_similarity的入参即一组词对列表服务端对每一对词调用cosine_sim计算余弦相似度并以 JSON 形式返回结果。服务端会先校验词对格式长度必须为 2、元素必须为字符串与词表覆盖情况若出现不在词表中的单词calc_similarity会抛出明确的错误信息例如Word xxx is not in vocab. Please check your inputs.。五、更新历史1.0.0初始发布。1.0.1优化模型。可通过指定版本号安装$ hub install w2v_baidu_encyclopedia_target_word-wordLR_dim3001.0.1当前仓库中 module.py 声明的版本即为1.0.1与该历史版本保持一致。六、小结w2v_baidu_encyclopedia_target_word-wordLR_dim300是一个覆盖约 63.6 万中文词、维度为 300 的静态预训练词向量模块。通过hub install安装后既可借助search/cosine_sim/dot/get_tokenizer等 API 在本地完成词向量查询、相似度计算与中文分词也可通过hub serving start -m将其部署为默认端口 8866 的在线相似度计算服务。其底层由 PaddleNLP 的TokenEmbedding与 PaddleHub 的EmbeddingModule框架支撑词表、权重自动下载缓存OOV 词统一以unknown_token处理开箱即用适合作为中文 NLP 任务中词级特征提取与语义相似度计算的基础组件。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐PaddleHub 中文词向量模型 w2v_mixed-large_target_word-word_dim300 使用指南词嵌入查询、相似度计算与服务化部署PaddleHub 中文词向量模型 w2v_mixed large_target_word word_dim300 使用指南词嵌入查询、相似度计算与服务化部署人工智能大模型微调模型推理服务Gensim FastText 模型实战子词级词向量训练、OOV 查询与相似度计算Gensim FastText 模型实战子词级词向量训练、OOV 查询与相似度计算 本篇技术指南围绕 Gensim 的 FastText 模型展开基于 Le人工智能NLP机器学习深度学习PaddleHub 词嵌入模型 w2v_baidu_encyclopedia_target_word-ngram_1-2_dim300 使用与部署指南PaddleHub 词嵌入模型 w2v_baidu_encyclopedia_target_word ngram_1 2_dim300 使用与部署指南 导读 本人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网