影刀RPA 知识图谱可视化:数据关系的自动发现与展示

📅 发布时间:2026/7/21 8:50:38
影刀RPA 知识图谱可视化:数据关系的自动发现与展示 影刀RPA 知识图谱可视化数据关系的自动发现与展示作者林焱什么情况用什么数据分析师经常面对这个问题“A公司和B公司有什么关系”“张三是哪些公司的股东”这笔交易经过了多少层关联方这些关系隐藏在工商数据、股权结构、交易记录里人工梳理一个企业的关系网络可能要一整天。影刀RPANeo4j的组合采集关系数据 → 构建知识图谱 → 用Python做可视化。适合企业尽调、关联交易识别、供应链溯源等场景。怎么做拼多多店群自动化报活动上架第一步采集关系数据企业工商数据天眼查/企查查1. 【打开网页】打开天眼查 2. 【填写】搜索框输入企业名称 3. 【点击】搜索 4. 【点击】股东信息标签 5. 【获取文本】抓取股东名称、持股比例 6. 【循环】点击每个股东 → 查看其对外投资 → 继续展开交易关系数据1. 【连接数据库】读取ERP/财务系统的交易记录 2. 【执行SQL】SELECT 采购方, 销售方 FROM 交易表 WHERE 年份 2026 3. 【读取结果】存入变量第二步构建Neo4j知识图谱fromneo4jimportGraphDatabase uribolt://localhost:7687driverGraphDatabase.driver(uri,auth(neo4j,password))defcreate_company(tx,name,props{}):tx.run(MERGE (c:Company {name: $name}) SET c $props,namename,propsprops)defcreate_person(tx,name,props{}):tx.run(MERGE (p:Person {name: $name}) SET p $props,namename,propsprops)defcreate_relation(tx,from_entity,to_entity,rel_type,props{}):queryf MATCH (a {{name: $from}}), (b {{name: $to}}) MERGE (a)-[r:{rel_type}]-(b) SET r $props tx.run(query,fromfrom_entity,toto_entity,propsprops)# 批量导入关系withdriver.session()assession:# 导入企业节点forcompanyincompanies:session.execute_write(create_company,company[name],company)# 导入人物节点forpersoninshareholders:session.execute_write(create_person,person[name])# 导入持股关系forrelinshareholding_rels:session.execute_write(create_relation,rel[from],rel[to],持股,{比例:rel[ratio],金额:rel[amount]})第三步关系查询与分析deffind_indirect_relations(tx,entity_name,max_depth3):查找间接关联路径queryf MATCH path (start {{name: $name}})-[*1..{max_depth}]-(end) WHERE start end RETURN path LIMIT 100 resulttx.run(query,nameentity_name)return[record[path]forrecordinresult]deffind_common_shareholders(tx,company_a,company_b):找共同股东query MATCH (p:Person)-[:持股]-(a:Company {name: $a}) MATCH (p)-[:持股]-(b:Company {name: $b}) RETURN p.name AS 股东, p resulttx.run(query,acompany_a,bcompany_b)return[record[股东]forrecordinresult]defdetect_circular_ownership(tx):检测循环持股query MATCH path (c:Company)-[:持股*2..5]-(c) RETURN path returnlist(tx.run(query))第四步可视化importnetworkxasnximportmatplotlib.pyplotasplt# 从Neo4j查询结果构建NetworkX图Gnx.DiGraph()withdriver.session()assession:resultsession.run( MATCH (n)-[r:持股]-(m) RETURN n.name, m.name, r.比例 )forrecordinresult:G.add_edge(record[n.name],record[m.name],weightfloat(record[r.比例]))# 按社区着色fromnetworkx.algorithmsimportcommunity communitiescommunity.greedy_modularity_communities(G.to_undirected())color_map{}fori,comminenumerate(communities):fornodeincomm:color_map[node]i plt.figure(figsize(16,12))posnx.spring_layout(G,k2,iterations50)nx.draw(G,pos,node_color[color_map.get(n,0)forninG.nodes()],node_size[G.degree(n)*200forninG.nodes()],with_labelsTrue,font_size8,cmapplt.cm.tab20)plt.title(企业关联关系图谱)plt.savefig(rD:\reports\knowledge_graph.png,dpi200,bbox_inchestight)有什么坑坑1数据量爆炸从一家公司展开三级关联可能涉及上千个节点。查询和可视化都会很慢。加深度限制max_depth3和节点数上限。TEMU店群矩阵自动化运营核价报活动坑2同名实体混淆张三可能是三个不同的人。需要额外的区分字段身份证号、出生年份否则图谱中会错误合并。坑3Neo4j社区版限制Neo4j社区版只支持单数据库多项目公用一个实例容易数据混乱。用不同的label前缀区分项目。坑4图谱可视化节点太多超过200个节点的图可视化出来就是一团黑。用交互式可视化pyvis、ECharts比静态图效果好frompyvis.networkimportNetwork netNetwork(height800px,width100%,notebookFalse)fornodeinG.nodes():net.add_node(node,labelnode)foredgeinG.edges():net.add_edge(edge[0],edge[1])net.show(graph.html)总结知识图谱的核心价值在发现隐藏关系——A公司和B公司表面没关系但穿透三层后发现是同一实控人。RPA负责数据采集Neo4j负责关系计算最终输出一目了然的可视化图谱。