mongotest.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. '''
  2. Created on 2019年5月20日
  3. @author: User
  4. '''
  5. import re
  6. from .entityLink import *
  7. from BiddingKG.dl.common.Utils import *
  8. from BiddingKG.dl.infra.mongo import get_mongo_db
  9. from multiprocessing import Process
  10. def getData():
  11. # Phase 1: MongoDB URI 走环境变量 BIDDINGKG_MONGO_URI,不再硬编码
  12. # 原硬编码:mongodb://bxkc:bidizhaobiaowang2017@121.46.18.113:17017/bxkc
  13. db = get_mongo_db("bxkc")
  14. collection_enterprise = db['enterprise_profile']
  15. cursor = collection_enterprise.find({},{"enterprise_name":1}).limit(3000)
  16. list_entitys = []
  17. list_entitys_pair = []
  18. for row in cursor:
  19. entity_name = row["enterprise_name"]
  20. entity_name_sub = re.sub("(有限(责任)?公司|子公司|(政府)?采购中心)","",entity_name)
  21. list_entitys.append([entity_name,entity_name_sub])
  22. parts = 2
  23. nums = len(list_entitys)//20
  24. list_index = []
  25. for i in range(parts-1):
  26. list_index.append([i*nums,(i+1)*nums])
  27. list_index.append([(parts-1)*nums,len(list_entitys)])
  28. for item in list_index:
  29. proc = Process(target=process_thread,args=(list_entitys,item[0],item[1]))
  30. proc.start()
  31. def process_thread(list_entitys,index_begin,index_end):
  32. list_entitys_pair = []
  33. for i in range(index_begin,index_end):
  34. print(i)
  35. source = list_entitys[i]
  36. for j in range(i+1,len(list_entitys)):
  37. target = list_entitys[j]
  38. if edit_distance(source[0], target[0])<4 and jaccard_score(source[0], target[0])>0.6:
  39. list_entitys_pair.append([source[0],target[0]])
  40. for item in list_entitys_pair:
  41. print(item)
  42. save(list_entitys_pair,"list_entitys_pair_"+str(index_begin)+"_"+str(index_end)+".pk")
  43. if __name__=="__main__":
  44. getData()