CN113591453A - 人为填写的地址文本相似度处理方法和系统 - Google Patents
人为填写的地址文本相似度处理方法和系统 Download PDFInfo
- Publication number
- CN113591453A CN113591453A CN202110822749.4A CN202110822749A CN113591453A CN 113591453 A CN113591453 A CN 113591453A CN 202110822749 A CN202110822749 A CN 202110822749A CN 113591453 A CN113591453 A CN 113591453A
- Authority
- CN
- China
- Prior art keywords
- address
- similarity
- addresses
- characters
- common
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种人为填写的地址文本相似度处理方法和系统。本发明实施例以一种合理的方式去除地址中出现的常规字符,从而去除地址常规字符所引起的错误的相似度贡献。用较低的时间复杂度计算出两个地址中所有大于两个长度的公共子串。设计出能够将公共子串长度序列映射成[0,1]空间的增函数,该函数合理的描述了由人为填写地址数据的特点。并设计了一种能够将并不相似但实际为相同地址识别出来的地址聚类算法。
Description
本申请为2018年4月10日提交的申请号为CN201810316265.0、公开号CN108536657A、发明名称为“人为填写的地址文本相似度处理方法和系统”的分案申请。
技术领域
本发明涉及电子技术领域,特别是一种人为填写的地址文本相似度处理方法和系统。
背景技术
地址是用于邮寄各种物品必不可少的环节,随着快递业和电商的发展,现在社会通过邮寄的方式输送的各种文件和商品已经成为了人们生活中不可或缺的一部分。同时地址不仅仅是邮寄各种物品的重要环节,还在进行用户画像时具有非常重要的意义。在进行用户画像时,地址数据以及地址周边环境数据的重要程度非常高。在贷款前审批、贷款后失联修复、反欺诈等领域,地址数据在进行统计建模或数据挖掘过程中都起到非常重要的作用。
在电子化填写地址时,可以通过地址数据匹配的方式引导使用者完善地址数据。但是在手填地址时,由于人工填写具有很大的随意性,很容易导致地址缺失或错误。由于地址填写是给快递员看的,这就给用户填写地址时带来很大的随意性。这种随意性人类很容易辨别,但是计算机却无能为力;而如何能够使得计算机在海量数据中识别非格式化的地址并进行后续的相应操作一直是数据处理、数据挖掘领域的关注要点。对于计算机来说地址就是一串字符串,而确定不同字符串之间的相似度以进行地址相似度度量是非常重要的环节。现有的方法主要包括:
1、夹角余弦法:
该方法是将两个地址的文字以向量化表示,然后根据两个向量之间的夹角余弦值来确定两个向量之间的相似度,以此作为两个地址之间的相似度。
例如以下的三组地址:
北京市,朝阳区,西大望路,麦当劳
北京市,朝阳区,望和桥西,麦当劳
北京市,朝阳区,西大望路,地铁旁麦当劳;
以下面的一组地址为例,这三个地址拆分后可用于对比的有效字段仅为:
西大望路麦当劳
望和桥西麦当劳
西大望路地铁旁麦当劳;
(1)此时先计算“西大望路麦当劳”和“望和桥西麦当劳”的夹角余弦:
按照字典序对两个地址中所有的汉字进行排列:[大,当,和,劳,路,麦,桥,望,西];
通过以下的公式计算两个向量之间的夹角余弦:
(2)然后计算“西大望路麦当劳”和“西大望路地铁旁麦当劳”的夹角余弦:采用与前面的(1)相同的方法可以计算出这两个地址之间的夹角余弦为cosθ=0.6。
但是这种方案的缺点非常明显:
对于人类来说可以很快知道“西大望路麦当劳”和“望和桥西麦当劳”不可能是同一个地址,而“西大望路麦当劳”和“西大望路地铁旁麦当劳”则有很大概率是同一个地址。但是利用夹角余弦法计算出的前者的相似度还要高于后者的相似度11%以上;因此可以看出夹角余弦法无法像人类一样来处理相似的地址。这是由于夹角余弦法只考虑了相同的字符,但是没有考虑相同字符的连续性。西大望路与望和桥西,二者公共部分都有西,望二字,但是由于西,望二字没有靠在一起,所以这两个字对相似度没有任何贡献。夹角余弦法不能表达字符之间是否连续的这个特征。
2、编辑距离法:
编辑距离表示从一个字符串转化为另一个字符串所需要的最少编辑次数,这里的编辑是指将字符串中的一个字符替换成另一个字符,或者插入删除字符所需要的步骤。以下面的一组地址为例:
同德围田心路
田心路同德围
这两个地址的编辑距离达到最大;相似度为:
1-distance/max(length(addr))=1-6/6=0。
对于人类来说可以很快知道两个地址明显为同一个地址,地址的特点决定地址字符串的顺序是可以做简单的交换而不影响阅读。而编辑距离法不能应对这一情况。
3、Dice系数法:
该方法是将字符串理解成是字符的集合。Dice系数是度量集合相似度的一种办法,其公式为:
以下面的一组地址为例:
西二旗中科院
西三旗科学院
西二旗中科大厦A座
其中“西二旗中科院”与“西三旗科学院”这两个集合的自身长度都为6,交集的长度为4,则Dice系数为:
其中“西二旗中科院”与“西二旗中科大厦A座”这两个集合的自身长度分别为6,9,交集的长度为5,则Dice系数为:
对于人类来说可以很快知道“西二旗中科院”与“西三旗科学院”不可能是一个地址;而“西二旗中科院”与“西二旗中科大厦A座”是同一个地址,但二者的Dice系数相等。由此可以看出Dice系数法尽管能修正编辑距离法的交换顺序问题的缺点,但是与夹角余弦法一样无法解决连续字符所带来的影响。
4、Jaccard相似度法:
以下面的地址为例:
西二旗中科院
西三旗科学院
西二旗中科大厦A座
其中“西二旗中科院”与“西三旗科学院”这两个集合的并集长度为8,交集的长度为4,则Jaccard相似度为:
“西二旗中科院”与“西二旗中科大厦A座”这两个集合的并集长度为10,交集的长度为5,则Jaccard相似度为:
由此可以看出,Jaccard相似度法与Dice系数法的缺陷是相同的。
发明内容
针对现有技术中存在的问题,本发明实施例的目的是提供一种人为填写的地址文本相似度处理方法和系统,能够更为准确的对不同地址之间的相似度进行处理,以提高数据处理的准确性。常见的手工填写地址是一种比较随意的方式。本发明实施例从真实数据中发掘并归纳出其中的地址填写规律,能够针对手工填写的方式存在的特点来进行数据处理,以提高对手工填写的地址数据进行处理时的准确性和效率。
为了实现上述目的,本发明实施例提出了一种人为填写的地址文本相似度处理方法,包括:
步骤A1、获取N个待对比地址中的任意两个地址,获取该每个地址中的地址常规字符并将所述地址常规字符作为断字符,以在计算地址连续性时,遇到断字符时停止累加计数,从而将每一地址分割为多个子串,以去除地址常规字符所引起的错误的相似性贡献;其中所述地址常规包括以下的至少一种:['区','街','道','县','路','镇','乡','市',',',','];
步骤A2、对比两个地址以获取两个地址之间所有的公共子串,其中公共子串为两个地址之间相同的字符串,其中每个相同子串应至少包括两个字符;其中获取的所有公共子串的方式采用了自改造的动态规划方法,从而使得找出多个公共子串与找出一个公共子串的时间复杂度相同。
其中,还包括:
步骤B1、利用以下公式将两个地址的相似度以增函数方式转换到[0,1]区间:
其中,|A∩B|con_i为地址A与地址B的第i个连续的公共子串的长度;
分子中的(1+|A∩B|con_i)*|A∩B|con_i/2为1到第i个连续的公共子串长度的等差数列求和,以对连续字符串进行加权以使其对相似度的影响增大;该公式支持地址数据半无序性的特点,现有大多数方法都不支持这一特点。
其中,还包括:
步骤C1、计算N个待对比地址中的任意两个地址之间的相似度,并根据这些相似度获得一个三角矩阵,且所述三角矩阵的对角线全为1;
步骤C2、利用抽样数据确定相似度的阈值,以将相似度小于该阈值的两个地址确定为不同的地址,且大于等于该阈值的两个地址确定为相同的地址;;
步骤C3、提取该三角矩阵的每个行向量,并将行向量中小于阈值的元素所对应的地址去掉;
步骤C4、判断两个集合之间是否有交集;如果有则将两个集合合并,所述合并后的集合中的所有地址为同一类地址;判断集合中是否还有交集,如果有则返回步骤C3,如果没有则步骤结束。
其中,所述方法还包括:
将地址拆分为大地址和小地址,其中所述大地址为≥区级的地址;其中小地址为<区级的地址;
将所述大地址和小地址分别进行比较;如果大地址的相似度小于大地址的阈值就直接返回0相似度,否则返回小地址的相似度。
同时,本发明实施例还提出了一种人为填写的地址文本相似度处理系统,包括:相似度子系统,用于执行以下步骤:
步骤A1、获取N个待对比地址中的任意两个地址,获取该每个地址中的地址常规字符并将所述地址常规字符作为断字符,以在计算地址连续性时,遇到断字符时停止累加计数,从而将每一地址分割为多个子串,以去除地址常规字符所引起的错误的相似性贡献;其中所述地址常规字符包括以下的至少一种:['区','街','道','县','路','镇','乡','市',',',','];
步骤A2、对比两个地址以获取两个地址之间的公共子串,其中公共子串为两个地址之间相同的字符串,其中每个相同子串应至少包括两个字符;其中获取的所有公共子串的方式采用了自改造的动态规划方法,从而使得找出多个公共子串与找出一个公共子串的时间复杂度相同。
其中,还包括:相似度转换子系统;
所述相似度转换子系统用于根据以下公式将两个地址的相似度转换到[0,1]区间:
其中,|A∩B|con_i为地址A与地址B的第i个连续的公共子串的长度;
分子中的(1+|A∩B|con_i)*|A∩B|con_i/2为1到第i个连续的公共子串长度的等差数列求和,以对连续字符串进行加权以使其对相似度的影响增大;该公式支持地址数据半无序性的特点,现有大多数方法都不支持这一特点。
其中,还包括:多地址关联子系统,用于执行以下步骤:
步骤C1、计算N个待对比地址中的任意两个地址之间的相似度,并根据这些相似度获得一个三角矩阵,且所述三角矩阵的对角线全为1;
步骤C2、利用抽样数据确定相似度的阈值,以将相似度小于该阈值的两个地址确定为不同的地址,且大于等于该阈值的两个地址确定为相同的地址;
步骤C3、提取该三角矩阵的每个行向量,并将行向量中小于阈值的元素所对应的地址去掉;
步骤C4、判断两个集合之间是否有交集;如果有则将两个集合合并,所述合并后的集合中的所有地址为同一类地址;判断集合中是否还有交集,如果有则返回步骤C3,如果没有则步骤结束。
其中,还包括:
将地址拆分为大地址和小地址,其中所述大地址为≥区级的地址;其中小地址为<区级的地址;
将所述大地址和小地址分别进行比较;如果大地址的相似度小于大地址的阈值就直接返回0相似度,否则返回小地址的相似度。
本发明的上述技术方案的有益效果如下:上述技术方案提出了一种人为填写的地址文本相似度处理方法和系统,能够更为准确的确定两个地址之间的相似度,以解决现有的数据处理方法中地址之间相似度度量准确性低的问题。
附图说明
图1为本发明实施例中的两个字符串的初始状态转移矩阵;
图2为本发明实施例中去除最长的公共子串后的状态转移矩阵;
图3为找到大于2的公共子串的示意图;
图4为获取的三角矩阵的示意图;
图5为将图4中的行向量中小于阈值的元素所对应的地址去掉的示意图;
图6为拆分大地址和小地址的流程示意图。
具体实施方式
为了说明本发明的一种基下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例提出了一种人为填写的地址文本相似度处理方法,包括:
步骤A1、获取N个待对比地址中的任意两个地址,获取该每个地址中的地址常规字符并将所述地址常规字符作为断字符,以在计算地址连续性时,遇到断字符时停止累加计数,从而将每一地址分割为多个子串,以去除地址常规字符所引起的错误的相似性贡献;其中所述地址常规字符包括以下的至少一种:['区','街','道','县','路','镇','乡','市',',',','];
步骤A2、对比两个地址以获取两个地址之间所有的公共子串,其中公共子串为两个地址之间相同的字符串,其中每个相同子串应至少包括两个字符。
其中,还包括:
步骤B1、利用以下公式将两个地址的相似度以增函数方式转换到[0,1]区间:
其中,|A∩B|con_i为地址A与地址B的第i个连续的公共子串的长度;
分子中的(1+|A∩B|con_i)*|A∩B|con_i/2为1到第i个连续的公共子串长度的等差数列求和,以对连续字符串进行加权以使其对相似度的影响增大;该公式支持地址数据半无序性的特点,现有大多数方法都不支持这一特点。
其中,还包括:
步骤C1、计算N个待对比地址中的任意两个地址之间的相似度,并根据这些相似度获得一个三角矩阵,且所述三角矩阵的对角线全为1;
步骤C2、利用抽样数据确定相似度的阈值,以将相似度小于该阈值的两个地址确定为不同的地址,且大于等于该阈值的两个地址确定为相同的地址;;
步骤C3、提取该三角矩阵的每个行向量,并将行向量中小于阈值的元素所对应的地址去掉;
步骤C4、判断两个集合之间是否有交集;如果有则将两个集合合并,所述合并后的集合中的所有地址为同一类地址;判断集合中是否还有交集,如果有则返回步骤C3,如果没有则步骤结束。
其中,所述方法还包括:
将地址拆分为大地址和小地址,其中所述大地址为≥区级的地址;其中小地址为<区级的地址;
将所述大地址和小地址分别进行比较;如果大地址的相似度小于大地址的阈值就直接返回0相似度,否则返回小地址的相似度。
同时,本发明实施例还提出了一种人为填写的地址文本相似度处理系统,包括:相似度子系统,用于执行以下步骤:
步骤A1、获取N个待对比地址中的任意两个地址,获取该每个地址中的地址常规字符并将所述地址常规字符作为断字符,以在计算地址连续性时,遇到断字符时停止累加计数,从而将每一地址分割为多个子串,以去除地址常规字符所引起的错误的相似性贡献;其中所述地址常规字符包括以下的至少一种:['区','街','道','县','路','镇','乡','市',',',','];
步骤A2、对比两个地址以获取两个地址之间的公共子串,其中公共子串为两个地址之间相同的字符串,其中每个相同子串应至少包括两个字符。
其中,还包括:相似度转换子系统;
所述相似度转换子系统用于根据以下公式将两个地址的相似度转换到[0,1]区间:
其中,|A∩B|con_i为地址A与地址B的第i个连续的公共子串的长度;
分子中的(1+|A∩B|con_i)*|A∩B|con_i/2为1到第i个连续的公共子串长度的等差数列求和,以对连续字符串进行加权以使其对相似度的影响增大;该公式支持地址数据半无序性的特点,现有大多数方法都不支持这一特点。
其中,还包括:多地址关联子系统,用于执行以下步骤:
步骤C1、计算N个待对比地址中的任意两个地址之间的相似度,并根据这些相似度获得一个三角矩阵,且所述三角矩阵的对角线全为1;
步骤C2、利用抽样数据确定相似度的阈值,以将相似度小于该阈值的两个地址确定为不同的地址,且大于等于该阈值的两个地址确定为相同的地址;
步骤C3、提取该三角矩阵的每个行向量,并将行向量中小于阈值的元素所对应的地址去掉;
步骤C4、判断两个集合之间是否有交集;如果有则将两个集合合并,所述合并后的集合中的所有地址为同一类地址;判断集合中是否还有交集,如果有则返回步骤C3,如果没有则步骤结束。
其中,还包括:
将地址拆分为大地址和小地址,其中所述大地址为≥区级的地址;其中小地址为<区级的地址;
将所述大地址和小地址分别进行比较;如果大地址的相似度小于大地址的阈值就直接返回0相似度,否则返回小地址的相似度。
假设有三个地址数据A、B、C,为了让计算机知道是A和B更相似还是A和C更相似,需要有一个直观的、用数字来反映相似程度大小的指标。这个指标需要符合地址数据的特点,即支持地址顺序调换和字符连续对相似度有所贡献。为此,申请人对现有的最长公共子串(Longest Common Substring,LCS)算法进行了改进。
LCS算法是一种找出两个字符串最长公共子串的算法,是动态规划思想的具体应用之一。本发明实施例在现有的LCS算法的基础上进行改造,使之更加适用于地址字符串的比对。
改进点1:只有连续字符在2个及2个以上公共子串才会被认为是公共子串。例如:“建国路”和“建设路”如果不考虑连续性,那么相同的字(建,路)会贡献2/3的相似度,这显然是不合理的。
改造2:地址中的某些常用的字符,如“省,市,路,街”,对判断地址是否相同没有任何用处,但会产生相似贡献。例如:“新华路”和“中华路”,那么相同的字(华,路)就是错误的相似贡献。但是如果直接将这些字符删除也会有问题,例如“新华路社区”中删除了常见字符“路”为就变成了“新华社区”;而“中华路社区”删除了常见字符“路”为“中华社区”,则“华社区”就是错误的相似贡献。因此将['区','街','道','县','路','镇','乡','市',',',',']这些字当成是断字符,在计算公共子串时遇到这些字就将公共子串长度的累加器停止。
在本发明实施例中,用于实现改造1和改造2的python代码如下:special=[u'区',u'街',u'道',u'县',u'路',u'镇',u'乡',u'市',u',',u',']
#str1和str2分别代表两个地址,通过这两个地址构建动态规划的状态转移矩阵
改造3:由于地址数据的特征是顺序不敏感的,因此不能只是找出最长公共子串,而是找出所有长度大于2的公共子串。为了降低时间复杂度,在找出最长公共子串后,不是删除最长的部分,然后再进行一次动态规划。而是直接利用第一次LCS的状态转移矩阵,通过算法找出剩下的所有大于2的公共子串。重复上述步骤,一直到找不出大于2的公共子串。
假设有两个地址分别为“abcdef”与“abicdekef”这两个字符串的初始状态转移矩阵如图1所述,此后划去最长的公共子串cde,此时新的状态转移矩阵如图2所示。观察如图1和图2的两个矩阵发现,在寻找次长的公共子串时,由于cde中的e已经被划去,因此ef的公共长度由2变为1。而a,b不受影响,因为a,b在被划去的列之前。通过这一发现可知,沿着已经找出的最长公共子串的最后一列的箭头方向(如图3)寻找后面大于1的列,一直沿着i+1,j+1的方向减1,直到遇见0或者矩阵的最后一列为止。
改造3的python代码如下:
现有最长公共子串LCS算法是找出最长公共子串,而本发明实施例是找出所有公共子串。因此本发明实施例对LCS算法进行改进后可以称为AACS,即:LCS->ACS(A代表ALL),又由于做了多个改造,因此有ACS->AACS(A代表Advance)。
AACS最后整合的python的代码如下:
多个地址数据在经过AACS方法处理后,返回的结果是两个地址所有公共子串的长度,例如[4,2,2]。假设有3个地址A,B,C,其中A,B的相似度为[5,3,2],A,C的相似度为[4,2,2],这说明B比C更加相似于A。这是符合逻辑的,也是直观的。
但是一个数字的集合是不好度量的,计算机不容易比较。而且如果两个相似度分别为[7,2,2]与[5,3,3,2],即使人类也不容易比较。因此本发明实施例进一步的又增加了Adjust-Jaccard相似度算法,以将前面AACS算法获得的相似度的数字集合压缩成一个[0,1]区间,而且Adjust-Jaccard相似度算法是一个增函数。
现有的Jaccard相似度算法的优点是支持地址顺序调换,缺点是没有考虑连续作用。而在本发明实施例的Adjust-Jaccard相似度算法中解决了这一问题,他能够将AACS中返回的公共子串长度的集合以增函数的方式压缩到[0,1]区间的一个数值,以方便了比较。
其中,|A∩B|con_i为地址A与地址B的第i个连续的公共子串的长度;其中分子中的(1+|A∩B|con_i)*|A∩B|con_i/2为1到第i个连续的公共子串长度的等差数列求和,以对连续字符串进行加权以使其对相似度的影响增大;
上式子中的分母是分子+两个字符串的差集,为了将Adjust-Jaccard相似度压缩在[0,1]区间而做的缩放。
用Adjust-Jaccard来验证前面提到的Jaccard不适用的例子:
西二旗中科院
西三旗科学院
西二旗中科大厦A座
之前计算过,“西二旗中科院”与“西三旗科学院”的Jaccard相似度为0.5,“西二旗中科院”与“西二旗中科大厦A座”的Jaccard相似度同样为0.5,这显然是不对的。再看看Adjust-Jaccard的计算结果,为了验证Adjust-Jaccard单纯所带来的性能提升,暂且先不做4.2.2节提到的AACS算法,否则会将AACS带来的性能提升也一并算进去,将不便于比对。
“西二旗中科院”与“西三旗科学院”的Adjust-Jaccard相似度:
“西二旗中科院”与“西二旗中科大厦A座”的Adjust-Jaccard相似度:
从实际效果来看,Adjust-Jaccard相似度已经比Jaccard相似度更符合实际情况了。而且Adjust-Jaccard还能很好的支持地址顺序调换,例如:
“西二旗中科院”与“中科院西二旗”的Adjust-Jaccard相似度:
这两个地址的相似度为1,达到最大,这是符合实际情况的。
Adjust-Jaccard的python代码:
在前述AACS算法中提到的特殊字符special=[u'区',u'街',u'道',u'县',u'路',u'镇',u'乡',u'市',u',',u','],在AACS中即不参与相似度贡献,也不能删除。但当AACS处理完毕,进入Adjust-Jaccard时,这些字符就需要删除了,否则会增大分母,使得Adjust-Jaccard永远不可能达到1,这与实际情况不符。
因此在Adjust-Jaccard算法与前述的AACS算法一起使用时,其步骤包括:
在之前的示例中:
西二旗中科院
西三旗科学院
西二旗中科大厦A座
其中“西二旗中科院”与“西三旗科学院”这组不同地址的相似度也有0.5,这是一个比较高的值。产生这一问题的原因主要是因为Adjust-Jaccard将连续度为1的公共单独字也参与了相似度计算,而AACS中对LCS的改造1正好能解决这个问题。
“西二旗中科院”与“西三旗科学院”的AACS+Adjust-Jaccard相似度为0,因为这两个地址虽然有4个公共子串,但是连续度都为1,因此Adjust-Jaccard公式中的分子为0。
“西二旗中科院”与“西三旗科学院”的AACS+Adjust-Jaccard相似度仍为0.75
“西二旗中科院”“中科院西二旗”的AACS+Adjust-Jaccard相似度仍为1,说明AACS+Adjust-Jaccard是支持顺序调换的。
这十分符合现实情况。
AACS与Adjust-Jaccard整合python代码:
Alongest=get_near(addr1,addr2)
Similar=_calc_weight_near(Alongest,addr1,addr2)
同时,在现实中经常有这样的地址,他们需要关联才能知道是相同地址,如:
广东省,广州市,白云区,同德围街道韵达广东省,广州市,白云区,田心西槎路韵达快递广东省,广州市,白云区,同德围西槎路韵达快递
在真实的地址数据挖掘过程中也不是只给两个地址来判断是否为同一个地址,通常是给多个地址,并把这些地址聚合成几个地址。
为了解决关联地址问题并切合实际应用场景,本发明实施例又提出了一个Similarity Vector Merge算法。Similarity Vector Merge算法步骤具体包括:
1.计算多个地址两两之间的相似度,相似度算法可以使用AACS+Adjust-Jaccard的算法,其结果可以用一个对角线全为1的上三角矩阵表达,如图4所示。
2.通过采样确定一个相似度的阈值,相似度小于该阈值的一对地址被认为是不同的地址,否则认为是相同的地址。
3.取出矩阵的每个行向量,并将行向量中小于阈值的元素所对应的地址去掉;如图5所示。
4.看两个集合之间是否有交集。如果有,将两个集合合并,认为合并后的集合中的所有地址为同一类地址。
5.重复3,直到集合之间两两没有交集。
Similarity Vector Merge算法的python代码:
利用一系列的实例对本发明实施例的上述方案进行验证:
地址相似性度量指标设计好后,一个最主要的应用场景就是相似地址聚类,只有在设计出符合实际情况的度量算法后,聚类才能准确。
通过本发明提交的其余两个文件来演示地址聚类应用:
1.addr_dist.py源码文件,是本文档各个段落中出现代码的汇总,源码中包含了AACS算法实现,Adjust-Jaccard度量算法实现,AACS+Adjust-Jaccard整合,及地址聚类的应用代码。
2.testData提供演示数据,演示数据是本文档各个段落中出现的示例地址的汇总,其内容为
湖北省,武汉市,武昌区,理工大学鉴湖校区海文书店
湖北省,武汉市,武昌区,工大路,武汉理工大学鉴湖校区海文书店
湖北省,武汉市,武昌区,工大路,武汉理工大学鉴湖校区
上海,上海市,宝山区,水产西路,盛宅村小学
上海,宝山区,水产西路,盛宅村小学
广东省,深圳市,宝安区,龙华新区观澜街道,某某办事处@88000000
广东省,深圳市,宝安区,龙华新区观澜街道,某某办事处@88111111
广东省,深圳市,宝安区,龙华新区观澜街道,某某办事处@88222222
广东省,深圳市,宝安区,龙华新区观澜街道,某某办事处@88333333
北京,北京市,昌平区,西二旗中科院
北京,北京市,昌平区,西三旗科学院
北京,北京市,昌平区,西二旗中科大厦A座
北京市,朝阳区,西大望路,麦当劳
北京市,朝阳区,望和桥西,麦当劳
北京市,朝阳区,西大望路,地铁旁麦当劳
广东省,广州市,白云区,同德围街道韵达
广东省,广州市,白云区,田心西槎路韵达快递
广东省,广州市,白云区,同德围西槎路韵达快递
用一台可以运行python的计算机执行以下命令:python addr_dist.py,可看到返回结果为:
======第1组地址==========
湖北省,武汉市,武昌区,理工大学鉴湖校区海文书店
湖北省,武汉市,武昌区,工大路,武汉理工大学鉴湖校区海文书店
湖北省,武汉市,武昌区,工大路,武汉理工大学鉴湖校区
======第2组地址==========
上海,上海市,宝山区,水产西路,盛宅村小学
上海,宝山区,水产西路,盛宅村小学
======第3组地址==========
广东省,深圳市,宝安区,龙华新区观澜街道,某某办事处@88333333
广东省,深圳市,宝安区,龙华新区观澜街道,某某办事处@88000000
广东省,深圳市,宝安区,龙华新区观澜街道,某某办事处@88111111
广东省,深圳市,宝安区,龙华新区观澜街道,某某办事处@88222222
======第4组地址==========
北京,北京市,昌平区,西二旗中科院
北京,北京市,昌平区,西二旗中科大厦A座
======第5组地址==========
北京,北京市,昌平区,西三旗科学院
======第6组地址==========
北京市,朝阳区,西大望路,麦当劳
北京市,朝阳区,西大望路,地铁旁麦当劳
======第7组地址==========
北京市,朝阳区,望和桥西,麦当劳
======第8组地址==========
广东省,广州市,白云区,田心西槎路韵达快递
广东省,广州市,白云区,同德围西槎路韵达快递
广东省,广州市,白云区,同德围街道韵达
以上结果均符合现实意义的地址聚类,说明地址相似性度量指标的算法设计符合实际地址填写情况,而且处理多地址关联时的Similarity Vector Merge算法也同样有效。
附录
1.大小地址
将地址拆分成大地址与小地址。比如:上海,上海市,青浦区,诸光路,会展中心大地址=上海,上海市,青浦区;
小地址=诸光路,会展中心
如此做的原因是如果大小地址放在一起比较会使不同的地址也拥有较高的相似度。例如:
上海,上海市,青浦区,诸光路,会展中心
上海,上海市,青浦区,青昆路,交电厂
二者地址不同,但是区级以上的地址信息贡献了50%左右的相似度。所以应该把地址拆分成大地址与小地址,然后用大小地址分别做相似性判断,如果大地址的相似度小于大地址的阈值就直接返回0相似度,否则返回小地址的相似度。流程如图6所示的:
另外,拆分大小地址后带来的额外的好处是可以对大小地址分别定义相似阈值。因为大地址相对规整,重复度高,先验易相似,而且往往字数少,所以判断相似的阈值需要调高,而小地址的特点正好相反,因此阈值需要调低。
拆分大小地址python代码:
def_get_big_small_addr(addr):
addr=addr.split(',')
len_addr=len(addr)
iflen_addr<3:
big_addr=addr
small_addr=None
eliflen_addr>3:
big_addr=','.join(addr[1:3])
small_addr=','.join(addr[3:])
else:#等于3
big_addr=','.join(addr[1:2])
small_addr=','.join(addr[2:])
return big_addr,small_addr
addr是按照“省,市,县,区,路,街,详址”的格式填写,各级别地址之间以“,”分割。但用户填写时可能会缺失任何一个级别的数据,因此需要兼容各种情况。
参考文献:
[1]Gusfield,Dan(1999)[1997].Algorithms on Strings,Trees andSequences:Computer Science and Computational Biology.USA:Cambridge UniversityPress.
[2]Sidorov,Grigori;Gelbukh,Alexander;Gómez-Adorno,Helena;Pinto,David."Soft Similarity and Soft Cosine Measure:Similarity of Features inVector Space Model".
[3]Levenshtein,Vladimir I.(February 1966)."Binary codes capable ofcorrecting deletions,insertions,and reversals".Soviet Physics Doklady.
[4]Jaccard,Paul(1912),"The distribution of the flora in the alpinezone",New Phytologist.
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种人为填写的地址文本相似度处理方法,其特征在于,包括:
步骤A1、获取N个待对比地址中的任意两个地址,获取该每个地址中的地址常规字符并将所述地址常规字符作为断字符,以在计算地址连续性时,遇到断字符时停止累加计数,从而将每一地址分割为多个子串,以去除地址常规字符所引起的错误的相似性贡献,并且能够确保在去掉由常规字符引起错误的相似性贡献时,不会引入新的相似性贡献错误;其中所述地址常规字符包括以下的至少一种:['区','街','道','县','路','镇','乡','市',',',','];
步骤A2、对比两个地址以获取两个地址之间所有的公共子串,其中公共子串为两个地址之间相同的字符串,其中每个相同子串应至少包括两个字符;其中获取的所有公共子串的方式采用了自改造的动态规划方法,从而使得找出多个公共子串与找出一个公共子串的时间复杂度相同。
3.根据权利要求2所述的人为填写的地址文本相似度处理方法,其特征在于,还包括:
步骤C1、计算N个待对比地址中的任意两个地址之间的相似度,并根据这些相似度获得一个三角矩阵,且所述三角矩阵的对角线全为1;
步骤C2、利用抽样数据确定相似度的阈值,以将相似度小于该阈值的两个地址确定为不同的地址,且大于等于该阈值的两个地址确定为相同的地址;;
步骤C3、提取该三角矩阵的每个行向量,并将行向量中小于阈值的元素所对应的地址去掉;
步骤C4、判断两个集合之间是否有交集;如果有则将两个集合合并,所述合并后的集合中的所有地址为同一类地址;判断集合中是否还有交集,如果有则返回步骤C3,如果没有则步骤结束。
4.根据权利要求1-3任一项所述的人为填写的地址文本相似度处理方法,其特征在于,所述方法还包括:
将地址拆分为大地址和小地址,其中所述大地址为≥区级的地址;其中小地址为<区级的地址;
将所述大地址和小地址分别进行比较;如果大地址的相似度小于大地址的阈值就直接返回0相似度,否则返回小地址的相似度。
5.一种人为填写的地址文本相似度处理系统,其特征在于,包括:相似度子系统,用于执行以下步骤:
步骤A1、获取N个待对比地址中的任意两个地址,获取该每个地址中的地址常规字符并将所述地址常规字符作为断字符,以在计算地址连续性时,遇到断字符时停止累加计数,从而将每一地址分割为多个子串,以去除地址常规字符所引起的错误的相似性贡献;其中所述地址常规字符包括以下的至少一种:['区','街','道','县','路','镇','乡','市',',',','];
步骤A2、对比两个地址以获取两个地址之间的公共子串,其中公共子串为两个地址之间相同的字符串,其中每个相同子串应至少包括两个字符;其中获取的所有公共子串的方式采用了自改造的动态规划方法,从而使得找出多个公共子串与找出一个公共子串的时间复杂度相同。
7.根据权利要求6所述的人为填写的地址文本相似度处理系统,其特征在于,还包括:多地址关联子系统,用于执行以下步骤:
步骤C1、计算N个待对比地址中的任意两个地址之间的相似度,并根据这些相似度获得一个三角矩阵,且所述三角矩阵的对角线全为1;
步骤C2、利用抽样数据确定相似度的阈值,以将相似度小于该阈值的两个地址确定为不同的地址,且大于等于该阈值的两个地址确定为相同的地址;
步骤C3、提取该三角矩阵的每个行向量,并将行向量中小于阈值的元素所对应的地址去掉;
步骤C4、判断两个集合之间是否有交集;如果有则将两个集合合并,所述合并后的集合中的所有地址为同一类地址;判断集合中是否还有交集,如果有则返回步骤C3,如果没有则步骤结束。
8.根据权利要求5-7任一项所述的人为填写的地址文本相似度处理系统,其特征在于,还包括:
将地址拆分为大地址和小地址,其中所述大地址为≥区级的地址;其中小地址为<区级的地址;
将所述大地址和小地址分别进行比较;如果大地址的相似度小于大地址的阈值就直接返回0相似度,否则返回小地址的相似度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110822749.4A CN113591453A (zh) | 2018-04-10 | 2018-04-10 | 人为填写的地址文本相似度处理方法和系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110822749.4A CN113591453A (zh) | 2018-04-10 | 2018-04-10 | 人为填写的地址文本相似度处理方法和系统 |
CN201810316265.0A CN108536657B (zh) | 2018-04-10 | 2018-04-10 | 人为填写的地址文本相似度处理方法和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810316265.0A Division CN108536657B (zh) | 2018-04-10 | 2018-04-10 | 人为填写的地址文本相似度处理方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113591453A true CN113591453A (zh) | 2021-11-02 |
Family
ID=63479867
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110822749.4A Pending CN113591453A (zh) | 2018-04-10 | 2018-04-10 | 人为填写的地址文本相似度处理方法和系统 |
CN201810316265.0A Active CN108536657B (zh) | 2018-04-10 | 2018-04-10 | 人为填写的地址文本相似度处理方法和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810316265.0A Active CN108536657B (zh) | 2018-04-10 | 2018-04-10 | 人为填写的地址文本相似度处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113591453A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274811B (zh) * | 2018-11-19 | 2023-04-18 | 阿里巴巴集团控股有限公司 | 地址文本相似度确定方法以及地址搜索方法 |
CN109766429A (zh) * | 2019-02-19 | 2019-05-17 | 北京奇艺世纪科技有限公司 | 一种语句检索方法及装置 |
CN110609874B (zh) * | 2019-08-13 | 2023-07-25 | 南京安链数据科技有限公司 | 一种基于密度聚类算法的地址实体共指消解方法 |
CN111382562B (zh) * | 2020-03-05 | 2024-03-01 | 百度在线网络技术(北京)有限公司 | 文本相似度的确定方法、装置、电子设备及存储介质 |
CN112100381B (zh) * | 2020-09-22 | 2022-05-17 | 福建天晴在线互动科技有限公司 | 一种文本相似度进行量化的方法及其系统 |
CN112529629A (zh) * | 2020-12-16 | 2021-03-19 | 北京居理科技有限公司 | 恶意用户评论刷量行为识别方法及系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925467B2 (en) * | 2002-05-13 | 2005-08-02 | Innopath Software, Inc. | Byte-level file differencing and updating algorithms |
US8346754B2 (en) * | 2008-08-19 | 2013-01-01 | Yahoo! Inc. | Generating succinct titles for web URLs |
CN101561813B (zh) * | 2009-05-27 | 2010-09-29 | 东北大学 | 一种Web环境下的字符串相似度的分析方法 |
CN101763405A (zh) * | 2009-11-16 | 2010-06-30 | 陆嘉恒 | 基于同义词规则的近似字符串搜索技术 |
CN102122298B (zh) * | 2011-03-07 | 2013-02-20 | 清华大学 | 一种中文相似性匹配方法 |
CN102955833B (zh) * | 2011-08-31 | 2015-11-25 | 深圳市华傲数据技术有限公司 | 一种通讯地址识别、标准化的方法 |
CN103488983B (zh) * | 2013-09-13 | 2016-10-26 | 复旦大学 | 一种基于知识库的名片ocr数据修正方法和系统 |
CN103927352A (zh) * | 2014-04-10 | 2014-07-16 | 江苏唯实科技有限公司 | 利用知识库海量关联信息的中文名片ocr数据修正系统 |
CN105988988A (zh) * | 2015-02-13 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 文本地址处理方法及装置 |
CN106610965A (zh) * | 2015-10-21 | 2017-05-03 | 北京瀚思安信科技有限公司 | 确定文本串公共子序列的方法和设备 |
CN106372043B (zh) * | 2016-09-07 | 2018-11-23 | 福建师范大学 | 一种基于改进的Jaccard系数确定文档相似度的方法 |
CN106991173A (zh) * | 2017-04-05 | 2017-07-28 | 合肥工业大学 | 基于用户偏好的协同过滤推荐方法 |
CN107577744A (zh) * | 2017-08-28 | 2018-01-12 | 苏州科技大学 | 非标地址自动匹配模型、匹配方法以及模型建立方法 |
CN107862558B (zh) * | 2017-12-11 | 2021-11-26 | 中国南方航空股份有限公司 | 一种自助式用户群扩展方法 |
-
2018
- 2018-04-10 CN CN202110822749.4A patent/CN113591453A/zh active Pending
- 2018-04-10 CN CN201810316265.0A patent/CN108536657B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108536657A (zh) | 2018-09-14 |
CN108536657B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536657B (zh) | 人为填写的地址文本相似度处理方法和系统 | |
US6904430B1 (en) | Method and system for efficiently identifying differences between large files | |
JP3067980B2 (ja) | ストリング・マッチング方法および装置 | |
CN109344263B (zh) | 一种地址匹配方法 | |
CN109325019B (zh) | 数据关联关系网络构建方法 | |
CN111324750B (zh) | 一种大规模文本相似度计算及文本查重方法 | |
CN106909611B (zh) | 一种基于文本信息抽取的酒店自动匹配方法 | |
CN103235774A (zh) | 一种科技项目申请书特征词提取方法 | |
WO2018218788A1 (zh) | 一种基于全局种子打分优选的三代测序序列比对方法 | |
US20200185058A1 (en) | Gene sequencing data compression preprocessing, compression and decompression method, system, and computer-readable medium | |
KR20120137235A (ko) | 유전자 데이터를 압축하는 방법 및 장치 | |
CN106886565B (zh) | 一种基础房型自动聚合方法 | |
CN111370064A (zh) | 基于simd的哈希函数的基因序列快速分类方法及系统 | |
CN103646029A (zh) | 一种针对博文的相似度计算方法 | |
TW202407602A (zh) | 門店去重處理方法、裝置、設備及存儲介質 | |
CN112527948A (zh) | 基于句子级索引的数据实时去重方法及系统 | |
CN112070136A (zh) | 基于提升度决策树及改进smote对不平衡数据的分类方法 | |
CN109299443B (zh) | 一种基于最小顶点覆盖的新闻文本去重方法 | |
CN116579319A (zh) | 一种文本相似度的分析方法及系统 | |
CN115292962B (zh) | 基于轨迹抽稀的路径相似度匹配方法、设备及存储介质 | |
CN103326731B (zh) | 一种基于分布式算术编码的隐马尔科夫相关信源编码方法 | |
CN104462458A (zh) | 大数据系统的数据挖掘方法 | |
CN109299260B (zh) | 数据分类方法、装置以及计算机可读存储介质 | |
Rohlf | A new approach to the computation of the Jardine-Sibson Bk clusters | |
CN115088038A (zh) | 基于新上下文的经比对的测序数据中的改进质量值压缩框架 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |