Pārlūkot izejas kodu

Merge branch 'master' of https://jygit.jydev.jianyu360.cn/data_processing/data_ai

zhengkun 1 gadu atpakaļ
vecāks
revīzija
f276e7cf19
6 mainītis faili ar 73 papildinājumiem un 9 dzēšanām
  1. 0 4
      .idea/misc.xml
  2. 1 1
      ai/ai_zhipu.go
  3. 27 0
      mainT.go
  4. 41 0
      prompt/prompt.go
  5. 1 1
      prompt/prompt_class.go
  6. 3 3
      ul/attr.go

+ 0 - 4
.idea/misc.xml

@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="GOROOT" url="file:///usr/local/Cellar/go/1.21.0/libexec" />
-</project>

+ 1 - 1
ai/ai_zhipu.go

@@ -87,7 +87,7 @@ func PostClassZhiPuAI(content string) map[string]interface{} {
 		"messages":    messages,
 		"temperature": 0.2,
 		"top_p":       0.7,
-		"max_tokens":  4096,
+		//"max_tokens":  4096,
 	}
 	jsonData, _ := json.Marshal(requestData)
 	// 创建HTTP请求

+ 27 - 0
mainT.go

@@ -0,0 +1,27 @@
+package main
+
+import (
+	"data_ai/prompt"
+	"data_ai/ul"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
+)
+
+func mainT() {
+	coll := "ai_41411_100"
+	q := map[string]interface{}{
+		"_id": mongodb.StringTOBsonId("669e907166cf0db42a653c52"),
+	}
+	sort := map[string]interface{}{
+		"num": 1,
+	}
+	list, _ := ul.SourceMgo.Find(coll, q, sort, nil)
+	for _, l := range list {
+		detail := qu.ObjToString(l["detail"])
+		title := qu.ObjToString(l["title"])
+		s_toptype, s_subtype := prompt.AcquireClassInfo(detail, title)
+		qu.Debug("ai:", s_toptype, s_subtype)
+		s_toptype, s_subtype = prompt.CheckClassByOtherFileds(s_toptype, s_subtype, l)
+		qu.Debug("check:", l["_id"], s_toptype, s_subtype)
+	}
+}

+ 41 - 0
prompt/prompt.go

@@ -62,6 +62,47 @@ func AcquireClassInfo(detail string, title string) (string, string) {
 	return toptype, subtype
 }
 
