基于ZhiPuAi的文本匹配1(基础)

# 学习记录  

        首先我们需要知道文本是由一个个字,一个个词组成的,而在机器学习中这些都称之为token。

        embedding又是什么捏,他有固定的维度D,每一个维度上都是小数组成的,而D个小数就成了token,那么大量的token集成在一起就组成一组稠密向量。embedding就可以表示一句话,一段话,一篇文章都行。

        现在我们导入智谱的包,需要自己的虚拟环境中有zhipuai

        首先请通过如下方式进行安装 SDK 包:

# 没有下载过的直接在自己的虚拟环境中下载
pip install zhipuai

# 如果原本就有老版本的zhipuai请更新到最新版本
pip install --upgrade zhipuai

        导入zhipuai,首先填写自己的aip_key ,获取自己key,请前往智谱AI开放平台 (bigmodel.cn)

使用的是embedding-2的模型,要调用其他的可以查看zhipuai的API文档。

from zhipuai import ZhipuAI

zhipu = ZhipuAI(aip_key='you_key') # 请填写您自己的API Key


def get_embedding(text):
    emb_req = zhipu.embedding.creat(
        model="embedding-2",
        input=text,
    )
    return emb_req.data[0].embedding

        定义好过后,我们就只需要传参就行了。

test1 = "我喜欢你"
test2 = "你喜欢我"
test3 = "我爱上你"
emb1 = get_embedding(test1)
emb2 = get_embedding(test2)
emb3 = get_embedding(test3)
print(emb1, "\n", emb2, "\n", emb3)

        我们可以将test被embedding过后的打印出来,打印出来那一串数字就是我们的test被embedding过后的一组稠密向量。

        既然他们是向量,那么如何匹配捏,那么就是看那组向量更加相似,相当于求两个向量的夹角,垂直的向量与两相量成锐角的相比,那么肯定是成锐角的向量更加的相似。公式如下

       1.我们可以将公式用python打出来

def cosine_similarity(vec1, vec2):
    return np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))

        2.当然啦!sklearn里面以及由集成好的了,我们直接调用就好了

from sklearn.metrics.pairwise import cosine_similarity

        我们就可以求两两之间的相似度

similar_12 = cosine_similarity(emb1, emb2)
similar_23 = cosine_similarity(emb2, emb3)
similar_13 = cosine_similarity(emb1, emb3)
print(similar_12 , "\n", similar_23 , "\n", similar_13 )

        可以看到emb1和emb3的相似对更高,但是文本之间的差距比emb1、emb2之间的文本差距大(指的是所用的字的差距大,并非文意),但是为什么1、3相似度会比1、2的相似的高呢,是因为embedding是联系上下文的,所以虽然文本没有什么差距,但是内涵是不一样的,所以相似度就没有内涵一样的高。

        所以我们可以直接索引相似的高的作为输出。

        所以我们在远古时期用的检索问题答案的方式就是,将你的问的问题(文本)embedding化,然后在官方的embedding库中检索,对比,将相似对最高的问题作为你的问的问题,然后将这个问题的答案放回给你。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值