Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

lsm 10 hónapja
szülő
commit
a0be325aa9

+ 1 - 1
.idea/misc.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_15" project-jdk-name="Python 3.5 (BiddingKG)" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_15" project-jdk-name="Python 3.7 (py37)" project-jdk-type="Python SDK" />
   <component name="PythonCompatibilityInspectionAdvertiser">
     <option name="version" value="3" />
   </component>

+ 67 - 3
BiddingKG/dl/interface/extract.py

@@ -43,7 +43,31 @@ class MyEncoder(json.JSONEncoder):
             return obj
         return json.JSONEncoder.default(self, obj)
 
-def extractCount(extract_dict):
+def get_login_web_set():
+
+    file = os.path.join(os.path.dirname(__file__),"login_weblist.txt")
+    list_web = []
+    try:
+        if os.path.exists(file):
+            with open(file,"r",encoding="utf8") as f:
+                while 1:
+                    line = f.readline()
+                    if not line:
+                        break
+                    line = line.strip()
+                    if line:
+                        list_web.append(line)
+
+    except Exception as e:
+        traceback.print_exc()
+    _set = set(list_web)
+    log("get_login_web_set length %d"%(len(_set)))
+    return _set
+
+set_login_web = get_login_web_set()
+
+
+def extractCount(extract_dict,page_attachments,web_source_name):
     # time_pattern = "\d{4}\-\d{2}\-\d{2}.*"
 
     if len(extract_dict):
@@ -113,6 +137,42 @@ def extractCount(extract_dict):
         extract_count += 1
     if project_name!="":
         extract_count += 1
+
+    if page_attachments is not None and page_attachments!='':
+        try:
+            _attachments = json.loads(page_attachments)
+            has_zhaobiao = False
+            has_qingdan = False
+            if len(_attachments)>0:
+                for _atta in _attachments:
+                    classification = _atta.get("classification","")
+                    if str(classification)=='招标文件':
+                        has_zhaobiao = True
+                    if str(classification)=='采购清单':
+                        has_qingdan = True
+            if has_zhaobiao:
+                extract_count += 3
+            if has_qingdan:
+                extract_count += 2
+        except Exception as e:
+            traceback.print_exc()
+            pass
+
+    list_approval_dict = _extract.get("approval",[])
+    for _dict in list_approval_dict:
+        for k,v in _dict.items():
+            if v is not None and v!='' and v!="未知":
+                extract_count += 1
+
+
+    punish_dict = _extract.get("punish",{})
+    for k,v in punish_dict.items():
+        if v is not None and v!='' and v!="未知":
+            extract_count += 1
+
+    if web_source_name in set_login_web:
+        extract_count -= 1
+
     return extract_count
 
 # 字符编码标准化
@@ -176,7 +236,7 @@ def repair_entity(prem,district_dict,list_articles):
                             role['role_text'] = city + role_text
 
 
-def predict(doc_id,text,title="",page_time="",web_source_no='',web_source_name="",original_docchannel='',**kwargs):
+def predict(doc_id,text,title="",page_time="",web_source_no='',web_source_name="",original_docchannel='',page_attachments='[]',**kwargs):
     cost_time = dict()
 
     start_time = time.time()
