基于专利合作地址匹配的数据构建区域协同矩阵

news2025/4/4 17:13:23

文章目录

    • 地区地址提取
    • 完成的处理代码

在专利合作申请表中,有多家公司合作申请。在专利权人地址中, 有多个公司的地址信息。故想利用这里多个地址。想用这里的地址来代表区域之间的专利合作情况代表区域之间的协同、协作情况。

下图是专利合作表的一部分:

image-20250227200812529

最终的结果:

image-20250227201838199

假设在一个专利的地址中,有1家成都公司,1家武汉公司,2家北京公司:

成都市,武汉市,北京市,北京市

首先计算这些区域两两合作的关系:

import pandas as pd
from itertools import permutations
from collections import Counter
d = Counter(list(permutations(["成都市", "武汉市", "北京市", "北京市"], r=2)))
d

输出:

Counter({('成都市', '北京市'): 2,
         ('武汉市', '北京市'): 2,
         ('北京市', '成都市'): 2,
         ('北京市', '武汉市'): 2,
         ('北京市', '北京市'): 2,
         ('成都市', '武汉市'): 1,
         ('武汉市', '成都市'): 1})
rows = []
cols = []
values = []

for k, v in d.items():
    row, col = k
    rows.append(row)
    cols.append(col)
    values.append(v)
        
demo_matrix = pd.DataFrame(
    {
        "row": rows,
        "col": cols,
        "value": values,
    }
)
demo_df = demo_matrix.pivot(index="row", columns="col", values="value")
demo_df.fillna(0, inplace=True)
demo_df

输出:

image-20250227202716646

上述只是使用了一个专利合作地址构建的合作矩阵。特意选取了其中有多个同一个地区的例子进行展示。如上述例子中,同一个专利中有两家北京的企业,那么 北京-北京 的权重是2。代表了这个区域内部的合作关系。

地区地址提取

从专利的地址中,提取出省市信息。
最开始想的是写一个正则表达式,提取省市区,但是后面发现这不可行,因为会有自治区、省道,这些特殊名称的干扰。

为了达到比较高的准确率,我收集了全国66万个行政区划代码表,在其中逐个与专利的地址逐个对应。通过这种方式可以保证比较高的准确率。

image-20250227203734452

由于本次使用省与市的地址,使用下述代码筛选出只有省和市的数据,筛选代码如下:

address_df = pd.read_csv("66万个全国各级行政区划代码表.csv")
def is_str(item):
    return isinstance(item, str) and len(item) > 0
idxs = (
    (address_df["1"].apply(is_str))
    & (address_df["2"].apply(is_str))
    & (~address_df["3"].apply(is_str))
)
address_filter_df = address_df[idxs]
address_filter_df = address_filter_df.drop(columns=["3", "4", "5"])
address_filter_df = address_filter_df.rename(columns={"1": "prov", "2": "city"})

下图展示全国342个市级单位:

address_filter_df.head(), address_filter_df.shape

image-20250227203959220

完成的处理代码

处理整个表格的时候,把所有专利的区域合作次数加起来的代码如下:

加载专利合作表:

def split_address(text):
    if not isinstance(text, str):
        return []
    text = re.split(";", text)
    text = [item.strip() for item in text if len(item.strip()) > 0]
    return text


address1 = "当前专利权人地址"
address2 = "工商注册地址"

df = pd.read_excel("20250212合作申请.xlsx")

下述代码实现了,从专利地址中抽取出省市信息:

def extract_address(df, address) -> Dict:
    # 首先是直辖市判断
    Four_Municipality = ["北京市", "上海市", "天津市", "重庆市"]

    for item in Four_Municipality:
        if item in address:
            return {"prov": item, "city": ""}

    for _, row in df.iterrows():
        prov = row["prov"]
        city = row["city"]

        if prov in address and city in address:
            return {"prov": prov, "city": city}

    print(f"error not find prov and city, {address}")
    return None

利用抽取出的省、市,构建矩阵:

