auto_evaluation
Auto Evaluation
若要測試各種參數對語言模型回答的好壞,可以使用auto_evalution函數。首先,您需要基於您要使用的文檔構建一個問題集(.txt)。
您可以生成單選題文件或問答題文件。
- 對於單選題文件,每個選項和正確答案之間用制表符(\t)分隔,每行是一個問題,如範例: 函式將返回問題集的正確率和使用的token量,每個問題的詳細內容儲存在logs中。
1
2
3應回收廢塑膠容器材質種類不包含哪種? 1.聚丙烯(PP) 2.聚苯乙烯(PS) 3.聚氯乙烯(PVC) 4.低密度聚乙烯(LDPE) 4
庫存盤點包括庫存全盤作業及不定期抽盤作業,盤點計畫應包括下列項目不包含哪項? 1.盤點差異之處理 2.盤點清冊 3.各項物品存放區域配置圖 4.庫存全盤日期及參加盤點人員名單 1
以下何者不是環保署指定之公民營地磅機構? 1.中森加油站企業有限公司 2.台益地磅站 3.大眾地磅站 4.新福行 41
2
3
4
5
6
7
8
9
10import akasha.eval as eval
import os
import akasha
dir_path = "doc/pvc/"
exp_name = "exp_akasha_auto_evaluation"
eva = eval.Model_Eval(question_style="single_choice", search_type='merge',\
model="openai:gpt-3.5-turbo", embeddings="openai:text-embedding-ada-002",record_exp=exp_name)
print(eva.auto_evaluation("question_pvc.txt", dir_path ))
## correct rate: 0.9, tokens: 3228 ## - 對於問答題文件,每個問題之前有 “問題:”,每個參考答案之前有 “答案:”。每個問題之間用兩個換行符 (\n\n) 分隔。
問答題類的問題文件,會回傳bert的平均分數, rouge的平均分數, llm_score的平均分數, 文件使用的總token數量1
2
3
4
5
6問題:根據文件中的訊息,智慧製造的複雜性已超越系統整合商的負荷程度,未來產業鏈中的角色將傾向朝共和共榮共創智慧製造商機,而非過往的單打獨鬥模式發展。請問為什麼 供 應商、電信商、軟體開發商、平台商、雲端服務供應商、系統整合商等角色會傾向朝共和共榮共創智慧製造商機的方向發展?
答案:因為智慧製造的複雜性已超越系統整合商的負荷程度,單一角色難以完成整個智慧製造的需求,而共和共榮共創的模式可以整合各方的優勢,共同創造智慧製造的商機。
問題:根據文件中提到的資訊技術商(IT)和營運技術商(OT),請列舉至少兩個邊緣運算產品或解決方案。
答案:根據文件中的資訊,NVIDIA的邊緣運算產品包括Jetson系列和EGX系列,而IBM的邊緣運算產品包括IBM Edge Application Manager和IBM Watson Anywhere。1
2
3
4
5
6
7
8
9
10import akasha.eval as eval
import os
import akasha
dir_path = "doc/pvc/"
exp_name = "exp_akasha_auto_evaluation"
eva = eval.Model_Eval(question_style="essay", search_type='merge',\
model="openai:gpt-3.5-turbo")
print(eva.auto_evaluation("question_pvc_essay.txt", dir_path ))
## correct rate: 0.9, tokens: 3228 ##
Scores
對於問答題文件,因為無法準確判別語言模型的回答是否正確,我們使用bert_score, rouge_score, llm_score,藉由比較語言模型的回答與問答題文件中的參考答案,來得出0~1之間的分數
bert-score
使用bert-score套件計算回答與參考答案的每個token之間的contextual embeddings similarity.
1 | import akasha |
ROUGE-score
將語言模型的回答與問答題文件中的參考答案進行分詞後,藉由ROUGE 評估生成相似度分數
1 | import akasha |
llm-score
利用另一種語言模型,將語言模型的回答與問答題文件中的參考答案進行比較,生成相似度分數
1 | import akasha |