wcj преди 6 години
родител
ревизия
a0230d8f9e
променени са 4 файла, в които са добавени 28 реда и са изтрити 31 реда
  1. 22 24
      src/jy/extract/extract.go
  2. 3 3
      src/jy/pretreated/analytable.go
  3. 1 2
      src/jy/pretreated/colonkv.go
  4. 2 2
      src/res/fieldscore.json

+ 22 - 24
src/jy/extract/extract.go

@@ -385,36 +385,34 @@ func (e *ExtractTask) ExtractDetail(j *ju.Job) {
 				ExtRuleCore(tmp, e, vc, j)
 				// log.Debug("抽取-规则", tmp)
 
+				//抽取-后置规则
+				for _, v := range vc.RuleBacks {
+					ExtRegBack(j, v, e.TaskInfo)
+				}
+				// log.Debug("抽取-后置规则", tmp)
+
 				//项目名称未能抽取到,标题来凑
 				if vc.Field == "projectname" && vc.ExtFrom == "title" {
-					//if len(j.Result[vc.Field]) < 1 {//如果抽取有结果,不走标题。待验证,暂时标题加入选举逻辑
-					field := &ju.ExtField{Field: vc.Field, Code: vc.Id + "_title", RuleText: "title", Type: "title", MatchType: "title", ExtFrom: vc.ExtFrom, SourceValue: j.Title, Value: j.Title}
-					if tmp["blocktag"] != nil {
-						btag := make(map[string]string)
-						for k := range tmp["blocktag"].(map[string]bool) {
-							blocktag.Lock()
-							btag[k] = TagConfigDesc[k]
-							blocktag.Unlock()
+					isextitle := true
+					for _, v := range j.Result[vc.Field] {
+						if len([]rune(qu.ObjToString(v.Value))) > 5 {
+							isextitle = false
+							break
 						}
-						field.BlockTag = btag
 					}
-					j.Result[vc.Field] = append(j.Result[vc.Field], field)
-					//}
-				}
-
-				//抽取-后置规则
-				for i := 0; i < 3; i++ {
-					for _, v := range vc.RuleBacks {
-						ExtRegBack(j, v, e.TaskInfo)
+					if isextitle { //标题加入选举
+						field := &ju.ExtField{Field: vc.Field, Code: vc.Id + "_title", RuleText: "title", Type: "title", MatchType: "title", ExtFrom: vc.ExtFrom, SourceValue: j.Title, Value: j.Title}
+						j.Result[vc.Field] = append(j.Result[vc.Field], field)
+					}
+					for i := 0; i < 3; i++ {
+						for _, v := range vc.RuleBacks {
+							ExtRegBack(j, v, e.TaskInfo)
+						}
 					}
 				}
-				// log.Debug("抽取-后置规则", tmp)
 			}
 		}
 
-		//for _, vvc := range j.Result["budget"] {
-		//log.Debug("-----", fmt.Sprintf("%+v", vvc))
-		//}
 		//全局后置规则
 		for _, v := range e.RuleBacks {
 			ExtRegBack(j, v, e.TaskInfo)
@@ -787,7 +785,7 @@ func extRegCoreToResult(extfrom, text string, tag *map[string]string, j *ju.Job,
 						"field":     v.Field,
 						"code":      v.Code,
 						"ruletext":  v.RuleText,
-						"extfrom":   extfrom,
+						"extfrom":   text,
 						"value":     val,
 						"type":      "regexp",
 						"matchtype": "regcontent",
@@ -824,7 +822,7 @@ func extRegCoreToResult(extfrom, text string, tag *map[string]string, j *ju.Job,
 								"field":     v.Field,
 								"code":      v.Code,
 								"ruletext":  regArr[0],
-								"extfrom":   extfrom,
+								"extfrom":   text,
 								"value":     value,
 								"type":      "regexp",
 								"matchtype": "regcontent",
@@ -860,7 +858,7 @@ func extRegCoreToResult(extfrom, text string, tag *map[string]string, j *ju.Job,
 				"field":     v.Field,
 				"code":      v.Code,
 				"ruletext":  v.RuleText,
-				"extfrom":   extfrom,
+				"extfrom":   text,
 				"value":     val,
 				"type":      "regexp",
 				"matchtype": "regcontent",

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

@@ -93,7 +93,7 @@ var (
 	projectnameReg = regexp.MustCompile("((公开)?招标)*[((第]*[一二三四五六七八九十a-zA-Z0-9]+(标段|包|标|段)[))]*$")
 	MhSpilt        = regexp.MustCompile("[::]")
 	//识别采购单位联系人、联系电话、代理机构联系人、联系电话
-	ContactInfoVagueReg = regexp.MustCompile("邮政编码|邮编|(征求意见|报名审核购买)?((联系人?|办公)?((电话([//]传真)?|手机)(号码)?|邮箱(地址)?|(地(址|点)))|(联系|收料)(人(姓名)?|方式)|传真|电子邮件|(主要负责|项目(负责|联系)|(项目)?经办)人)|采购方代表")
+	ContactInfoVagueReg = regexp.MustCompile("邮政编码|邮编|(征求意见|报名审核购买)?((联系人?(及|和)?|办公)?((电话([//]传真)?|手机)(号码)?|邮箱(地址)?|(地(址|点)))|(联系|收料)(人(姓名)?|方式)|传真|电子邮件|(主要负责|项目(负责|联系)|(项目)?经办)人)|采购方代表")
 	ContactInfoMustReg  = regexp.MustCompile("^(" + ContactInfoVagueReg.String() + ")$")
 	ContactType         = map[string]*regexp.Regexp{
 		"采购单位": regexp.MustCompile("(采购(项目.{2}|服务)?|比选|询价|发布人?|甲|招标(服务)?|建设|委托|发包|业主|使用|谈判|本招标项目经办|征求意见联系|项目实施)(人|单位|部门|机构|机关|(执行)?方)|(项目|建(库|设))单位|招标人信息|采购中心地址|业主|收料人"),
@@ -112,7 +112,7 @@ var (
 	projectcodeReg3             = regexp.MustCompile("(^询价单编号[A-Za-z0-9/-]*|公告编号[A-Za-z0-9/-]*)")
 	jsonReg                     = regexp.MustCompile(`\{.+:[^}]*\} `) //  \{".*\":\".+\"}
 	regHz                       = regexp.MustCompile("[\u4e00-\u9fa5]")
-	winnerOrerReg               = regexp.MustCompile("(中标)?候选人")
+	winnerOrderAndBidResult     = regexp.MustCompile("((中标)?候选人|(中标|评标)结果)")
 )
 
 //在解析时,判断表格元素是否隐藏
@@ -161,7 +161,7 @@ func CommonDataAnaly(k, tabletag, tabledesc string, v interface{}) (kvTags map[s
 			if MhSpilt.MatchString(v1) {
 				t1.Weight -= 50
 			}
-			if winnerOrerReg.MatchString(tabletag) && t1.Value == "采购单位联系人" { //处理table中项目负责人
+			if winnerOrderAndBidResult.MatchString(tabletag) && t1.Value == "采购单位联系人" { //处理table中项目负责人
 				kvTags[k] = append(kvTags[k], &u.Tag{Key: k, Value: v1, IsInvalid: true})
 			} else {
 				kvTags[t1.Value] = append(kvTags[t1.Value], &u.Tag{Key: k1, Value: v1, Weight: t1.Weight})

+ 1 - 2
src/jy/pretreated/colonkv.go

@@ -611,7 +611,7 @@ func FormatContactKv(kvs *[]*Kv, title string, buyers []string, contactFormat *C
 func ContactTypeTitleMatch(title string) []string {
 	matchType := []string{}
 	matchTypeMap := map[string]bool{}
-	if title != "" && len([]rune(title)) < 15 {
+	if title != "" && len([]rune(title)) < 25 {
 		if ContactBuyerTitleReg.MatchString(title) {
 			matchType = append(matchType, "采购单位")
 			matchTypeMap["采购单位"] = true
@@ -731,7 +731,6 @@ func GetKvTags(findkvs []*Kv, title string, tagdbs []string) map[string][]*Tag {
 		k, val, nextval := findkv.Key, strings.TrimSpace(findkv.Value), strings.TrimSpace(findkv.NextLine)
 		//val是空的话,不打标签
 		if filterValue.MatchString(val) {
-			log.Println(k, val)
 			continue
 		}
 		key := k

+ 2 - 2
src/res/fieldscore.json

@@ -122,14 +122,14 @@
         "positivewords": [
             {
                 "describe": "以*结尾",
-                "regstr": ".{2,100}(委员会|办公室|幼儿园|动物园|图书馆|殡仪馆|博物馆|基地|青年宫|少年宫|艺术宫|电视台|中心|协会|公司|政府|初中|集团|银行|[大中小]学|部|院|局|厂|店|所|队|社|室|厅|段|会|场)$",
+                "regstr": ".{2,100}(委员会|办公室|幼儿园|动物园|管理站|图书馆|殡仪馆|博物馆|基地|青年宫|少年宫|艺术宫|电视台|中心|协会|公司|政府|初中|集团|银行|[大中小]学|部|院|局|厂|店|所|队|社|室|厅|段|会|场)$",
                 "score": 3
             }
         ],
         "negativewords": [
             {
                 "describe": "包含负分",
-                "regstr": "(附件|招标失败|采购中心|交易中心|不足|公告|变更|招标|废标|废止|流标|中标|投标|评标|开标|供应商|金额|万元|元整|预算|报价|单价|第(\\d|一|二|三|四|五)(名|包)|排名|候选|确定|标段|(标|一|二|三|四|五)包|中选|成交|包号|(A|B|C|D|E|F|G)包|地址|详情|要求|推荐|名称|评审|得分|合同|平方米|公示期|结果|备注|说明|单位|代表|委托|工作日|营业(执|期)|通过|代码|电话|联系|条件|合理|费率|以上|以下|拟定|为|注:|\\d[\\s]{0,10}(\\.|元|包|米|平米|平方米|吨|辆|千克|克|毫克|毫升|公升|套|件|瓶|箱|只|台|年|月|日|天|号)|(:|:|;|;|?|¥|\\*|%)|^[a-zA-Z0-9-]{5,100}|^[a-zA-Z0-9-]{1,100}$|[a-zA-Z0-9-]{10,100})",
+                "regstr": "(附件|咨询|管理顾问|招标失败|采购中心|交易中心|不足|公告|变更|招标|废标|废止|流标|中标|投标|评标|开标|供应商|金额|万元|元整|预算|报价|单价|第(\\d|一|二|三|四|五)(名|包)|排名|候选|确定|标段|(标|一|二|三|四|五)包|中选|成交|包号|(A|B|C|D|E|F|G)包|地址|详情|要求|推荐|名称|评审|得分|合同|平方米|公示期|结果|备注|说明|单位|代表|委托|工作日|营业(执|期)|通过|代码|电话|联系|条件|合理|费率|以上|以下|拟定|为|注:|\\d[\\s]{0,10}(\\.|元|包|米|平米|平方米|吨|辆|千克|克|毫克|毫升|公升|套|件|瓶|箱|只|台|年|月|日|天|号)|(:|:|;|;|?|¥|\\*|%)|^[a-zA-Z0-9-]{5,100}|^[a-zA-Z0-9-]{1,100}$|[a-zA-Z0-9-]{10,100})",
                 "score": -5
             }
         ],