|
...
|
...
|
@@ -119,24 +119,23 @@ class GeoQuestionRes extends Command |
|
|
|
$hit_data = array_merge($url, $title, $hit_data);
|
|
|
|
}
|
|
|
|
$hit = 0;
|
|
|
|
//todo::与预期结果是否复合
|
|
|
|
if(!empty($taskInfo['expect_result'])){
|
|
|
|
$str = "客户提出的问题:{$question},客户得到的回复:{$result['text']},客户需要预期:{$taskInfo['expect_result']},请分析得到的回复和预期是否一致,仅回复我是或者否";
|
|
|
|
$strResult = $geo_service->getChatResult($str, 'gpt-4o-mini');
|
|
|
|
if(isset($strResult['text']) && !empty($strResult['text'])){
|
|
|
|
switch ($strResult['text']){
|
|
|
|
case '是':
|
|
|
|
$is_match = 1;
|
|
|
|
$hit++;
|
|
|
|
break;
|
|
|
|
case '否':
|
|
|
|
$is_match = 2;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
$is_match = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
$cosine = 0;
|
|
|
|
$similarity = [];
|
|
|
|
// TODO 有预期结果,分析答案和预期结果
|
|
|
|
if(FALSE == empty($taskInfo['expect_result'])){
|
|
|
|
$cosine_result = $geo_service->cosineSimilarity($taskInfo['expect_result'], $result['text']);
|
|
|
|
// 语义是否一致
|
|
|
|
if (FALSE == empty($cosine_result['judgement'])) {
|
|
|
|
$is_match = $cosine_result['judgement'] == '语义相近' ? 1 : 2;
|
|
|
|
$hit++;
|
|
|
|
}
|
|
|
|
// 余弦相似度
|
|
|
|
if (FALSE == empty($cosine_result['similarity']))
|
|
|
|
$cosine = intval($cosine_result['similarity'] * 10000) / 100;
|
|
|
|
// 语句拆解结果
|
|
|
|
if (FALSE == empty($cosine_result['split_results']))
|
|
|
|
$similarity = $cosine_result['split_results'];
|
|
|
|
}
|
|
|
|
$hit_keyword = $this->getKeywords($taskInfo['keywords'],$hit_data);
|
|
|
|
if (!empty($hit_keyword['keywords'])) {
|
|
...
|
...
|
@@ -165,6 +164,8 @@ class GeoQuestionRes extends Command |
|
|
|
'url_num'=>$url_num ?? [],
|
|
|
|
'is_match'=>$is_match ?? 0,
|
|
|
|
'label'=>$taskInfo['label'] ?? null,
|
|
|
|
'cosine' => $cosine,
|
|
|
|
'similarity' => json_encode($similarity, true),
|
|
|
|
'created_at'=>date('Y-m-d H:i:s'),
|
|
|
|
'updated_at'=>date('Y-m-d H:i:s'),
|
|
|
|
];
|
...
|
...
|
|