基于ZhiPuAi的文本匹配2(Q&A)

# 学习记录

  现在我们导入智谱的包,需要自己的虚拟环境中有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

        导入数据,数据用的是Kaggle提供的Quora数据集:FAQ Kaggle dataset! | Data Science and Machine Learning,先把它给读进来。

百度网盘链接: https://pan.baidu.com/s/1m-XpQV-YOUQM15zUTpA56A?pwd=8cpp 提取码: 8cpp 

import pandas as pd
# 填写自己的文件地址
data = pd.read_csv("C:\\Users\\User\\Desktop\\机器算法and data\\Embedding\\Q&A.csv")

# 可以查看data的大小,以及看看前5个数据长什么样
print(data.shape)
print(data.head())
# 查看每一个维度代表什么意思,方便数据到时候数据处理
print(data.columns)

        可以看到数据的大小是(1166, 4),以及数据大概的样子,以及每一个维度的含义

        由于zhupuai免费送的token数量有限,基于能省就省的原则我们就只用10个数据来演示。

        我们先创建一个列表来存储10个数据的Question,Answered,和embedding。

vec_base = []
for v in data.head(10).itertuples():
    emb_q = get_embedding(v.Questions)
    # 创建一个字典
    im = {
        "question": v.Questions,
        "embedding": emb_q,
        "answer": v.Answered,
    }
    vec_base.append(im)

        那么我们的问题和以及答案都存储进去了,我们可以问一个问题,基于第4条来问,what are two alternatives to Kaggle,其实是任意的问题,只是会答非所问,因为没有足够的数据支撑,我们的只有10数据所以不能随便问问题,只能对着答案问问题。

quest = "what are two alternatives to Kaggle"
q_emb = get_embedding(quest)

# 将查询向量转化为numpy数组
err = np.array(
    [(v["embedding"])for v in vec_base]
)
# 变我们的问题变成与模型相同的维度
q_err = np.expand_dims(q_emb, 0)
# 求相似度,查询问题和数据库中(embedding过的问题)所有问题的相似度
q_cos = cosine_similarity(err, q_err)
print(q_cos)

        我们可以发现第四个的相似度最高,所以我们只需要返回最大的相似度的作为索引值,来打印答案就行

q_cos_max_index = np.argmax(q_cos)
print(vec_base[q_cos_max_index])

        这就完成了Q&A最基本的流程,剩下的就是基于现实的优化,例如我们上面创建的字典应该把所有的维度的加上,还有就是数据的储存,因为当我们数据量大了,用本地运行会很慢。以及就是索引结果时值将answere和link信息打印出来就行,其他的信息都可以删掉。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值