def build_marix(attr_name):
    addresses = df[address1].map(split_address).tolist()
    ans = {}
    for row_address in addresses:
        row_address_parse = []
        for address in row_address:
            address_parse = extract_address(address_filter_df, address)
            if address_parse is None:
                continue
            row_address_parse.append(address_parse)

        row_address_parse = [
            tmp["prov"] + " " + tmp["city"] for tmp in row_address_parse
        ]
        row_address_cnt = Counter(list(permutations(row_address_parse, r=2)))

        for k, v in row_address_cnt.items():
            if k not in ans.keys():
                ans[k] = 0
            ans[k] += v

    rows = []
    cols = []
    values = []

    for k, v in ans.items():
        row, col = k
        rows.append(row)
        cols.append(col)
        values.append(v)

    df_matrix = pd.DataFrame(
        {
            "row": rows,
            "col": cols,
            "value": values,
        }
    )

    pivot_df = df_matrix.pivot(index="row", columns="col", values="value")
    pivot_df.fillna(0, inplace=True)
    pivot_df.to_excel(f"{attr_name}.xlsx")

项目文件夹的内容如下:

image-20250227204945954

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2309133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0x02 js、Vue、Ajax

文章目录 js核心概念js脚本引入html的方式基础语法事件监听 Vuevue简介v-forv-bindv-if&v-showv-model&v-on Ajax js 核心概念 JavaScript:是一门跨平台、面向对象的脚本语言,用来控制网页行为实现交互效果,由ECMAScript、BOM、DOM…

IDEA 使用codeGPT+deepseek

一、环境准备 1、IDEA 版本要求 安装之前确保 IDEA 处于 2023.x 及以上的较新版本。 2、Python 环境 安装 Python 3.8 或更高版本 为了确保 DeepSeek 助手能够顺利运行,您需要在操作系统中预先配置 Python 环境。具体来说,您需要安装 Python 3.8 或更高…

Linux笔记---一切皆文件

1. 含义 “一切皆文件”是 Linux 对系统资源的高度抽象,通过文件接口屏蔽底层差异,提供了简洁、一致的操作方式。这种设计降低了系统复杂性,使得工具、脚本和应用程序能够以统一模式处理多样化资源,是 Linux 强大灵活性的重要基石…

DeepSeek开源周,第五弹再次来袭,3FS

Fire-Flyer 文件系统(3FS)总结: 一、核心特点 3FS 是一个专为 AI 训练和推理工作负载设计的高性能分布式文件系统,利用现代 SSD 和 RDMA 网络,提供共享存储层,简化分布式应用开发。其主要特点包括&#xf…

【音视频】VLC播放器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 一、vlc是什么? VLC Media Player(简称VLC)是一款免费、开源、跨平台的多媒体播放器,由非营利组织VideoLAN开发,最…

【软件测试】_使用selenium进行自动化测试示例

目录 1. 导入依赖 2. 使用selenium编写测试代码 3. 运行结果 4. 关于浏览器驱动管理及浏览器驱动配置 创建一个空项目用于进行selenium的自动化测试。 1. 导入依赖 <dependencies><!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager…

【清华大学】DeepSeek从入门到精通完整版pdf下载

DeepSeek从入门到精通.pdf 一共104页完整版 下载链接: https://pan.baidu.com/s/1-gnkTTD7EF2i_EKS5sx4vg?pwd1234 提取码: 1234 或 链接&#xff1a;https://pan.quark.cn/s/79118f5ab0fd 一、DeepSeek 概述 背景与定位 DeepSeek 的研发背景 核心功能与技术特点&#xff08…

题解 | 牛客周赛83 Java ABCDEF

目录 题目地址 做题情况 A 题 B 题 C 题 D 题 E 题 F 题 牛客竞赛主页 题目地址 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 做题情况 A 题 输出两个不是同一方位的字符中的任意一个就行 import java.io.*; import java.math.*; import java…

C语言(16)---------->二维数组

在学习二维数组之前&#xff0c;掌握一维数组是非常重要的。 对于一维数组的学习&#xff0c;读者可以参考我写过的博客&#xff1a; C语言&#xff08;15&#xff09;--------------&#xff1e;一维数组-CSDN博客 这里面由浅入深地介绍了C语言中一维数组的使用。 一、二维…

