目录

An Improved Patent Similarity Measurement

Citation Information

Xin An, Jinghong Li, Shuo Xu, Liang Chen, and Wei Sun, 2021. An Improved Patent Similarity Measurement based on Entities and Semantic Relations. Journal of Informetrics, Vol. 15, No. 2, pp. 101135.

Requirements

安装好模块后,进入python环境,下载wordnet资源:

> import nltk
> nltk.download('wordnet')
> nltk.download("wordnet_ic")

Content Tree

code_review:
├─ TFH_Annotated_Dataset
│ ├─ 4036723.ann
│ ├─ 4036723.txt
│ ├─ 4040113.ann
│ ├─ 4040113.txt
│ ├─ …
│ └─ …
├─ gen_similarity_matrix.py
├─ gen_similarity_score.py
├─ gen_weight.py
├─ save_ERE.py
├─ ot.c
├─ ot.m
├─ ot_mex.c
├─ ot_mex.mexw64
├─ word_sim_dict.pickle
└─ readme.md

Data Source

测试数据来源:https://github.com/awesome-patent-mining/TFH_Annotated_Dataset

该数据集来自硬盘驱动器领域的薄膜磁头子领域,总共包含1010个相关专利的标题摘要(.txt)及其相应的标注信息(.ann)。

下载以上数据,并保存在TFH_Annotated_Dataset文件夹下,下面将根据论文所提出的方法计算数据集专利之间的相似度。

Data Processing

Step 1: 数据预处理

运行文件save_ERE.py在原始文件中读取序列结构并保存,该步骤生成两个文件ERE.jsonpatent_list.json,前者保存了序列结构信息,后者保存了专利代码信息。

> python ./save_ERE.py

Step 2: 计算专利相似度矩阵

运行文件gen_similaity_matrix.py计算两两专利之间序列结构的相似性矩阵,并保存在similarity_matrix文件夹下(该文件夹下的文件以专利代码命名,保存该专利与其他所有专利的相似度矩阵信息)

python ./gen_similarity_matrix.py

Note:
1)根据序列结构的关系确定语义方向,并修改gen_similarity_matrix.py文件中的一下语句:

if __name__ == "__main__":
    ...
    # 本数据集中关系对应的语义方向
    underection = ['Spatial', 'Alias', 'Comparison', 'Others']
    left = ["PartOf", "Causitive", "Oper", "MadeOf", "Attr", "Generate", "Purpose", "Manner", "Measurement"]
    right = ["Form", "InstanceOf"]
    ...

2)每两个单词之间的相似度都是基于WordNet计算而得,而通过API频繁调用WordNet会导致程序计算效率低下,因此用word_sim_dict.pickle文件记录已经计算过的单词之间的相似度。该数据集第一次运行程序时,计算1010个专利两两之间的相似度矩阵大约需要四五天时间,当把所有需要通过WordNet比较的单词相似度记录下来后,只要不修改WordNet的设定,以后重跑时可以直接读取单词的相似度,只需花费几小时即可。

Step 3: 计算序列结构权重

运行文件gen_weight.py以计算每个专利各个序列结构的权重,生成权重文件ERE_weight_dict.json

python ./gen_weight.py

Step 4: 计算专利相似度

运行文件gen_similarity_score.py计算专利相似度,结果保存在similarity_weighted.xlsx以及similarity_nonweighted.xlsx文件中,前者基于Step 3的权重,后者基于相同权重。

python ./gen_similarity_score.py

Note: 此处采用的最优运输问题算法是基于 Matlab 和 C 语言写的(ot.c, ot.m, ot_mex.c, ot_mex.mexw64),该步骤只是通过 Python 调用 Matlab API,因此确保电脑装有Matlab2018b以上版本,并设置好相应的环境,可参考:https://zhuanlan.zhihu.com/p/47655091

该数据集该步骤会花费大约十个小时。