查看原文
其他

企业数据库匹配系列(二)| 用文本相似度算法为中国工业企业数据库筛选重复样本

企研数据 社科大数据 2022-12-31

后台回复关键词“20220818”即可获取本文PDF版。

中国工业企业数据库全称为“全部国有及规模以上非国有工业企业数据库”(以下简称“工企库”),由中国国家统计局建立。近十多年来被经济学领域学者广泛应用,每年都有使用该数据库的新论文被公布或者发表,主题早已涵盖产业组织理论、企业理论、公司金融、转型经济学、国际贸易、劳动经济学和区域经济学等诸多子学科(聂辉华等,2012)。然而,以往的研究表明,工企库存在诸多问题,首要的问题便是部分样本数据存在重复或高度相似的情况,如企业名称、组织机构代码相同,甚至存在企业基本信息、财务信息完全一样的情况。
工企库中每年的企业样本数据都超过10w+,想要核对某年两条企业的样本数据是否是同一家企业copy(然后部分修改)而成,用肉眼比较查找显然不现实。本文的目的是借助相似度算法(主要用于企业名称相似度的测算)来识别工企库中的样本数据是否存在高度相似的情况,并将此部分样本打上标签,以此作为后续使用工企库的一个数据质量评价标准。举例来说,“企研数据科技(杭州)有限公司”和“企研数据科技有限公司”两者之间名称不同,但其很大可能是同一家企业的不同叫法,从而造成了样本重复。又如,企业名称和组织机构代码不同,但其财务信息相同,这也可能是重复的数据。从数据库中找出这些可能有问题的样本就是计算不同样本间相似度的最终意义所在。
本文将综合企业名称是否高度相似、财务数据是否相同组织机构代码是否相同三个方面的分析,来最终确定两个企业样本是否高度相似下面我们依次介绍这三个维度的计算方法,并最终通过加权得到一对企业样本数据两两相似度的综合取值。

Part1企业名称相似度

企业名称是由文字构成的文本信息,因此考察其相似度可以使用自然语言处理中的文本相似度计算技术。文本相似度计算技术有两个关键的组件,即文本表示模型相似度度量方法。前者负责将文本表示为计算机可以计算的数值向量,也就是提供特征;后者负责基于前面得到的数值向量计算文本之间的相似度。下面将逐个介绍文本表示模型(文本切分和特征构建)和相似度度量方法,并针对我们的研究主题,选定合适的文本相似度计算方法。

1文本表示模型

文本表示模型的构建有两个步骤:一是文本切分,将文本切分为以词为单位的样本;二是特征构建,将切分好的文本构建为数字化的向量。表1列出了常用的文本表示模型和相似度度量方法。

表1 文本相似度计算常用方法

(1) 文本切分

  1. n-gram:指的是一类使用相同文本切分方式的语言模型。这种切分方式非常简单,即使用一个长度为n的窗口,从左到右,逐字符划过文本;每一步窗口会框定一个字符串就是一个gram,文本中的所有gram就是该文本的切分结果。表2列出了几种常见的n-gram切分结果。

表2 n-gram 切分“企研数据科技有限公司”

gram越长,词表越大,当文本过长时特征会很稀疏,内存消耗极大。经验表明,bigram的切分效果就已经很好了。
  1. 分词:是将文本以词为单位去进行切分,比如“企研数据科技有限公司”就可以切分为“企/研/数据/科技/有限公司”。分词的目的是将文本切分为有句法意义的一个基本单元,便于人和机器理解文本。分词是中文信息处理的基础任务,基于这种方法切分的文本具有很强的时间/空间相关性。比如“有限公司”这4个字符间的相关性明显高于他们与其他字符的相关性。相比n-gram,分词在字符相关性较小的位置切分,造成信息损失比较小。当然n-gram由于极高的计算速度仍有极大的市场。

  2. 句法分析:基于句法分析的结果,从文本中抽取短语,作为文本的表示。这样得到的特征非常稀疏,适合精度要求较高的场景。

  3. 主题模型:通过提取文本的主题,使用主题词来表示文本。主题模型训练比较慢,对文本规模和质量要求比较高。

以上是四种常见的文本切分方法,第3、4种适用于长文本,文本内容丰富,需要表达特定主题的文本。基于企业名称文本具有短小,词与词之间相关性较低,文本无特殊意义且没有主题等特点,我们在做企业名称相似度计算时,可以使用n-gram和分词两种文本切分方法。在做过大量测试后发现,bigram计算的速度和计算结果都比分词效果好,所以我们最终选定bigram进行企业名称切分。

(2) 构建特征

