人工智能:PaddleNLP实战

人工智能

  • python,机器学习,深度学习,NLP,CV
  • 人工智能:PaddleNLP实战
    • 一、安装
    • 二、典例

python,机器学习,深度学习,NLP,CV

人工智能:PaddleNLP实战

一、安装

使用百度源安装(推荐)
pip install --upgrade paddlenlp -i https://mirror.baidu.com/pypi/simple
使用阿里源安装
pip install --upgrade paddlenlp -i https://mirrors.aliyun.com/pypi/simple
使用清华源安装
pip install --upgrade paddlenlp -i https://pypi.tuna.tsinghua.edu.cn/simple

二、典例

  1. 词向量 Embedding
    1)先下载数据包
from paddlenlp.embeddings import TokenEmbedding
# 初始化TokenEmbedding,预训练embedding未下载时会自动下载并加载数据
token_embedding = TokenEmbedding(embedding_name="w2v.baidu_encyclopedia.target.word-word.dim300")
# 查看token_embedding详情
print(token_embedding) # 包含了所有词的词向量
"""
结果:
Object   type: TokenEmbedding(635965, 300, padding_idx=635964, sparse=False)             
Unknown index: 635963             
Unknown token: [UNK]             
Padding index: 635964             
Padding token: [PAD]             
Parameter containing:
Tensor(shape=[635965, 300], dtype=float32, place=CPUPlace, stop_gradient=False,
       [[-0.24200200,  0.13931701,  0.07378800, ...,  0.14103900,
          0.05592300, -0.08004800],
        [-0.08671700,  0.07770800,  0.09515300, ...,  0.11196400,
          0.03082200, -0.12893000],
        [-0.11436500,  0.12201900,  0.02833000, ...,  0.11068700,
          0.03607300, -0.13763499],
        ...,
        [ 0.02628800, -0.00008300, -0.00393500, ...,  0.00654000,
          0.00024600, -0.00662600],
        [ 0.01083017, -0.03364591,  0.02868032, ..., -0.00158025,
         -0.00128620,  0.00400757],
        [ 0.        ,  0.        ,  0.        , ...,  0.        ,
          0.        ,  0.        ]])
None
"""

可看到,token_embedding包含了paddlenlp收集的所有词的词向量。注意,token_embedding不是一个列表,而是一个类。验证:

type(token_embedding)
"""
结果:

"""

2)那么要取出里面某个词的词向量怎么取?用下面方法:
如我们查找“人工智能”这个词在paddlenlp中的词向量(特征)

from paddlenlp.embeddings import TokenEmbedding