+// 根据抽取字段校正分类结果
+func CheckClassByOtherFileds(toptype_ai, subtype_ai string, data map[string]interface{}) (string, string) {
+	toptype_rule := qu.ObjToString(data["toptype"])
+	subtype_rule := qu.ObjToString(data["subtype"])
+	//1、结果类 中标和成交错误校正
+	s_winner := qu.ObjToString(data["s_winner"])
+	winnerorder, _ := data["winnerorder"].([]interface{})
+	if toptype_ai == "结果" && toptype_rule == "结果" {
+		if (subtype_ai == "中标" && subtype_rule == "成交") || (subtype_ai == "成交" && subtype_rule == "中标") {
+			if len(winnerorder) > 0 { //有中标候选人->中标
+				return toptype_ai, "中标"
+			}
+			if s_winner != "" || data["bidamount"] != nil {
+				return toptype_ai, "成交"
+			}
+		}
+	}
+	//2、招标、结果错误校正
+	if toptype_ai != "结果" && toptype_rule == "结果" {
+		//return toptype_rule,subtype_rule//默认规则为准
+		if len(winnerorder) > 0 { //有中标候选人->中标
+			//return toptype_rule, "中标"//这里subtype是否返回"中标"?
+			return toptype_rule, subtype_rule //默认规则是正确的
+		} else if s_winner != "" || data["bidamount"] != nil {
+			return toptype_rule, subtype_rule
+		} else {
+			return toptype_ai, subtype_ai
+		}
+	} else if toptype_ai == "结果" && toptype_rule != "结果" {
+		//return toptype_rule,subtype_rule//默认规则为准
+		if len(winnerorder) > 0 { //有中标候选人->中标
+			return toptype_ai, "中标" //这里subtype返回"中标",避免ai识别错误
+		} else if s_winner != "" || data["bidamount"] != nil {
+			return toptype_ai, "成交" //这里subtype返回"成交",避免ai识别错误
+		} else {
+			return toptype_ai, subtype_ai
+		}
+	}
+	return toptype_ai, subtype_ai
+}
+
 // 获取外围抽取字段
 func AcquireExtractFieldInfo(detail string) map[string]interface{} {
 	content := PromptFieldText(detail)

+ 1 - 1
prompt/prompt_class.go

@@ -22,7 +22,7 @@ func PromptToptypeFieldText(detail, title string) string {
 	4、结果公告:发布的是招投标公告评选过程或评标结果的信息,还涉及开标记录、结果变更的情况。通常会列出候选人、供应商、中标人、中标金额等信息,包括"候选公告","结果变更公告","成交公告","流标公告","废标公告"这几种类型。请结合列举的"关键词"进行推导,关键词:[评标,得分,工期,项目负责人,开标记录,中标候选,候选人,成交候选,候选入围,成交,成交金额,成交公告,供应商名称,采购结果,中选公告,中选结果,中选金额,流标,取消公告,取消采购,二次流标,比选失败,招标结束,采购程序终止,废标,作废,终止,废止公告,项目终止,招标公告作废,未成交公告,未成交公示,取消成交候选供应商,取消中标候选供应商,结果变更,中标结果变更,废标结果变更,变更中标人,重新公示,重新确认中标结果,重新确定中标人,重新确认中标公告,结果顺延];
 	5、预告公告:在招标公告正式开始前,发布资格预审信息、预审评审结果、招投标文件过程中问题的分析和评估意见、招投标项目的具体需求、技术要求等信息。请结合列举的"关键词"进行推导,关键词:[预告,预公告,预公示,资审,参加资格预审,预审邀请,调研公告,采购计划,审前公示,预审公告,资格预审,预审公告,招标预审,预审,预审结果,资格预审公示,资审结果,审查结果,论证意见,方案征集公告,审核前公示,专家组论证意见,需求论证公示,征求意见,采购需求,项目需求公示,论证公示,需求评审公告,需求公示,论证意见公示,征求意见,征集意见];
 	6、招标公告:招标单位或招标人公布项目的基本信息、标准、招标条件、价格和要求等,邀请符合资格的投标人参与项目投标。根据不同的招标方式和流程,可包括"单一来源公告"、"询价公告"、"竞价公告","邀标公告","竞争谈判公告","招标变更公告"。请结合列举的"关键词"进行推导,关键词:[招标公告,二次招标,招标报名,招标采购,单一来源,单一采购,询价,询价公告,调研公告,议价采购,询价邀请,竞价,网上竞价,竞价公告,竞价开始(结束),邀请,邀请招标,投标邀请,邀标公告,邀请书,公开邀请,报价邀请,磋商,竞争性谈判,竞争性磋商,磋商公告,招标变更];
-	7、采购意向公告:通常在实际开展采购前,提前公布自己的采购意向和计划。请结合列举的"关键词"进行推导,关键词:[采购意向,意向公告,招标计划,采办计划,预计采购];
+	7、采购意向公告:请结合列举的"关键词"进行推导,关键词:[采购意向,意向公告,招标计划,采办计划,预计采购];
 我希望你根据正文内容,仅从"信息分类选项"中选取一个合适的分类。在识别过程中出现多个结果时,按照"信息分类权重"优先选举一个权重大的,并将分类识别结果严格按照下述JSON格式输出。
 JSON格式:
 {

+ 3 - 3
ul/attr.go

@@ -61,7 +61,7 @@ var (
 二、信息分类权重(权重由高到低排序):[单一来源公告;询价公告;竞价公告;邀标公告;竞争谈判公告;变更公告;招标公告]
 三、信息分类参考资料:
 	1、单一来源公告:在特定情况下,直接与单一供应商签订合同。请结合列举的“关键词”进行推导,关键词:[单一来源,单一采购];
-	2、询价公告:了解市场价格水平,对市场价格信息进行调研、询价,公告内容一般提供报价信息、报价规则、报价方式。请结合列举的“关键词”进行推导,关键词:[询价公告,采购询价,公开询价,网上报价公告,询价通知书,询价公示,询比价采购,询价邀请,询价单,公开询比价,调研公告,议价采购公告];
+	2、询价公告:了解市场价格水平,对市场价格信息进行调研、询价,公告内容一般提供报价信息、报价规则、报价方式。请结合列举的“关键词”进行推导,关键词:[议价,定点议价,询价公告,采购询价,公开询价,网上报价公告,询价通知书,询价公示,询比价采购,询价邀请,询价单,公开询比价,调研公告,议价采购公告];
 	3、竞价公告:投标人提交报价以竞争合同的过程。排除词:[成交金额、成交人];请结合列举的“关键词”进行推导,关键词:[竞价,竞买,反拍,竞价采购,公开竞价,网上竞价,竞价招标,竞价公告,竞采公告,竞价开始(结束)];
 	4、邀标公告:发邀请特定投标人参与投标,而不是通过公开招标。请结合列举的“关键词”进行推导,关键词:[邀请,邀请招标,投标邀请,采购邀请,邀标公告,邀请书,公开邀请,报价邀请];
 	5、竞争谈判公告:一般包含项目和申请人的资格要求、获取采购文件和提交的时间、方式和地点等。请结合列举的“关键词”进行推导,关键词:[磋商,竞争性谈判,竞争性磋商,竞争性发包,磋商公告,谈判邀请公告,磋商公告];
@@ -84,7 +84,7 @@ JSON格式:
 二、信息分类权重(权重由高到低排序):[变更公告;废标公告;流标公告;成交公告;候选公告;结果其它公告]
 三、信息分类参考资料:
 	1、变更公告:表明对已发布的中标结果,采购结果进行了调整或更正。请结合列举的“关键词”进行推导,关键词:[结果更改,结果变更,中标结果变更,废标结果变更,变更中标人,重新公示,结果变更,重新确认中标结果,重新确定中标人,重新确定成交人,重新确认中标的中标公告,结果顺延];
-	2、废标公告:宣布取消招标活动,不与任何投标人签订合同。请结合列举的“关键词”进行推导,关键词:[废标,作废,终止,废止公告,项目终止,招标公告作废,未成交公告,未成交公示,取消成交候选供应商,取消中标候选供应商];
+	2、废标公告:宣布取消招标活动,不与任何投标人签订合同。请结合列举的“关键词”进行推导,关键词:[废标,作废,终止,废止公告,异常公告,项目终止,招标公告作废,未成交公告,未成交公示,取消成交候选供应商,取消中标候选供应商];
 	3、流标公告:招标未能成功完成,没有投标人符合要求。请结合列举的“关键词”进行推导,关键词:[流标,取消公告,取消采购,二次流标,比选失败,招标结束公告,采购程序终止];
 	4、成交公告:成交公告是指在招投标过程中,经过评标、定标等程序后,公布中标人、中标金额等信息的公告,但公告中不会有多个候选人的中标信息。请结合列举的“关键词”进行推导,关键词:[直接选取,成交,成交金额,成交公告,成交通知,成交结果,采购结果,成交通知书,中标通知书,中选公告,中选结果,中选金额];
 	5、候选公告:候选公告是对评标过程的公开,通常会列出多个候选人名单、得分、报价等信息。请结合列举的“关键词”进行推导,关键词:[第一,第二,第三,名单,评标,得分,综合评分,中标候选人,成交候选人公示,成交候选单位,候选代理机构入围公示,候选供应商,成交候选人];
@@ -125,7 +125,7 @@ JSON格式:
 var (
 	//一级分类结果校正正则
 	Top_ZB_Reg   = regexp.MustCompile(`(招标(变更)?|(询|竞|议)价|单一|邀(标|请)|竞[争性]{0,2}谈(判)?|磋商)`)
-	Top_JG_Reg   = regexp.MustCompile(`((中标|成交|中选|废标)(结果|候选)?|结果(变更)?|开标记录|(候|侯)选|采购结果|流标|废标|作废|终止|废止|未成交|变更中标人)`)
+	Top_JG_Reg   = regexp.MustCompile(`((中标|成交|中选|废标)(结果|候选)?|结果(变更)?|开标记录|(候|侯)选|采购结果|流标|废标|作废|终止|废止|异常|未成交|变更中标人)`)
 	Top_YG_Reg   = regexp.MustCompile(`(预审|评审|资审|预告|(预|论证)(公告|公示)|调研公告|审前公示|审查|需求论证|征求意见|(采购|项目)需求|需求公示)`)
 	Top_YS_Reg   = regexp.MustCompile(`验收`)
 	Top_HT_Reg   = regexp.MustCompile(`合同`)