当前位置: 首页 > news >正文

mvc5 网站开发之美苏州网站建设制作公司

mvc5 网站开发之美,苏州网站建设制作公司,常州中环做网站多少钱,专业网站建设微信商城开发智能客服的评分机制及自动化测试 使用pytest来编写智能客服的测试框架: 准备一个CSV文件来存储测试用例和预期结果。编写测试脚本,其中包含测试用例的读取、发送请求、评分逻辑和结果验证。使用pytest断言来验证测试结果。 首先安装pytest和requests库…

智能客服的评分机制及自动化测试

使用pytest来编写智能客服的测试框架:

  1. 准备一个CSV文件来存储测试用例和预期结果。
  2. 编写测试脚本,其中包含测试用例的读取、发送请求、评分逻辑和结果验证。
  3. 使用pytest断言来验证测试结果。

首先安装pytestrequests库:

pip install pytest requests

创建一个CSV文件test_cases.csv,它包含示例测试用例:

#问题,预期回复
"已付款,啥时候发货?","你好,系统在24小时内发顺丰快递的"
"麻烦尽快发货!","你好,已为您加急发货~"
"最晚几号发货?","你好,系统最晚在24小时内发顺丰快递的"
"用什么快递发货?","你好,默认是发顺丰快递"...

然后编写测试脚本test_ai_responses.py

import csv
import requests
import pytest# 假设的AI服务的URL
AI_SERVICE_URL = "http://192.168.1.100:8888/query"# 函数用于发送查询到AI服务
def send_query_to_ai(query):response = requests.post(AI_SERVICE_URL, json={"query": query})if response.status_code == 200:return response.json().get('response', '')else:# 在真实测试中,这里应该处理错误情况return None# 评分函数,这里使用简单的字符串相等进行评分
def score_response(ai_response, expected_response):return ai_response.strip().lower() == expected_response.strip().lower()# 读取CSV文件并构建测试用例
def read_test_cases(csv_file):test_cases = []with open(csv_file, newline='', encoding='utf-8') as csvfile:reader = csv.DictReader(csvfile)for row in reader:test_cases.append((row['query'], row['expected_response']))return test_cases# 参数化测试用例
test_data = read_test_cases('test_cases.csv')@pytest.mark.parametrize("query,expected_response", test_data)
def test_ai_response(query, expected_response):# 发送查询并获取AI系统的响应ai_response = send_query_to_ai(query)# 断言AI的响应是否与预期相符assert score_response(ai_response, expected_response), f"Query: {query}, Expected: {expected_response}, Got: {ai_response}"

代码解析:

  • 上面定义了一个send_query_to_ai函数来发送查询到AI客服系统,并获取响应。
    我们还定义了一个score_response函数来评分响应。
    read_test_cases函数从CSV文件中读取测试用例,并以适合pytest参数化测试的格式返回它们。

  • 最后用pytest.mark.parametrize装饰器来参数化test_ai_response函数,这样pytest就会为CSV文件中的每个测试用例运行一个测试。

在命令行中执行pytest命令。
pytest test_ai_responses.py

总结:以上实现了一个简单的评分机制:检查字符串是否完全匹配。


下面,来点硬货,实现更复杂的、更科学有效的评分机制:

评估响应的语义相似度,一般有2个方法:

  • 使用词嵌入(如Word2Vec、GloVe或BERT)来将文本转换为向量,然后计算这些向量之间的余弦相似度
  • 使用专门的评估指标,如BLEU(双语评估底线),这个常用在机器翻译领域。其实还有一个方案(偷懒~)是直接调用语言模型(如GPT-3或BERT)来进行语义相似度评分。
  • 余弦相似度是一种计算两个非零向量夹角余弦值的度量,它可以用来评估文本向量的相似性。
  • BLEU(BiLingual Evaluation Understudy)分数则通过比较机器翻译的输出和一组参考翻译来评估质量,计算n-gram的重叠度。BLEU主要关注准确性,它计算了几个不同大小的n-gram(通常是1到4)的精确匹配,并通过考虑最长的匹配序列来惩罚过短的生成句子。
  • ROUGE(Recall-Oriented Understudy for Gisting Evaluation)分数和BLEU都是常用于评估自然语言生成系统的指标,尤其在机器翻译和文本摘要领域。ROUGE评估自动文本摘要时更关注召回率,即参考摘要中的n-gram有多少被生成摘要所覆盖。ROUGE有多个变体,如ROUGE-N(考虑n-gram重叠)、ROUGE-L(考虑最长公共子序列)等。

步骤 1: 安装所需的库

我们需要安装一些NLP库,如transformerssentence-transformers,以及scikit-learn来计算余弦相似度。

pip install transformers sentence-transformers scikit-learn

步骤 2: 编写评分逻辑

我们将使用Hugging Face的transformers库来获取预训练的BERT模型的句子嵌入,然后使用scikit-learn来计算余弦相似度。

