{ "cells": [ { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "1. 首先生成几个针对question.txt的结果,每行一个,存储在txt中;\n", "2. 选择哪几个模型?\n", "\n", "- GPT系列\n", "- GLM3\n", "- 百度\n", "- Qwen1.5-72b-chat \n", "\n", "\n", "\n", "https://github.com/yuyouyu32/LLMQAEvaluate?tab=readme-ov-file" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2024-12-05 20:39:20,349] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "from transformers import AutoTokenizer,AutoModel\n", "import torch\n", "from sklearn.metrics.pairwise import cosine_similarity\n", "from sentence_transformers import SentenceTransformer\n", "import pandas as pd\n", "\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "model_name = \"/home/zhangxj/models/acge_text_embedding\"\n", "tokenizer = AutoTokenizer.from_pretrained(model_name)\n", "# model = AutoModel.from_pretrained(model_name)\n", "model = SentenceTransformer(model_name)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2, 1792)\n" ] } ], "source": [ "def embedding(text):\n", " # inputs = tokenizer(text,return_tenors=\"pt\",padding=True,truncation=True,max_length=512)\n", " # with torch.no_grad():\n", " # outputs = model(**inputs)\n", " \n", " # embeddings = outputs.last_hidden_state.mean(dim=1)\n", " embeddings = model.encode(text,normalize_embeddings=True)\n", " \n", " return embeddings\n", "\n", "emb1 = embedding([\"你好,这里是中国\",\"欢迎你来到中国!\"])\n", "\n", "# from numpy.linalg import norm\n", "\n", "# cos_sim = lambda a,b:(a@b.T)/(norm(a)*norm(b))\n", "print(emb1.shape)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import re\n", "\n", "def remove_punctuation(text):\n", " # 正则表达式匹配中文标点和英文标点\n", " pstr = r\""#$&'()*+,-/:;@[\]^_`{|}~⦅⦆「」、 、〃〈〉《》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘’‛“”„‟…‧﹏﹑﹔·!?。。\"\n", " return re.sub(pstr, ' ', text)\n", "\n", "def get_ans_list(file_path):\n", " answers = []\n", " with open(file_path,\"r\",encoding=\"utf-8\") as file:\n", " for line in file.readlines():\n", " answers.append(line.strip())\n", " results = [remove_punctuation(ans) for ans in answers]\n", " return results" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "answers = get_ans_list(\"/home/zhangxj/WorkFile/LCA-GPT/QA/filters/answers.txt\")\n", "answer_LCA-GPT = get_ans_list(\"/home/zhangxj/WorkFile/LCA-GPT/QA/eval/LCA-GPTpred.txt\")\n", "answer_qwen72 = get_ans_list(\"/home/zhangxj/WorkFile/LCA-GPT/QA/eval/Qwen72bpred.txt\")\n", "answer_glm = get_ans_list(\"/home/zhangxj/WorkFile/LCA-GPT/QA/eval/GLMpred.txt\")\n", "answer_baidu = get_ans_list(\"/home/zhangxj/WorkFile/LCA-GPT/QA/eval/ERNIEpred.txt\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | question | \n", "answer | \n", "子类别 | \n", "
---|---|---|---|
0 | \n", "什么是生命周期分析(LCA)的主要目标? | \n", "生命周期分析旨在评估产品或服务从原材料获取到最终处置的环境影响。 | \n", "LCA理论与相关知识 | \n", "
1 | \n", "在LCA中,如何确定研究的范围? | \n", "研究范围包括定义系统边界,如输入、输出、功能单位和分析阶段。 | \n", "研究和试验发展 | \n", "
2 | \n", "文档中提到的医疗废物如何处理? | \n", "文档未直接说明医疗废物的具体处理方法,只提及了与之相关的能源消耗。 | \n", "卫生和社会工作 | \n", "
3 | \n", "LCA数据清单收集阶段需要哪些信息? | \n", "数据清单需收集所有过程的输入输出数据,包括资源消耗、排放和能源使用。 | \n", "LCA理论与相关知识 | \n", "
4 | \n", "生命周期影响评价阶段的目标是什么? | \n", "该阶段旨在量化每个阶段对环境的各种影响,如气候变化、水耗和土地使用。 | \n", "生态保护和环境治理业 | \n", "