Hello,Patent & Python!


专利信息,顾名思义,是一个“专利”与“信息”的交叉学科。往大了说,“专利”可归属于法律领域,而“信息”则归属于计算机领域,这两个领域本身就有极高的门槛,尤其是计算机领域的专业性极强,相比而言,专利知识反倒是更易于学习。

因此,有不少从计算机领域跨界到专利领域,而鲜有从专利领域跨界到计算机领域的。但是,随着高级编程语言的逐步普及,普通人学习编程的难度正在逐步降低。今天,笔者给各位读者介绍Python编程语言,以期帮助感兴趣的专利人士找到一条跨界捷径。

若宫雅子的故事

enter image description here

很多读者一谈到“编程”、“代码”、“程序员”等词汇,再看到花花绿绿的代码,还没开始学习就先打了退堂鼓,大学时代受“C语言”虐待的恐惧感油然而生。毕竟现在社会化分工越来越细,并不是每个专利信息从业人员都非得去学一门编程语言。但是,对于那些希望在专利信息领域深耕或对编程有浓厚兴趣的人,笔者认为是确有必要的。

为给大家打气,在介绍Python语言之前,先讲一个日本老太太的故事。老太太叫若宫雅子,今年已经82岁高龄,60岁退休后她购买了自己的第一台电脑并开始自学编程。2017年2月,她开发的第一款游戏「雏坛」(Hinadan)在 App Store 日本区上架,迄今下载量已超过4.2万次,她也成为全球年龄最大的 iOS 开发者。可见,只要有一颗想学习的心,任何时候开始都不算晚!

初识Python

Python语言是在八十年代末和九十年代初,由Guido van Rossum在荷兰国家数学和计算机科学研究所设计出来的。“Python”这个词实际是来自于作者喜欢的一个喜剧团体(Monty Python),也是“大蟒蛇”的意思,因此,Python语言的logo也是蟒蛇的形象。关于Python语言的标签一般有“简单易学”、“优雅”、“胶水语言”,还有“人生苦短、我用Python”的情怀标语。用专业一点的描述来说,Python是一种面向对象、动态的、强类型解释型语言

Python本来是一个比较小众的语言,但是近年来随着机器学习及人工智能的兴起,Python在数据处理方面的优势,Python语言一下子就火热起来。根据2017年IEEE Spectrum 发布了第四届顶级编程语言交互排行榜,[Python甚至荣登榜首][1]。在2018年1月HankerRank发布了2018年开发者技能调查报告中,在“最受雇主青睐的编程语言”中排名第三,而在爱恨指数排名中,Python 则[赢得了全年龄段开发者的芳心][2]。

关于Python的基础知识,本文不打算展开,而是重点介绍Python与专利数据处理相关几个工具包:Pandas、NLTK和Scikit-learn。

数据处理工具包:Pandas

enter image description here

Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来。Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis),从其名称就可以反映出,这个工具包就是专门来处理数据的。

对于首次接触Pandas的读者,可以用Excel来进行一个简单的类比。Pandas中提供了一种二维表格型数据结构:Dataframe,可以将其类比于Excel 中的一张表。这样所有Excel中的数据处理和数据分析的功能可以全部在DataFrame上来实现。

下面以读取Excel专利数据文件,对数据进行遍历并进行简单分析示例。可见,利用Pandas可以将在Excel中的分析过程进行自动化,从而减少重复工作,提升分析效率。

import pandas as pd
# 读取Excel数据文件,形成DataFrame数据格式
df = pd.read_csv("专利数据.csv")

# 遍历数据
for idx, row in df.iterrows():
    print(row["申请号"])
    print(row[u"申请人"])

# 统计分析,申请国家的趋势分析
tb = pd.pivot_table(df, values=u"申请号", index=u"申请年", columns=u"申请国",
                    aggfunc=lambda x: len(x.unique()), fill_value=0)

以上只是以利用Pandas来模拟Excel中的分析操作,实际上,Pandas的数据处理功能远远要强于Excel,如果要深入研究数据处理,Pandas是非常值得学习和研究的。

自然语言处理工具包:NLTK

enter image description here

NLTK的全称是natural language toolkit,是一套基于python的自然语言处理工具集。在NLTK集成了常用的文本分析功能,例如词频统计、相似词的查找、二词搭配情况、单词出现的位置图、分词、词性标注、文本分类等等。关于nltk的应用涉及到大量自然语言处理的知识,本文仅以处理专利文本作为一个简单示例,让各位读者简单了解这个工具。

import nltk
import jieba
import codecs

raw = codecs.open('CN101769495B.txt', encoding='gbk').read()
text = nltk.text.Text(jieba.lcut(raw))

# 搜索关键词
print(text.concordance(u'金属'))

# 显示最常见的二词搭配
text.collocations(num=20, window_size=2)

# 绘制words中文档中出现的位置图
text.dispersion_plot([u'金属', u'散热', u"LED"])

# 统计单个词频
print(text.count(u"金属"))

# 词频分布
fdist = nltk.FreqDist(text)
fdist.plot(30)

输出结果:

enter image description here

enter image description here

上述结果仅是示例性的初步结果,其中明显还有很多专利中的高频词、标点符号以及虚词,对于中文分词还需要进一步的优化。

机器学习工具包:Scikit-learn

enter image description here

Python真正火起来,是因为机器学习以及人工智能的兴起。在Coursera上早期推出的一系列机器学习公开课均是非常推崇Python。目前,Python在机器学习领域有很多开源工具包,Scikit-learn是非常重要的一个。

Scikit-learn项目最早由数据科学家 David Cournapeau 在 2007 年发起,是Python语言中专门针对机器学习应用而发展起来的一款开源框架。Scikit-learn的基本功能主要被分为六大部分:分类,回归,聚类,数据降维,模型选择和数据预处理。

对于机器学习来说,比较复杂的在于各种机器学习的算法,例如支持向量机(SVM),最近邻,逻辑回归,随机森林,决策树以及多层感知器(MLP)神经网络等,而这些算法均在Scikit-learn中实现,也就是说只需要调用简单的命令就可以运用各种复杂的机器学习算法,而让人将重点放在训练集的获取以及结果的分析和调试上。

下面将针对某专利数据集采用逻辑回归预测的简单示例。

import pandas as pd
import numpy as np
from sklearn import preprocessing
from sklearn.linear_model import LogisticRegression

#读取样本数据
df=pd.read_excel(u'训练数据.xlsx')

#缺失值和空值处理
df= df.fillna(lambda x: x.median())
X = df[feature_cols]
Y = df[u"分值"]

# 逻辑回归预测示例
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size = 0.2)

#训练LR分类器
lr=LogisticRegression()
lr.fit(x_train,y_train)

#根据测试数据进行预测
y_pred=lr.predict(x_test)

本文只是概要地为大家介绍了Python以及在专利数据处理中非常著名的几个工具包,对于python的基础知识并没有详细涉及,因为这些内容通过搜索很容易获取。此外,上述三个工具包也对应着三个重要的数据处理方向,其内容也非常博大精深,需要在实践中进一步学习积累。

学习一门编程语言,笔者认为并不是一定要从事开发工作,而是有其他多种意义:一方面是可以更好理解编程思想,从而清楚地认识当下的互联网世界;另一方面是可以将开源世界中的资源为我所用,以更好的来解决本领域中遇到的问题;再者,掌握一门编程语言,可以脱离既有软件工具的束缚,能够获得更加自由的想象力。而以Python作为开始,无疑是一个比较合适的选择。

最后以Python的标志性标语来结束本文:

人生苦短 我用Python

发表评论