构建特征是将上一步的企业名称切分的结构用数值向量表示文本的过程,构建后的数值向量一般称为词向量
  1. TF(词频):指的是某个词语在文档中出现的次数。就本次任务而言,每个企业名称就是一个文档,显然企业名称中的每个词语的词频基本为1,所以此法不适用于本次计算任务。
  2. TF-IDF(逆文档频率):是一个词语普遍重要性的度量,其要考虑所有的文本,因此也不适用于我们的计算任务。
  3. Simhash:是敏感哈希算法在文本特征提取任务中的应用。它会把一篇文档映射为一个长度为64、元素值为0或1的一维向量。这样我们就可以使用某种距离计算方式,计算两篇文本的距离和相似度了。一般来说,与simhash配合的是汉明距离,其需要提取关键词生成向量,因此也不适用于本次计算任务。
  4. one-hot(热独编码):首先将名称的切分结果映射到整数值,然后每个整数值被表示为0或1。每个词语独立且互不干扰,是本次计算任务最佳的特征构建方法。表3以两个企业名称为例介绍在用bigram切分的情况下,如何通过这种方法构建它们的特征。

表3 one-hot构建特征过程示例

2文本相似度度量

本次计算任务选用的是余弦相似度来度量两个企业名称间的相似度。在此之前,我们先简单介绍几种相似度计算方法。
  1. 余弦距离:是用来计算向量之间夹角的余弦值。向量之间越相似,夹角越小,夹角余弦值越大。假设空间中的两个向量:
那么二者的夹角余弦值等于:
  1. 欧式距离:计算多维空间中,两点之间的直线(绝对)距离。
  2. 汉明距离:两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。
  3. 最小编辑距离:指两个字符串之间由一个转成另一个所需的最少编辑操4作次数。以表3为例,依据余弦距离中的向量夹角余弦值计算公式计算两个企业名称的相似度,即:
四种方法在本研究下并无绝对优势劣势,因此我们随机选定了余弦相似度作为本研究计算企业名称相似度的方法。

Part2其他特征数据比较

1组织机构代码比较

按照组织机构代码设计初衷,企业的组织机构代码是唯一且始终不变的,但在实际的统计过程中,我们发现工企库存在组织机构代码多次出现的情况,这很可能代表着其中部分企业样本的数据存在重复或者错误的情况。
因此,对于多家企业共用一个组织机构代码的情况,我们将存在相同组织机构代码的样本数据赋值code=1,组织机构代码唯一的样本数据赋值code=0,然后将code值加权到最终计算方程里,进而得到两条样本数据整体的相似度计算结果。

2财务数据比较

企业名称与组织机构的判别属于对企业基本信息中单个变量是否相似或相同的考量,而对企业财务指标的判断则需要结合众多变量综合考虑,为了预防此部分数据出现大量指标重合的情况,我们首先对工业企业的财务数据做了核验。数据库中的部分企业的部分财务数据截图,如图1所示:
图1 部分企业的部分财务数据
显然,财务数据不能再同企业名称那样判断是否相似,而是要去判断值是否相同。与组织机构代码赋值规则相同,当两个企业的财务数据相同的情况时,我们对其赋值为1,不同则赋值为0。下文我们采用举例的方式说明如何计算两个企业的财务数据是否相同,具体数字请见表4。

表4 财务数据相同计算结果

我们认为,数据库中企业的每个财务数据的重要性是相当的,因此它们的权重也应是相同的,所以本次计算直接将计算结果求和即可,即:
其中
由此表4的样例数据的财务数据的是否相同的结果是res = 4(也就是有四个财务变量的取值相等)。

Part3获得样本企业间完整相似度

综合企业名称、组织机构代码和财务数据所得结果,通过赋予这三项比较不同的权重,就可以计算得到两条样本数据的最终相似度。在数据库中,组织机构代码和企业名称的重要程度相当,所以应当赋予他们相同的权重。综合考虑三个数据的不同特性:
给出如下关于两个样本相似度的计算公式:
最后,我们根据数据的实际情况,将大于0的样本定义成可能存在重复或相似,并将其标签设置为“bad”,等于0的样本标签设置成“good”。详见推文《中国工业企业数据库与全量工商企业数据库匹配报告》。

企业数据库匹配系列(一)| 工企库与工商库匹配报告(上)

2022-08-16

企业数据库匹配系列(一)| 工企库与工商库匹配报告(下)

2022-08-17

后台回复关键词“20220818”即可获取本文PDF版。


关于数据匹配与数据清洗,您有任何想要交流的,欢迎加入

企研·社科大数据平台数据分享群





推荐关注



·END·

星标⭐我们不迷路!

想要文章及时到,文末“在看”少不了!



点击搜索你感兴趣的内容吧


往期推荐


企业数据库匹配系列(一)| 工企库与工商库匹配报告(上)

学术RA丨如何用机构代码唯一识别企业(科普篇)

学术RA | 如何用机构代码唯一识别企业(实践篇)

CCAD | 赠送相关数据!2022教育部课题公示:“三农”立项课题有哪些?

TFID | 普惠小微主体子库 — 登记注册模块&投融资模块介绍

TFID | 普惠小微主体数据库(2022版)正式上线!



戳原文,更有料!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存