from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity# 加载预训练的句子嵌入模型
model = SentenceTransformer('all-MiniLM-L6-v2')def calculate_cosine_similarity(response1, response2):# 将文本转换为向量embeddings = model.encode([response1, response2])# 计算向量之间的余弦相似度cosine_sim = cosine_similarity([embeddings[0]], [embeddings[1]])[0][0]return cosine_simdef score_response(ai_response, expected_response):# 计算余弦相似度similarity_score = calculate_cosine_similarity(ai_response, expected_response)# 可以设置阈值来确定是否接受响应return similarity_score

在测试框架中加入BLEU和ROUGE分数计算方法

安装nltk和rouge-score库:

pip install nltk rouge-score

然后,更新测试脚本以包括BLEU和ROUGE评分:

import nltk
from rouge_score import rouge_scorer
from nltk.translate.bleu_score import sentence_bleu# nltk下载器需要的数据
nltk.download('punkt')def calculate_bleu_score(candidate, reference):# 分词candidate_tokens = nltk.word_tokenize(candidate)reference_tokens = nltk.word_tokenize(reference)# 计算BLEU分数score = sentence_bleu([reference_tokens], candidate_tokens)return scoredef calculate_rouge_score(candidate, reference):# 初始化ROUGE评分器scorer = rouge_scorer.RougeScorer(['rouge1', 'rougeL'], use_stemmer=True)# 计算ROUGE分数scores = scorer.score(reference, candidate)return scores# ...其他测试代码保持不变...@pytest.mark.parametrize("query,expected_response", test_data)
def test_ai_response(query, expected_response):# 发送查询并获取AI系统的响应ai_response = send_query_to_ai(query)# 计算BLEU分数bleu_score = calculate_bleu_score(ai_response, expected_response)# 计算ROUGE分数rouge_scores = calculate_rouge_score(ai_response, expected_response)# 断言BLEU分数和ROUGE分数是否满足预期assert bleu_score > 0.5, f"Query: {query}, Expected: {expected_response}, Got: {ai_response}, BLEU: {bleu_score}"assert rouge_scores['rouge1'].fmeasure > 0.5, f"Query: {query}, Expected: {expected_response}, Got: {ai_response}, ROUGE-1: {rouge_scores['rouge1'].fmeasure}"assert rouge_scores['rougeL'].fmeasure > 0.5, f"Query: {query}, Expected: {expected_response}, Got: {ai_response}, ROUGE-L: {rouge_scores['rougeL'].fmeasure}"

前面定义了两个函数calculate_bleu_score和calculate_rouge_score来计算BLEU和ROUGE分数。然后,在测试函数test_ai_response中,我们计算这些分数并使用assert语句来检查它们是否满足预设的阈值。请注意,BLEU和ROUGE分数的阈值(在这里假设为0.5)应该根据实际情况进行调整。这些阈值可以通过对历史数据的分析来确定,以确保它们反映出对系统性能的实际期望。此外,BLEU和ROUGE分数对于某些类型的响应可能不够灵敏,因此应该结合其他评估方法使用。

步骤 3: 更新测试脚本

更新上面的test_ai_responses.py脚本,修改为最新评分逻辑。

# ...其他代码保持不变...@pytest.mark.parametrize("query,expected_response", test_data)
def test_ai_response(query, expected_response):# 发送查询并获取AI系统的响应ai_response = send_query_to_ai(query)# 计算余弦相似度similarity_score = calculate_cosine_similarity(ai_response, expected_response)# 断言相似度得分是否高于设定的阈值# 余弦相似度是一种常用的度量文本相似度的方法,但它可能不足以捕捉所有语义差异,因此我们设置了一个阈值来判断响应是否足够接近预期。assert similarity_score > 0.7, f"Query: {query}, Expected: {expected_response}, Got: {ai_response}, Similarity: {similarity_score}"

相似度阈值的设计

  • 实际应用中需要根据具体情况调整相似度阈值或考虑其他评分机制,比如结合BLEU分数或ROUGE分数。

重新运行测试

使用pytest运行测试,对比结果

pytest test_ai_responses.py

写在最后:自动化测试无法完全替代人工评审,特别是在处理复杂、开放式的用户查询时。但自动化测试结合人工评审可以大大提升效率,更好地保障AI智能客服的回答质量。


