diff --git a/PaddleNLP/docs/embeddings.md b/PaddleNLP/docs/embeddings.md index f3aceafc458200233e5fc2161cf07f18492cc0f6..f54b5f081d1b5e1592770526eded80541c4c17e5 100644 --- a/PaddleNLP/docs/embeddings.md +++ b/PaddleNLP/docs/embeddings.md @@ -3,13 +3,15 @@ - [英文词向量](#英文词向量) - [GloVe](#glove) - [FastText](#fasttext) + - [使用方式](#使用方式) - [模型信息](#模型信息) - [致谢](#致谢) - [参考论文](#参考论文) # Embedding 模型汇总 -PaddleNLP提供多个开源的预训练Embedding模型,用户仅需在使用`paddlenlp.embeddings.TokenEmbedding`时,指定预训练模型的名称,即可加载相对应的预训练模型。以下为PaddleNLP所支持的预训练Embedding模型,其名称用作`paddlenlp.embeddings.TokenEmbedding`的参数。命名方式为:\${训练模型}.\${语料}.\${词向量类型}.\${co-occurrence type}.dim\${维度}。训练模型有三种,分别是Word2Vec(w2v, 使用skip-gram模型训练), GloVe(glove)和FastText(fasttext)。 +PaddleNLP提供多个开源的预训练Embedding模型,用户仅需在使用`paddlenlp.embeddings.TokenEmbedding`时,指定预训练模型的名称,即可加载相对应的预训练模型。以下为PaddleNLP所支持的预训练Embedding模型,其名称用作`paddlenlp.embeddings.TokenEmbedding`的参数。命名方式为:\${训练模型}.\${语料}.\${词向量类型}.\${co-occurrence type}.dim\${维度}。训练模型有三种,分别是Word2Vec(w2v, 使用skip-gram模型训练), GloVe(glove)和FastText(fasttext)。在[使用方式](#使用方式)这一节中,将介绍如何通过模型名称使用`paddlenlp.embeddings.TokenEmbedding`加载预训练模型。 + ## 中文词向量 @@ -65,6 +67,17 @@ PaddleNLP提供多个开源的预训练Embedding模型,用户仅需在使用`p | Wiki2017 | fasttext.wiki-news.target.word-word.dim300.en | | Crawl | fasttext.crawl.target.word-word.dim300.en | +## 使用方式 + +以上所述的模型名称可直接以参数形式传入padddlenlp.embeddings.TokenEmbedding,加载相对应的模型。比如要加载语料为Wiki2017,通过FastText训练的预训练模型(`fasttext.wiki-news.target.word-word.dim300.en`),只需执行以下代码: + +```python +import paddle +from paddlenlp.embeddings import TokenEmbedding + +token_embedding = TokenEmbedding(embedding_name="fasttext.wiki-news.target.word-word.dim300.en") +``` + ## 模型信息 | 模型 | 文件大小 | 词表大小 | diff --git a/PaddleNLP/paddlenlp/embeddings/README.md b/PaddleNLP/paddlenlp/embeddings/README.md index 41855f114a3149f8bd7d66cbcb52f5fd45ee1348..4f92ab3b704bab3eedc35f5cf67a811744924b67 100644 --- a/PaddleNLP/paddlenlp/embeddings/README.md +++ b/PaddleNLP/paddlenlp/embeddings/README.md @@ -4,7 +4,7 @@ | 参数 | 类型 | 属性 | | ------------ | ------------ | ------------ | -| embedding_name | **string** | 预训练embedding名称,可通过paddlenlp.embeddings.list_embedding_name查询。 | +| embedding_name | **string** | 预训练embedding名称,可通过paddlenlp.embeddings.list_embedding_name或[Embedding 模型汇总](../../docs/embeddings.md)查询。 | | unknown_token | **string** | unknown token。 | | unknown_token_vector | **list** 或者 **np.array** | 用来初始化unknown token对应的vector。默认为None(以正态分布方式初始化vector)| | extended_vocab_path | **string** | 扩展词表的文件名路径。词表格式为一行一个词。 | diff --git a/PaddleNLP/paddlenlp/embeddings/constant.py b/PaddleNLP/paddlenlp/embeddings/constant.py index 1ab5ccd21fe399d405311ac533724dcb3f3623d5..44a76afc897dba64e218837ef38f4b424c9979fa 100644 --- a/PaddleNLP/paddlenlp/embeddings/constant.py +++ b/PaddleNLP/paddlenlp/embeddings/constant.py @@ -16,7 +16,7 @@ from enum import Enum import os.path as osp URL_ROOT = "https://paddlenlp.bj.bcebos.com" -EMBEDDING_URL_ROOT = osp.join(URL_ROOT, "models/embeddings") +EMBEDDING_URL_ROOT = URL_ROOT + "/models/embeddings" PAD_TOKEN = '[PAD]' UNK_TOKEN = '[UNK]' diff --git a/PaddleNLP/paddlenlp/embeddings/token_embedding.py b/PaddleNLP/paddlenlp/embeddings/token_embedding.py index c76fb9fba121819963aeb063ba1aae88083a23c5..2c17055cba2fdc573d54b130300de354f9fbc68d 100644 --- a/PaddleNLP/paddlenlp/embeddings/token_embedding.py +++ b/PaddleNLP/paddlenlp/embeddings/token_embedding.py @@ -69,7 +69,7 @@ class TokenEmbedding(nn.Embedding): vector_path = osp.join(EMBEDDING_HOME, embedding_name + ".npz") if not osp.exists(vector_path): # download - url = osp.join(EMBEDDING_URL_ROOT, embedding_name + ".tar.gz") + url = EMBEDDING_URL_ROOT + "/" + embedding_name + ".tar.gz" get_path_from_url(url, EMBEDDING_HOME) logger.info("Loading token embedding...")