token_embedding = TokenEmbedding(embedding_name="w2v.baidu_encyclopedia.target.word-word.dim300")
test_token_embedding = token_embedding.search("人工智能")
print(test_token_embedding)
"""
结果:
Unknown index: 635963             
Unknown token: [UNK]             
Padding index: 635964             
Padding token: [PAD]             
Shape :[635965, 300]
[[ 4.39420e-01  1.09342e-01 -4.82500e-02  1.17429e-01 -2.64940e-02
   2.42080e-01  1.46530e-02 -2.20504e-01  4.41110e-02  5.19196e-01
  -7.43200e-02  9.80410e-02  3.24529e-01 -4.35000e-03 -7.06660e-02
  -2.82147e-01 -3.08500e-02  3.84300e-02  2.65244e-01 -3.63370e-02
  -3.90162e-01 -3.78317e-01  4.00112e-01  1.63084e-01 -2.13752e-01
  -1.32097e-01  5.34770e-02  3.56321e-01  1.80560e-02  4.36669e-01
  -2.60393e-01  8.23520e-02  1.68619e-01 -2.58740e-02  1.83478e-01
   2.87682e-01 -7.76700e-03  1.25910e-02  6.60158e-01  2.47050e-02
   1.94371e-01 -5.61600e-01 -3.39770e-02 -1.55987e-01  6.89761e-01
  -4.80313e-01  1.40497e-01  7.24470e-02  1.22964e-01 -2.59114e-01
   3.76404e-01 -1.51092e-01 -4.18032e-01 -1.01690e-01  5.57268e-01
   7.09190e-02  2.01543e-01 -2.00619e-01 -2.02136e-01  4.76680e-01
   1.74714e-01  7.41410e-02  7.16090e-02 -2.26671e-01  3.11383e-01
   1.01113e-01 -9.42560e-02 -3.13290e-01  3.83935e-01 -7.05900e-03
  -5.96578e-01  5.24410e-02 -2.19894e-01  1.82007e-01 -8.94000e-02
  -3.42757e-01  1.56848e-01  2.68159e-01  5.38100e-03 -1.51118e-01
  -1.28285e-01 -3.03804e-01 -5.05000e-04 -2.45620e-01 -5.17699e-01
   2.69242e-01  4.06796e-01  3.74323e-01 -1.25470e-02 -2.18472e-01
   2.19284e-01  6.34210e-02 -1.80872e-01 -7.48002e-01  3.46313e-01
   2.59630e-01 -3.83505e-01 -7.89797e-01  3.01852e-01 -1.16490e-02
   1.17575e-01  6.54590e-01 -4.60491e-01 -3.81123e-01  1.47955e-01
   9.88590e-02  3.23528e-01  2.96026e-01  3.17765e-01  4.60991e-01
   1.28274e-01  1.43292e-01  3.07968e-01  1.85938e-01 -4.46118e-01
  -1.99167e-01 -2.75079e-01  1.21982e-01  3.29741e-01  1.01286e-01
   3.60371e-01  1.62508e-01  1.57997e-01  8.59560e-02  3.33330e-02
   7.31030e-01 -6.74555e-01  2.48943e-01  7.71136e-01  2.14234e-01
   1.36784e-01  1.74910e-01  7.09910e-02 -5.54578e-01  8.72890e-02
   2.13954e-01  8.53390e-02 -1.45604e-01 -2.30453e-01 -1.24292e-01
  -2.86380e-02 -4.35837e-01 -3.11108e-01  2.22252e-01 -2.51486e-01
  -4.63460e-02  2.60810e-01 -1.39775e-01  6.89200e-02 -3.68410e-02
   2.97169e-01  2.12980e-01  9.17400e-02 -9.75190e-02 -8.44740e-02
   2.29380e-02 -1.90994e-01 -4.98669e-01  2.78136e-01  3.47230e-02
  -4.37765e-01  1.81387e-01  1.57393e-01  5.10600e-02 -3.84860e-02
   2.00669e-01  1.20323e-01  6.01090e-02  3.51280e-01  3.13218e-01
  -1.64219e-01 -5.87070e-01  8.43450e-02 -2.26311e-01  1.87101e-01
  -4.03340e-02 -3.12593e-01 -5.80162e-01 -2.80302e-01 -4.83701e-01
  -1.93759e-01 -5.84960e-01 -1.11590e-01 -2.26509e-01 -1.48615e-01
  -9.03600e-02 -3.12040e-01  7.70541e-01 -9.09093e-01 -2.23413e-01
  -1.75576e-01  1.10426e-01  4.70300e-02 -2.07537e-01 -1.15765e-01
  -7.87680e-02 -6.13200e-02  1.57739e-01 -3.35648e-01 -1.12182e-01
   9.31340e-02  5.04736e-01 -3.48432e-01 -3.35725e-01  2.55515e-01
   4.08897e-01  9.13310e-02  1.67334e-01 -1.99090e-02 -4.51346e-01
   5.38254e-01  5.16395e-01 -2.64800e-03 -5.48620e-02  4.12808e-01
   1.28351e-01  1.61100e-01  9.21310e-02  2.00521e-01  3.32600e-03
  -1.55861e-01  2.35411e-01 -2.77338e-01  2.28677e-01  1.24210e-01
   4.93560e-02 -1.38766e-01 -9.77020e-02  3.77565e-01  3.80670e-02
  -1.14000e-04  1.00455e-01 -5.54642e-01  2.61030e-02 -1.88545e-01
   1.88398e-01  3.85160e-01  3.53760e-02 -3.02837e-01 -1.77883e-01
  -2.08414e-01  3.11756e-01 -3.73112e-01 -2.09749e-01 -7.06500e-03
   2.66063e-01 -4.90227e-01 -2.60653e-01 -1.89459e-01 -7.14060e-02
   3.51710e-02  7.88890e-02 -4.40530e-02 -1.60110e-01  3.01680e-02
  -2.37070e-02 -2.83968e-01  4.15303e-01 -2.08770e-01 -1.59055e-01
   5.48709e-01 -1.49250e-02  2.54983e-01  3.14551e-01  5.59539e-01
  -1.43510e-02  3.45120e-02 -3.98169e-01 -1.20590e-01  4.94000e-01
  -8.87740e-02  8.66230e-01  3.38063e-01 -3.29910e-02  1.63555e-01
   3.25276e-01 -6.67820e-02 -1.67235e-01 -1.63882e-01 -3.87603e-01
  -3.47954e-01 -3.30608e-01  6.92240e-02 -1.00715e-01  6.80997e-01
   4.86658e-01 -2.18689e-01  3.60576e-01  1.07415e-01  7.44620e-02
  -3.74900e-03  7.35717e-01  3.04600e-02  4.93475e-01  1.08262e-01
  -6.33000e-04  1.44880e-02  4.34517e-01  3.99075e-01  1.10990e-01]]
None
"""
  • 这些向量都是300维度的
  • 300维是一个超参数,可以人为设定,一般取100~300之间,
  • 为了追求更快的训练速度,可以设定维度较小的训练集来训练。
    3)余弦相似度cosine_sim()
    cosine_sim()计算余弦相似度,适用场景:
  • 搜索
  • 论文查重
  • 同义词替换
  • 相似
    注意:英文的相似判断不支持,效果不好。
from paddlenlp.embeddings import TokenEmbedding

token_embedding = TokenEmbedding(embedding_name="w2v.baidu_encyclopedia.target.word-word.dim300")
s1 = "女孩"
s2 = "女人"
score = token_embedding.cosine_sim(s1, s2)
print('score:', score) # 0.7017183

s1 = "女孩"
s2 = "图书"
score1 = token_embedding.cosine_sim(s1, s2)
print('score:', score1) # 0.1671222

s1 = "这只皮靴号码大了。那只号码合适"
s2 = "这只皮靴号码不小,那只更合适"
score = token_embedding.cosine_sim(s1, s2)
print('score:', score) # 0.9999999

但对语义相似似乎效果不太好。(paddlenlp版本2.2.2,2021年12月下载)如下:

s1 = "妻子"
s2 = "媳妇"
score = token_embedding.cosine_sim(s1, s2)
print('score:', score) # 0.50807375。

s1 = "举例子"
s2 = "打比方"
score1 = token_embedding.cosine_sim(s1, s2)
print('score:', score) # 0.6805795

s1 = "狗"
s2 = "犬"
score1 = token_embedding.cosine_sim(s1, s2)
print('score:', score) # 0.68124706

你可能感兴趣的:(人工智能,实战,NLP,人工智能,自然语言处理,paddlepaddle)