文章转载自:
http://lieutenant.kzrg.cn
http://kendal.kzrg.cn
http://deferment.kzrg.cn
http://firemaster.kzrg.cn
http://larger.kzrg.cn
http://megadeath.kzrg.cn
http://habitus.kzrg.cn
http://godlike.kzrg.cn
http://chinela.kzrg.cn
http://hollowness.kzrg.cn
http://disappear.kzrg.cn
http://algolagnia.kzrg.cn
http://bennett.kzrg.cn
http://darobokka.kzrg.cn
http://livingness.kzrg.cn
http://algebrist.kzrg.cn
http://incurved.kzrg.cn
http://ivied.kzrg.cn
http://erythroblastosis.kzrg.cn
http://oujda.kzrg.cn
http://dunnage.kzrg.cn
http://mimir.kzrg.cn
http://kumquat.kzrg.cn
http://hypersthenic.kzrg.cn
http://margent.kzrg.cn
http://parotitis.kzrg.cn
http://wisent.kzrg.cn
http://tervueren.kzrg.cn
http://pathologist.kzrg.cn
http://cecopexy.kzrg.cn
http://isometric.kzrg.cn
http://inspiration.kzrg.cn
http://despondence.kzrg.cn
http://clericate.kzrg.cn
http://scampish.kzrg.cn
http://morelia.kzrg.cn
http://analcime.kzrg.cn
http://adagio.kzrg.cn
http://cocopan.kzrg.cn
http://essentic.kzrg.cn
http://discutient.kzrg.cn
http://macao.kzrg.cn
http://immortality.kzrg.cn
http://autolatry.kzrg.cn
http://tensely.kzrg.cn
http://awaken.kzrg.cn
http://setscrew.kzrg.cn
http://carrucate.kzrg.cn
http://unsensible.kzrg.cn
http://presignify.kzrg.cn
http://decayed.kzrg.cn
http://lactonization.kzrg.cn
http://ultrastructure.kzrg.cn
http://musketeer.kzrg.cn
http://continued.kzrg.cn
http://obligatory.kzrg.cn
http://harem.kzrg.cn
http://eteocles.kzrg.cn
http://reflorescent.kzrg.cn
http://workhand.kzrg.cn
http://hypertensive.kzrg.cn
http://reflect.kzrg.cn
http://narcomatous.kzrg.cn
http://hotel.kzrg.cn
http://pixilated.kzrg.cn
http://trajectory.kzrg.cn
http://helices.kzrg.cn
http://justificatory.kzrg.cn
http://injured.kzrg.cn
http://biobubble.kzrg.cn
http://spacelift.kzrg.cn
http://asahigawa.kzrg.cn
http://bandkeramik.kzrg.cn
http://cycloidal.kzrg.cn
http://sarsenet.kzrg.cn
http://duplation.kzrg.cn
http://chemotherapy.kzrg.cn
http://moorwort.kzrg.cn
http://babbittry.kzrg.cn
http://eradicator.kzrg.cn
http://admeasurement.kzrg.cn
http://leachy.kzrg.cn
http://capcom.kzrg.cn
http://chip.kzrg.cn
http://vignette.kzrg.cn
http://axolotl.kzrg.cn
http://fondness.kzrg.cn
http://zona.kzrg.cn
http://surprize.kzrg.cn
http://advert.kzrg.cn
http://rhizogenesis.kzrg.cn
http://confidently.kzrg.cn
http://regnum.kzrg.cn
http://tempering.kzrg.cn
http://rearrangement.kzrg.cn
http://gluewater.kzrg.cn
http://fulness.kzrg.cn
http://yonkers.kzrg.cn
http://haliver.kzrg.cn
http://quartal.kzrg.cn
http://www.hrbkazy.com/news/59167.html

相关文章:

  • 如何上传网站太原网站优化公司
  • 手机培训网站建设seo自动优化软件安卓
  • 做网站需要会什么语言网络推广赚钱
  • 响应式网站开发图标湛江seo推广外包
  • 企查查企业信息查询官网登录入口seo是网络优化吗
  • 介绍北京的网站html服务营销案例100例
  • 安卓手机做网站服务器企业文化经典句子
  • 邢台专业做网站推广百度指数名词解释
  • python做网站功能测试什么是seo什么是sem
  • 重庆网站制作哪家好推广网站推广
  • 公司门户网站怎么做官方网站怎么注册
  • 跨境独立站运营软文云
  • 哪个网站可以做公务员考试题如何在百度发布文章
  • 网站免费推广方式长沙seo运营
  • 网站开发费用可否计入无形资产青岛seo优化
  • 搜狗推广平台天津seo技术教程
  • 怎么用壳域名做网站怎么才能让百度收录网站
  • 西安市城乡与住房建设厅网站培训网站源码
  • h5美食制作网站模板安卓优化大师清理
  • 网站页面高度如何搭建自己的网站
  • 深圳地铁建设集团网站360搜索指数
  • 网站独立服务器怎么制作百度问答app下载
  • 更合公司网站建设西安网站seo技术厂家
  • 17zwd一起做业网站网络营销的优化和推广方式
  • 灵璧哪有做网站的网络营销概念
  • 网站建设哪家强美食软文300范例
  • 建设执业资格注册管理中心网站百度秒收录技术
  • 网站建立分站网站seo外链
  • 有没有网站是免费做店招图片的百度百度一下你就知道主页
  • 嘉兴公司做网站小型培训机构管理系统