Browse Source

备份-优化-0108

zhengkun 3 years ago
parent
commit
d284ae87cd

+ 19 - 7
src/jy/extract/extract.go

@@ -391,10 +391,10 @@ func (e *ExtractTask) PreInfo(doc map[string]interface{}) (j, jf *ju.Job, isSite
 	if qu.ObjToString(doc["type"]) == "bid" {
 		toptype = "结果"
 	}
-	if toptype == "" {
+	if toptype == "" || toptype=="采购意向" {
 		toptype = "all"
 	}
-	if subtype == "" {
+	if subtype == "" || subtype=="采购意向" {
 		subtype = "all"
 	}
 	if subtype == "其他" {
@@ -568,8 +568,16 @@ func (e *ExtractTask) ExtractProcess(j, jf *ju.Job, isSite bool) {
 					j.Result[tmpk] = append(j.Result[tmpk], jf.Result[tmpk]...)
 				}
 			}else {
-				if tmpk=="winner" && len(j.Result[tmpk]) == 1 {
-					if j.Result[tmpk][0].Value == ""  {
+				if tmpk=="winner" {
+					//均没有有效值~采用附件的
+					isUsed := false
+					for _,v := range j.Result[tmpk] {
+						if v.Value!="" {
+							isUsed = true
+							break
+						}
+					}
+					if !isUsed {
 						j.Result[tmpk] = append(j.Result[tmpk], jf.Result[tmpk]...)
 					}
 				}
@@ -688,7 +696,7 @@ func (e *ExtractTask) ExtractDetail(j *ju.Job, isSite bool, codeSite string) {
 					continue
 				}
 
-				if vc.Field =="buyer" {
+				if vc.Field =="bidamount" {
 					//log.Debug("调试抽取字段")
 				}
 				////抽取-前置规则
@@ -1356,7 +1364,9 @@ func getKvByLuaFields(vc *RuleCore, j *ju.Job, et *ExtractTask) (map[string][]ma
 					"type":        "winnerorder",
 					"matchtype":   "winnerorder",
 				})
-				return kvmap, false
+				if len(j.Winnerorder) < 4 {
+					return kvmap, false
+				}
 			}
 			//候选人中标金额
 			if price := j.Winnerorder[0]["price"]; price != nil {
@@ -1370,7 +1380,9 @@ func getKvByLuaFields(vc *RuleCore, j *ju.Job, et *ExtractTask) (map[string][]ma
 					"type":        "winnerorder",
 					"matchtype":   "winnerorder",
 				})
-				return kvmap, false
+				if len(j.Winnerorder) < 4 {
+					return kvmap, false
+				}
 			}
 		}
 	}

+ 0 - 1
src/jy/extract/newextractcity.go

@@ -853,7 +853,6 @@ func MergeFullSimScore(j *ju.Job) {
 	for c_text, c_score := range j.SimCityScore {
 		j.FullCityScore[c_text] = j.FullCityScore[c_text] + c_score
 	}
-
 	for d_text, d_score := range j.SimDistrictScore {
 		j.FullDistrictScore[d_text] = j.FullDistrictScore[d_text] + d_score
 	}

+ 2 - 2
src/jy/extract/score.go

@@ -263,7 +263,7 @@ func ScoreFields(j *ju.Job, ftag map[string][]*Tag) map[string][]*ju.ExtField {
 								//针对指定 buyer -长度0-4 不打分
 								if field=="buyer" || field=="winner" {
 									buyerValue := fmt.Sprint(tmpsvalue.Value)
-									reg := regexp.MustCompile(`^.{2}([大|小|中|学][学|院]|公司)$`)
+									reg := regexp.MustCompile(`^.{2}([大|小|中|学][学|院]|公司|某部)$`)
 									if reg.MatchString(buyerValue) && gt==0 && lte==4 {
 										continue
 									}
@@ -290,7 +290,7 @@ func ScoreFields(j *ju.Job, ftag map[string][]*Tag) map[string][]*ju.ExtField {
 									if field=="buyer"|| field=="winner" {
 										//针对指定 buyer -个别  不打分
 										buyerValue := fmt.Sprint(tmpsvalue.Value)
-										reg := regexp.MustCompile(`^.{2}([大|小|中|学][学|院]|公司)$`)
+										reg := regexp.MustCompile(`^.{2}([大|小|中|学][学|院]|公司|某部)$`)
 										if reg.MatchString(buyerValue) && qu.ObjToString(p["describe"])=="黑名单"{
 											return
 										}

+ 22 - 3
src/jy/pretreated/analytable.go

@@ -352,7 +352,7 @@ func (table *Table) KVFilter(isSite bool, codeSite string) {
 }
 
 var winMoneyReg *regexp.Regexp = regexp.MustCompile("(报价|投标价|投标总价)")
-
+var winNoMoneyReg *regexp.Regexp = regexp.MustCompile("(得分)")
 //处理table.SortKV.value为数组的情况
 func (table *Table) sortKVArr(as *SortMap, isSite bool, codeSite string) {
 	winnertag := iswinnertabletag.MatchString(table.Tag) && !nswinnertabletag.MatchString(table.Tag) //table标签
@@ -425,7 +425,7 @@ func (table *Table) sortKVArr(as *SortMap, isSite bool, codeSite string) {
 											if entname != "" {
 												tmpEntname[vsk] = entname
 											}
-										} else if winMoneyReg.MatchString(k) && len(tmpPrice[vsk]) == 0 {
+										} else if winMoneyReg.MatchString(k) && !winNoMoneyReg.MatchString(k) && len(tmpPrice[vsk]) == 0 {
 											kv = "中标金额"
 										}else { //验证val时如果数组中的第一条数据既不满足sort或者entname 判定此数组数据错误
 											break
@@ -528,7 +528,7 @@ func (table *Table) sortKVArr(as *SortMap, isSite bool, codeSite string) {
 				if (len(table.WinnerOrder) > 0 && table.WinnerOrder[0]["price"] == nil && len(vsss) == len(table.WinnerOrder)) ||
 					(len(table.WinnerOrder) > 0 && strings.Contains(k,"总报价") && len(vsss) == len(table.WinnerOrder)){
 					kv := ""
-					if winMoneyReg.MatchString(k) {
+					if winMoneyReg.MatchString(k) && !winNoMoneyReg.MatchString(k) {
 						kv = "中标金额"
 					} else {
 						kt := u.GetTags(k, isSite, codeSite)
@@ -2264,6 +2264,25 @@ func (tn *Table) CheckMultiPackageByTable(isSite bool, codeSite string) (b bool,
 
 						}
 
+					}else { //新增 - 特殊情况 - 查找sortKV - 预算
+						for k,v := range tn.SortKV.Map {
+							if strings.Contains(k,"预算") {
+								if vs, ok := v.([]string); ok {
+									if len(index)==len(vs)  {
+										moneys := clear.ObjToMoney([]interface{}{vs[nk], ""})
+										if len(moneys) > 0 {
+											if vf, ok := moneys[0].(float64); ok {
+												bp.Budget = vf
+												bp.IsTrueBudget = moneys[len(moneys)-1].(bool)
+											} else if vi, ok := moneys[0].(int); ok {
+												bp.Budget = float64(vi)
+												bp.IsTrueBudget = moneys[len(moneys)-1].(bool)
+											}
+										}
+									}
+								}
+							}
+						}
 					}
 					tn.BlockPackage.AddKey(v, bp) //table子包数组
 				}

+ 5 - 0
src/jy/pretreated/division.go

@@ -125,6 +125,9 @@ var (
 	untitleReg  = regexp.MustCompile("(技术评分明细表)")
     unpriceReg =  regexp.MustCompile("^([Xx]\\+[1-9\\.]+元/每)")
 
+	//敏感词-影响分包-替换-分割
+	replaceSenstiveReg1 = regexp.MustCompile("([一二三四五六七八九十1-9][、]项目名称[::].*采购项目)([一二三四五六七八九十1-9][、]采购结果)")
+
 )
 
 //分块
@@ -772,7 +775,9 @@ func FindPackageFromText(title string, content string, isSite bool, codeSite str
 
 //分块之后分包
 func divisionPackageChild(blockPackage *map[string]*util.BlockPackage, content, title string, isFindWinnerOrder, accuracy bool, isSite bool, codeSite string) (bool, string) {
+
 	//查找知否有分包
+	content  = replaceSenstiveReg1.ReplaceAllString(content,"$1\n$2")
 	content = regFJWarap.ReplaceAllString(content, "\n")
 	content = regAZWarap.ReplaceAllString(content, "\n")
 	content = regStrWrap.ReplaceAllString(content, "\n")

+ 5 - 0
src/jy/pretreated/multipackage.go

@@ -55,6 +55,11 @@ func CheckMultiPackage(con string) (content string, m map[string][]string, b boo
 	con = PreCon.ReplaceAllString(con, "\n")
 	con = PreCon2.ReplaceAllString(con, "")
 	con = PreCon3.ReplaceAllString(con, "${1}:")
+
+	//替换敏感词-分割
+	con  = replaceSenstiveReg1.ReplaceAllString(con,"$1\n$2")
+
+
 	//修改 \nX标段
 	res := MultiReg.FindAllStringSubmatch(con, -1)
 	if len(res) > 0 {

+ 6 - 10
src/main.go

@@ -69,22 +69,18 @@ func main() {
 
 	//临时调试
 	//testMain()
-
-
-
 	lock := make(chan bool)
 	<-lock
 }
 
 //验证规则
 func testMain()  {
-	text :=`第一名深信服科技股份有限公司,报价1853900.00元,综合得分99.20分。
-第二名北京神州新桥科技有限公司,报价2050600.00元,综合得分78.12分。
-第三名广州市品高软件股份公司,报价4780000.00万元,综合得分72.24分。`
-	var winnerReg6     = regexp.MustCompile("(^(排名)?(第[一二三四五六七八九十1-9]+[名中标成交备选候人单位供应商]*|[中标成交备选候人单位供应商]*[第|弟][一二三四五六七八九十1-9]名))")
-	if winnerReg6.MatchString(text) {
-		aaa := winnerReg6.FindString(text)
-		log.Debug(aaa)
+	text :=`二、项目名称:龙岩市自然资源局龙岩市不动产交易登记一体化平台建设服务类采购项目三、采购结果  [350800]LYCG[GK]2021867-1 包1
+`
+	var aaaaa  = regexp.MustCompile("([一二三四五六七八九十1-9][、]项目名称[::].*采购项目)([一二三四五六七八九十1-9][、]采购结果)")
+	if aaaaa.MatchString(text) {
+		text  = aaaaa.ReplaceAllString(text,"$1\n$2")
+		log.Debug(text)
 	}else {
 		log.Debug("不匹配")
 	}

+ 3 - 3
src/res/fieldscore.json

@@ -214,7 +214,7 @@
             },
             {
                 "describe": "黑名单",
-                "regstr": "(^.{0,4}$|T及分公司|大厦[0-9]+室|东侧路面拓宽|、技术研发中心|钢芯铝绞线)",
+                "regstr": "(^.{0,4}$|T及分公司|大厦[0-9]+室|东侧路面拓宽|招标投标交易平台|截止之前|、技术研发中心|钢芯铝绞线)",
                 "score": -50
             }
         ],
@@ -259,7 +259,7 @@
             },{
                 "describe": "多个公司",
                 "regstr": "(.*公司[;,,;、]){3,}",
-                "score": 5
+                "score": 3
             }
         ],
         "negativewords": [
@@ -343,7 +343,7 @@
             },
             {
                 "describe": "黑名单",
-                "regstr": "(集中代理采购|竞争性谈判|“组组通”工程|提交一份公司|公司组织的|[((]章[))]$|^.{0,4}$)",
+                "regstr": "(集中代理采购|招标投标交易平台|竞争性谈判|“组组通”工程|提交一份公司|公司组织的|[((]章[))]$|^.{0,4}$)",
                 "score": -50
             }
         ],

+ 3 - 1
src/res/tablev1.json

@@ -45,7 +45,9 @@
 		"供应商",
 		"详见附件及谈判、报价文件",
 		"折扣系数",
-		"合同期限"
+		"合同期限",
+		"委托方",
+		"项目所在地"
 	],
 	"con":[
 		"(是否通过资格|比例|评分结果|中标金额|质量目标|安全目标|承诺工期|推荐顺序|参考对象|工程质量$|工期[((]交货期[))]|合作伙伴|(包名|中标(候选人|供应商).{0,5}|第[一二三四五六七八九十]+中标候选人)[::]?[\\s]*)__M",