Git Product home page Git Product logo

officerresume_relationshipalgorithm's Introduction

文件说明

  • process.py:提供数据库连接、数据处理等方法。
  • init_weight:提供同乡、同学、同事关系权值的初始化方法。
  • graph_create.py:提供与关系发现及创建相关的方法。
  • graph_search.py:提供与关系及路径搜索相关的方法。
    以下仅提供部分文件中的函数方法说明,详细文档请参阅代码文件!

关系权值(代价值)初始化

在人物间的关系中保存的代价值是权值的倒数,代价值越小表明关系越大。本部分的算法包含在文件 init_weight.py 中,下面是对文件中各函数方法的解释(已忽略参数说明):

  • init_countrymen_cost():连接在同一'Location'节点上的两条'is_from'关系相当于一个同乡关系,在所有'is_from'关系中设置代价属性'cost',其值为5/(3type_int2)。其中type_int为同乡关系类型(1-10):**节点上的同乡关系类型为1,地区节点每往下一级关系类型加1,最大为10。
  • init_schoolfellow_cost():从MySQL获取数据,在所有'schoolfellow_with'关系中设置代价属性'cost',其值为5/(4*(1+ln(n))*(6-type_int))。其中n为同校年数,type_int为同学关系类型(1,2,3,4,5),1:表示同学院且同级,2:表示同学院不同级但时间有重叠,3:表示不同学院但同级,4:表示不同学院不同级但时间有重叠,5:表示同校的其他情况。
  • init_workmate_cost():从MySQL获取数据,在所有'workmate_with'关系中设置代价属性'cost',其值为(type_int+1)/(5*(1+ln(n)))。其中n为同校年数,type_int为同事关系类型(0-10),n:表示x是y的第n层上级,0:表示x与y是同一级别。

关系发现及创建

利用已构建的官员履历图数据发现人物之间的多种复杂关系,本部分的算法包含在文件 graph_create.py 中,下面是对文件中各函数方法的解释(已忽略参数说明):

  • 初始化创建关系

    • create_relationship():在图中创建关系,并可设置属性。
    • init_countrymen():(此方法已停用)在图中查找所有地点,将每个地点上的所有人物视为同乡,最后结果保存在关系型数据库中。在对应人物节点之间添加同乡关系并设置代价属性'cost',其值为5/(3type_int2)。type_int同乡关系类型(1-10):**节点上的同乡关系类型为1,地区节点每往下一级关系类型加1,最大为10。
    • init_schoolfellow():在图中查找所有学校节点(School),匹配连接到每个学校及其学院的学生教育经历,如果就读时间段存在重叠的就视为同学关系,学校可能包含多个学院(Academy),但只有在同一School中的学生才能算同学,最后结果保存在关系型数据库中。在对应人物节点之间添加同学关系并设置代价属性'cost',其值为5/(4*(1+ln(n))*(6-type_int)),其中n为同校年数。type_int同学关系类型(1,2,3,4,5),1:表示同学院且同级,2:表示同学院不同级但时间有重叠,3:表示不同学院但同级,4:表示不同学院不同级但时间有重叠,5:表示同校的其他情况。
    • init_workmate():在图中查找所有机构节点(Institution),匹配连接到这一机构所有职位的工作经历,机构节点下的顶级职位视为同一级,最后结果保存在关系型数据库中。在图中查找所有职位节点(Position),匹配连接到这一机构所有职位的工作经历,机构节点下的顶级职位视为同一级,最后结果保存在关系型数据库中。在对应人物节点之间添加同事关系并设置代价属性'cost',其值为(type_int+1)/(5*(1+ln(n))),其中n为同事年数。type_int同事关系类型(0-10),n:表示x是y的第n层上级,0:表示x与y是同一级别。双向关系只保存一条记录。
  • 增量创建关系

    • add_init():根据新增加的人物ID列表,对这些人的三种关系及其代价值进行增量计算(同乡关系已停用)。
    • create_one_countrymen():(此方法已停用)根据给定的人物节点node,在图中查找并建立他的同乡关系及其代价属性。
    • create_one_schoolfellow():根据给定的人物节点node,在图中查找并建立他的同学关系。
    • create_one_workmate():根据给定的人物节点node,在图中查找并建立他的复杂同事关系。

关系及路径搜索

在已构建的人物关系网络中搜索相关人物及其之间的级联关系路径,本部分的算法包含在文件 graph_search.py 中,下面是对文件中各函数方法的解释(已忽略参数说明):

  • 关系搜索

    • select_countrymen():在图中查找所有与目的人物具有同乡关系的人物ID。
    • select_schoolfellow():在图中中查找所有与目的人物具有校友关系的人物ID。
    • select_workmate():在图中中查找所有与目的人物具有同事关系的人物ID。
    • select_schoolfellow_multi():通过目标人物ID和目标学校ID,在图中查找该人物在该学校的多种校友关系。校友关系类型(1,2,3,4,5),1:表示同学院且同级,2:表示同学院不同级但时间有重叠,3:表示不同学院但同级,4:表示不同学院不同级但时间有重叠,5:表示同校的其他情况。
    • select_workmate_multi():通过目标人物ID和目标职位ID,在图中查找该人物的复杂同事关系。同事关系类型(0-10),n:表示x是y的第n层上级,0:表示x与y是同一级别。双向关系只保存一条记录。
  • 路径搜索

    • allShortestPaths():从图中查找两个目的节点之间的多条最短关系路径。
    • searchAndSave_allShortestPaths():从图中查找两个人物节点之间的多条最短关系路径,并将结果保存在MySQL数据库中。关系类型[0,7],0:其他关系类型,1:亲属关系,2:联系人关系,3:同事关系,4:同学关系,5:同乡关系,6:同行人关系,7:关联关系。保存的字符串中每个节点用‘,’隔开,若有多条路径则每条路径用‘;’隔开。
    • dijkstraWithDefaultWeight():从图中查找两个人物节点之间的最小代价关系路径。关系类型[0,7],0:其他关系类型,1:亲属关系,2:联系人关系,3:同事关系,4:同学关系,5:同乡关系,6:同行人关系,7:关联关系。返回的字符串中每个节点用‘,’隔开,若有多条路径则每条路径用‘;’隔开。

officerresume_relationshipalgorithm's People

Contributors

s-i-x avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.