【计算机网络基础】-------计算机网络概念

1.什么是计算机网络 定义&#xff1a; 图解&#xff1a; 2.最简单的计算机网络 其中&#xff1a; 结点可以是计算机、集线器、交换机、路由器等链路可以是有线链路、无线链路 2.1集线器 2.2交换机 3.互连网&#xff08;internet&#xff09;与 路由器 路由器 与 家用路由…

C++实现3D(EasyX)详细教程

一、关于3D 我们看见&#xff0c;这两个三角形是相似的&#xff0c;因此计算很简单 若相对物体的方向是斜的&#xff0c;计算三角函数即可 不会的看代码 二、EasyX简介 initgraph(长,宽) 打开绘图 或initgraph(长,宽…

Centos7部署k8s(单master节点安装)

单master节点部署k8s集群(Centos) 一、安装前准备 1、修改主机名 按照资源准备修改即可 # master01 hostnamectl set-hostname master01 ; bash # node1 hostnamectl set-hostname node1 ; bash # node2 hostnamectl set-hostname node2 ; bash2、修改hosts文件 以下命令所…

【C】链式二叉树算法题1 -- 单值二叉树

leetcode链接https://leetcode.cn/problems/univalued-binary-tree/description/ 1 题目描述 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1…

word转换为pdf后图片失真解决办法、高质量PDF转换方法

1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker &#xff08;1&#xff09;点击word选项卡上的Acrobat插件&#xff0c;&#xff08;2&#xff09;点击“首选项”按钮&#xff0c;&#xff08;3&#xff09;点击“高级配置”按钮&#xff08;4&#xff09;点…

蓝桥杯 灯笼大乱斗【算法赛】

问题描述 元宵佳节&#xff0c;一场别开生面的灯笼大赛热闹非凡。NN 位技艺精湛的灯笼师依次落座&#xff0c;每位师傅都有相应的资历值&#xff0c;其中第 ii 位师傅的资历值为 AiAi​。从左到右&#xff0c;师傅们的资历值逐级递增&#xff08;即 A1<A2<⋯<ANA1​&l…

【多模态大模型学习】位置编码的学习记录

【多模态大模型学习】位置编码的学习记录 0.前言1. sinusoidal编码1.0 数学知识——复数1.0.1 复数乘法、共轭复数1.0.2 复数的指数表示 1.1 sinusoidal编码来历1.2 代码实现 2. Rotary Positional Embedding (RoPE) ——旋转位置编码2.1 RoPE来历2.2 代码实现2.2.1 GPT-J风格的…

vector 面试点总结

ps&#xff1a;部分内容使用“AI”查询 一、入门 1、什么是vector 动态数组容器&#xff0c;支持自动扩容、随机访问和连续内存存储。 2、怎么创建-初始化vector std::vector<int> v; // 创建空vectorstd::vector<int> v {1, 2, 3}; // 直接初始化std::vec…

正式页面开发-登录注册页面

整体路由设计&#xff1a; 登录和注册的切换是切换组件或者是切换内容&#xff08;v-if和 v-else)&#xff0c;因为点击两个之间路径是没有变化的。也就是登录和注册共用同一个路由。登录是独立的一级路由。登录之后进到首页&#xff0c;有三个大模块&#xff1a;文章分类&…

Spring项目-抽奖系统(实操项目-用户管理接口)(END)

^__^ (oo)\______ (__)\ )\/\ ||----w | || || 一&#xff1a;前言&#xff1a; 活动创建及展示博客链接&#xff1a;Spring项目-抽奖系统(实操项目-用户管理接口)(THREE)-CSDN博客 上一次完成了活动的创建和活动的展示&#xff0c;接下来就是重头戏—…

Kafka面试题及原理

1. 消息可靠性&#xff08;不丢失&#xff09; 使用Kafka在消息的收发过程都会出现消息丢失&#xff0c;Kafka分别给出了解决方案 生产者发送消息到Brocker丢失消息在Brocker中存储丢失消费者从Brocker 幂等方案&#xff1a;【分布式锁、数据库锁&#xff08;悲观锁、乐观锁…