@@ -391,12 +451,16 @@ def predict(doc_id,text,title="",page_time="",web_source_no='',web_source_name="
     data_res["dict_enterprise"] = dict_enterprise
 
     # 要素的个数
-    data_res['extract_count'] = extractCount(data_res)
+    data_res['extract_count'] = extractCount(data_res,page_attachments,web_source_name)
     # 是否有表格
     data_res['exist_table'] = 1 if re.search("<td",text) else 0
     data_res["cost_time"] = cost_time
     data_res["success"] = True
 
+    # 拟在建需建索引字段
+    data_res["proportion"] = pb_json.get('pb').get('proportion', '')
+    data_res["pb_project_name"] = pb_json.get('pb').get('project_name_refind', '')
+
     # for _article in list_articles:
     #         log(_article.content)
     #

+ 115 - 0
BiddingKG/dl/interface/login_weblist.txt

@@ -0,0 +1,115 @@
+金采网
+隆道-大企业采购平台
+海尔招标网
+中国船舶采购管理电子商务平台
+睿采网
+江阴热电有限公司采购电子平台
+深圳市国深房地产开发有限公司招采平台
+优采云
+益和电气电子采购平台
+亚泰电子招标采购平台
+浙江大有集团招投标采购平台
+山西晋龙集团
+天能重工
+北京市政路桥集团(股份)有限公司招标采购平台
+物集港商城
+中国中化控股有限责任公司电子商务平台
+华招医药网
+河源市万信招标代理有限公司
+欧贝 - 工业品供应链生态平台
+中金岭南阳光采购平台
+东方希望数字化采购平台
+宁波市北仑区大碶博平小学
+西电集团电子采购平台
+聚拍网
+智采招标代理(天津)有限公司
+智采医用耗材信息网
+中国兵工物资集团有限公司电子商务平台
+四川省工程建设项目审批管理系统
+首采云数字化采购平台
+鞍钢现货交易平台
+山钢股份莱芜分公司电子采购平台
+中国电建设备物资集中采购平台
+优质采云采购平台
+特乐意建材电商交易平台
+织巢鸟
+河北普阳钢铁集团网上招标管理平台
+河钢供应链管理平台
+南方水泥招采平台
+航天电子采购平台
+供应链数字化管理平台
+四川省投资项目在线审批监管平台
+盈峰环境
+军队自采平台
+陕西鼓风机(集团)有限公司电子采购系统
+易采平台
+得力集团
+浑源县政府采购电子卖场
+铁建商城
+中国工程物理研究院招投标信息网
+山西省招标投标协会
+浙江保利置业阳光招采平台
+旺采网
+广东省教育系统采购竞价平台
+数字云采
+龙成集团电子招标平台
+友云采
+邯郸市邯钢附属企业公司
+中国硫酸网
+云南江东房地产集团有限公司
+珍药采购招标信息化管理平台
+大地阳光采购平台
+江苏省中医院投标平台
+福建省船舶工业集团公司采购平台
+渤化易采平台
+八戒公采
+云端采购网
+中国航发网上商城
+晋能控股电力集团
+四川玄同工程项目管理有限责任公司
+物联宝
+畅采通招标采购网
+广西保利置业阳光招采平台
+智慧工厂在线
+中复神鹰碳纤维有限责任公司
+云采网
+中国兵器废旧物资处置平台
+中电环保科技公司电子采购平台
+中南锦时招采平台
+浙江中医药大学
+丝路汇采
+中铁鲁班商务网
+津水云采
+中国电子科技集团有限公司电子采购平台
+中国巨石股份有限公司
+龙蟒集团
+中集集装箱电子采购协同平台
+城轨采购网
+中国铁路招标网
+中电环保电子采购平台电子采购平台
+工程众创云平台
+中国石油电子招标投标网
+浪潮爱购云
+福建建工分包与劳务管理平台
+金正大集团电子采购平台
+冠洲集团电子采购系统
+浙江云采购中心平台
+华新阳光采购平台
+苏州市宇杰工程技术服务咨询有限公司
+中储粮服务网
+中国华电集团电子商务平台
+招商局集团电子招标采购交易网
+中国制造网采购平台
+钜商网
+中车购
+中建鸿腾招标与采购平台
+U材U建平台
+山西华鑫电子采购平台
+深圳保利阳光招采平台
+渤商网
+厦门航空采购平台
+山东农商行集中采购管理系统
+湖北保利投资阳光招采平台
+山东省采购与招标网
+政采云
+中国招标投标公共服务平台

+ 10 - 6
BiddingKG/dl/proposed_building/pb_extract.py

@@ -133,11 +133,6 @@ class PBPredictor:
                     has_stage = 0
 
                 pb_json = {
-                    'tenderee': tenderee,
-                    'agency': agency,
-                    'project_code': project_code,
-                    'project_name': project_name,
-                    'doctitle': doctitle,
                     'stage': stage,
                     'industry': industry,
                     'proportion': proportion,
@@ -160,12 +155,21 @@ class PBPredictor:
                     'has_stage': has_stage,
                 }
 
+                # 值为None的key删掉
+                delete_keys = []
+                for key in pb_json.keys():
+                    if pb_json.get(key) in [None, "", 0.0, 0]:
+                        delete_keys.append(key)
+                for key in delete_keys:
+                    if key in pb_json.keys():
+                        pb_json.pop(key)
+
                 pb_json = {'pb': pb_json}
                 return pb_json
 
         except:
             traceback.print_exc()
-            return {'pb': 'error'}
+            return {'pb': {}}
 
 
 def extract_legal_stage(content, _pattern, priority_dict, product='', tenderee='', agency=''):

+ 2 - 1
BiddingKG/run_extract_server.py

@@ -81,11 +81,12 @@ def run_thread(data,list_result):
     web_source_no = data.get("web_source_no","")
     web_source_name = data.get("web_source_name","")
     original_docchannel = data.get("original_docchannel","")
+    page_attachments = data.get("page_attachments","")
     # print("web_source_name:",web_source_name)
     is_fail = False
     try:
         if _content!="":
-            data_res  = predict(_doc_id,_content,_title,_page_time,web_source_no=web_source_no,web_source_name=web_source_name,original_docchannel=original_docchannel)
+            data_res  = predict(_doc_id,_content,_title,_page_time,web_source_no=web_source_no,web_source_name=web_source_name,original_docchannel=original_docchannel,page_attachments=page_attachments)
         else:
             data_res = json.dumps({"success":False,"msg":"content not passed"})
             # is_fail = True