一种字符串处理方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种字符串编处理方法及装置。
背景技术
当前,互联网对人们日常生活的影响日益加强,造成互联网数据大爆炸,对于各种数据的存储识别成为日益重要的问题。在某些应用场景中,需要对诸如地址、黑名单、问题名称等进行识别归类,这就涉及到对所述庞大的数据库内的字符串进行相似度计算的问题。
在互联网领域,服务商数据库中会存储有庞大的商品服务、用户数据,包括用户地址、公司名称、商品名称等,若这类表示地址、公司名称的字符串直接来源于用户填写的信息,形式上就会多种多样,比如某公司全称上海XXX股份有限公司,则该公司员工自行填写的公司名称可能有XXX、XXX公司、上海XXX等多种字符串形式。这种情况下若想将XXX、XXX公司、上海XXX匹配识别为该公司全称上海XXX股份有限公司,往往比较困难。
目前,在数据库中计算字符串相似度的算法有编辑距离(Levenshtein Distance)算法,编辑距离就是用来计算从原串S转换到目标串T所需要的最少的插入,删除和替换的数目。字符串相似度计算公式:字符串(S,T)相似度=1–(编辑距离/(MAX(length(s),length(t))),但普通编辑距离算法仅仅机械地依据构成字符串的单个字符集合来计算,依据该种方法计算出来的相似度结果不够准确,如字符串“ABC信息技术有限公司”和“ABC”利用该相似度计算方法得到的结果可能是27.27%,而“ABC信息技术有限公司”和“XYZ信息技术有限公司”利用该相似度计算结果可能是72.73%,得出的相似度结果与实际结果差异较大、准确度较低,导致识别归类等后续处理准确性较差。
发明内容
本申请实施例提供一种字符串处理方法,用以解决现有技术对名单、地址等字符串识别采用单个字符集合成的字符子串进行编辑距离算法,得出准确度较低的字符串相似度,导致识别归类等后续处理准确性较差的问题。
本申请实施例还提供一种字符串处理装置,用以解决现有技术对名单、地址等字符串识别采用单个字符集合成的字符子串进行编辑距离算法,得出准确度较低的字符串相似度,导致识别归类等后续处理准确性较差的问题。
本申请实施例采用下述技术方案:
一种字符串处理方法,包括:
获取待识别字符串;
将所述待识别字符串进行分词,得到各待识别字符子串;
确定各待识别字符子串的语义权重;
依据各待识别字符子串,查找目标字符串;
将所述目标字符串进行分词,得到各目标字符子串;
确定各目标字符子串的语义权重;
依据各待识别字符子串和各目标字符子串的语义权重,确定待识别字符串与目标字符串之间的语义编辑距离;
依据所述语义编辑距离,确定所述待识别字符串与目标字符串之间的相似度;
根据所述相似度,对所述待识别字符串进行后续处理。
一种字符串处理装置,包括:
获取单元,用于获取待识别字符串;
查找单元,用于依据所述待识别字符串,查找目标字符串;
分词单元,用于将所述待识别字符串、目标字符串分别进行分词,得到各待识别字符子串、各目标字符子串;
语义权重确定单元,用于确定各待识别字符子串、各目标字符子串的语义权重;
编辑距离确定单元,用于依据各待识别字符子串和各目标字符子串的语义权重,确定待识别字符串与目标字符串之间的语义编辑距离;
相似度确定单元,用于依据所述语义编辑距离,确定所述待识别字符串与目标字符串之间的相似度;
后续处理单元,用于依据所述相似度,对所述待识别字符串进行后续处理。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
在处理互联网数据处理中,采用对字符串进行分词并获取字符子串,同时为所述字符子串赋予语义权重,以带语义权重的字符子串来计算语义编辑距离,提高了按语义需求的字符串识别的准确度,解决了现有技术对名单、地址等字符串识别采用单个字符集合成的字符子串进行编辑距离算法,得出准确度较低的字符串相似度,导致识别归类等后续处理准确性较差的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例一提供的字符串处理方法流程图;
图2为本申请实施例二提供的字符串处理装置示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
图1为本申请实施例一提供的字符串处理方法流程,主要是指采用将所述字符串分解成带语义权重的字符子串,依据语义权重计算各字符串之间的语义编辑距离后再进行相似度计算,可有效提高按语义单元字符串的相似度,方便对字符串进行归类识别等后续处理。包括如下步骤:
S101:获取待识别字符串。
所述获取的待识别字符串S包括由用户输入的公司名称、地址、商品名称、黑名单、问题名称或描述中的一种或多种。
如用户需要在某些服务网站输入收货地址、服务提供商户需要输入商品名称、部分用户可能需要设置一些黑名单。而所有的这些数据可能存在表示同一意义而不同表现的一串字符,且服务网站需要保存的数据量日益庞大,此时,系统需要对用户输入的数据进行识别,以便于归类、添加、替换等后续操作。
S102:将所述待识别字符串进行分词,得到各待识别字符子串。
将所述待识别字符串S按语义单元进行分词,得到各具有语义的各待识别字符子串S={s1,s2,s3…,si}。本步骤采用语法分析单元进行处理分词处理。
S103:确定各待识别字符子串的语义权重。
首先,本地数据库中存在着一个语义权重表Wn,所述语义权重表是是预先依据数据库中保存的样本进行计算获得的,计算方法包括:
抽取一定数量的字符串样本,所述字符串样本可能为10000行以上的同类名单、地址等;对所述抽取的字符串样本进行去重操作,即去掉所述抽取的字符串样本中完全相同的字符串以使字符串样本不重复;对所述抽取的字符串样本进行分词,得到若干具有一定语义单元的样本子串,分词处理同步骤S102;最后根据逆向文件频率(term frequency–inverse document frequency,TF-IDF)词语普遍重要性的度量计算公式计算得出各样本子串的语义权重Wn={(w1,idf1),(w2,idf2),(w3,idf3)…,(wn,idfn)},其中所述|D|表示样本字符串总数,|{j:ti∈dj}|表示包含样本子串ti的行数,如果样本中不存在该样本子串,则会导致分母为零,因此一般情况下使用1+|{j:ti∈dj}|。如果该类别样本子串权重集合具有普遍性,则取一个类别名称保存该集合,如“W(companyName)”、“W(address)”等,下一次同样场景可直接调用对应权重集合。
本步骤先依据各待识别字符子串查找所述语义权重表;然后从所述语义权重表中找出各待识别字符子串的对应的语义权重得到带语义权重的待识别字符子串Sw={(s1,sw1),(s2,sw2),(s3,sw3)…,(sm,swm)}。
S104:依据各待识别字符子串,查找目标字符串。
所述目标字符串T是保存于本地数据库中的正确的公司名称、地址、商品名称、黑名单、问题名称或描述中的一种或多种。
本步骤先从所述待识别字符串中选择语义权重大于设定阈值的待识别字符子串;然后采用选择出的待识别字符子串检索目标字符串数据库,找出目标字符串。
所述语义权重大于设定阈值的待识别字符子串是指语义权重大于一定阈值的一个或多个待识别字符子串,所述找出的目标字符串可以是一个或多且每个目标字符串中都包括所述选定的待识别字符子串。
S105:将所述目标字符串进行分词,得到各目标字符子串。
将选择出的目标字符串逐一进行分词处理,本步骤的分词步骤S102相同,分词后得到目标字符子串T={t1,t2,t3…,tn}。
S106:确定各目标字符子串的语义权重。
本步骤同步骤S103,先依据各目标字符子串查找所述语义权重表;然后从所述语义权重表中找出各目标字符子串的对应的语义权重得到带语义权重的目标字符子串Tw={(t1,tw1),(t2,tw2),(t3,tw3)…,(tn,twn)}。
S107:依据各待识别字符子串和各目标字符子串的语义权重,确定待识别字符串与目标字符串之间的语义编辑距离。
本步骤是指将
依据以下公式计算语义编辑距离:
当i=0且j=0时,edit(0,0)=0;
当i=0且j>0时,edit(0,j)=edit(0,j-1)+twj;
当i>0且j=0时,edit(i,0)=edit(i-1,0)+swi;
当i>0且j>0时,edit(i,j)=min(edit(i-1,j)+swi,edit(i,j-1)+twj,edit(i-1,j-1)+f(i,j));
其中i表示待识别字符子串个数,j表示目标字符子串个数;twj表示目标字符子串的tj语义权重,swi表示待识别字符子串si的语义权重;edit(i,j)表示待识别字符子串集合(s1,s2,s3…si)到目标字符子串集合(t1,t2,t3…tj)的语义编辑距离,当i和j分别为待识别字符串S和目标字符串T的所包含的所有子串数量时,edit(i,j)等于待识别字符串S与目标字符串T之间的语义编辑距离edit(S,T);f(i,j)表示第i个待识别字符子串si转换到第j个目标字符子串tj所产生的语义编辑距离,当si=tj,则f(i,j)=0;当si≠tj,则f(i,j)=MAX(swi,twj)。
S108:依据所述语义编辑距离,确定所述待识别字符串与目标字符串之间的相似度。
本步骤主要是指依据步骤S107得出的语义编辑距离计算出所述待识别字符串与目标字符串之间的相似度。相似度计算公式为:1-(edit(S,T)/(MAX(length(S),length(T))),其中edit(S,T)表示待识别字符串S与目标字符串T之间的语义编辑距离,length(S)表示待识别字符串S中所有待识别字符子串的语义权重之和,length(T)表示目标字符串T中所有目标字符子串的语义权重之和。
S109:根据所述相似度,对所述待识别字符串进行后续处理。
本步骤主要是指在不同的应用场景,利用所述相似度结果,将所述待识别字符串进行归类、替换为符合相似度条件的目标字符串、设为黑名单等处理中的一种或多种。
例1:当获取的待识别字符串S为“ABC信息技术有限公司”;则将待识别字符串S分词处理后得到各待识别字符子串S={ABC,信息,技术,有限,公司},i=5;依据所述待识别字符子串从目标串数据库中查找到目标字符串T,假定找出所述目标字符串之一为“XYZ信息技术有限公司”;将所述目标字符串T进行分词处理得到目标字符子串目标字符子串T={XYZ,信息,技术,有限,公司},j=5;而语义权重表Wn内对所述字符子串的权重分别如下表1所示:
子串 |
ABC |
XYZ |
信息 |
技术 |
有限 |
公司 |
权重 |
0.98 |
0.99 |
0.02 |
0.02 |
0.01 |
0.01 |
表1
则获得带语义权重的待识别字符子串为Sw={(ABC,0.98),(信息,0.02),(技术,0.02),(有限,0.01),(公司,0.01)}、带语义权重的目标字符子串为Tw={(XYZ,0.99),(信息,0.02),(技术,0.02),(有限,0.01),(公司,0.01)}。
依据编辑距离公式计算待识别字符子串与目标字符子串之间带语义权重的编辑距离,这里称为语义编辑距离。建立待识别字符子串Sw与目标字符子串Tw之间的带语义权重的二维矩阵如下表2所示,这里的计算类似于现有的编辑距离算法,具体不再赘述,区别在于将操作步骤数换成语义权重来进行计算,依据二维矩阵表可以得出待识别字符子串Sw与目标字符子串Tw之间的语义编辑距离为0.99。
表2
再依据相似度计算公式:1-(edit(S,T)/(MAX(length(S),length(T))),计算所述待识别字符子串S={ABC,信息,技术,有限,公司}与目标字符子串T={XYZ,信息,技术,有限,公司}之间的相似度为:1-0.99/max((0.98+0.02+0.02+0.01+0.01),(0.99+0.02+0.02+0.01+0.01))=5.71%,此时,表示待识别字符串S与目标字符串T之间的相似度很小。
例2:当获取的待识别字符串S为“ABC公司”;则将待识别字符串S分词处理后得到各待识别字符子串S={ABC,公司},i=2;依据所述待识别字符子串从目标串数据库中查找到目标字符串T,假定找出所述目标字符串之一为“ABC信息技术有限公司”;将所述目标字符串T进行分词处理得到目标字符子串目标字符子串T={ABC,信息,技术,有限,公司},j=5;而语义权重表Wn内对所述字符子串的权重分别如下表3所示:
子串 |
ABC |
信息 |
技术 |
有限 |
公司 |
权重 |
0.98 |
0.02 |
0.02 |
0.01 |
0.01 |
表3
则获得带语义权重的待识别字符子串为Sw={(ABC,0.98),(公司,0.01)}、带语义权重的目标字符子串为Tw={(ABC,0.98),(信息,0.02),(技术,0.02),(有限,0.01),(公司,0.01)}。
依据编辑距离公式计算待识别字符子串与目标字符子串之间带语义权重的编辑距离,这里称为语义编辑距离。建立待识别字符子串Sw与目标字符子串Tw之间的带语义权重的二维矩阵如下表4所示,这里的计算类似于现有的编辑距离算法,具体不再赘述,区别在于将操作步骤数换成语义权重来进行计算,依据二维矩阵表可以得出待识别字符子串Sw与目标字符子串Tw之间的语义编辑距离为0.05。
表4
再依据相似度计算公式:1-(edit(S,T)/(MAX(length(S),length(T))),计算所述待识别字符串S={ABC,公司}与目标字符子串T={ABC,信息,技术,有限,公司}之间的相似度为:1-0.05/max((0.98+0.01),(0.98+0.02+0.02+0.01+0.01))=95.19%,此时,表示待识别字符串S与目标字符串T之间的相似度很大,可以将所述待识别字符串进行与所述目标字符串归为同一类、或者直接替换为所述目标字符串、或者将所述待识别字符串设为黑名单等后续处理。
实施例2
以上为本申请提供的字符串处理方法,基于同样的思路,本申请实施例二还提供相应的字符串处理装置,如图2所示。
图2所示为实施例二提供的字符串处理装置结构示意图,具体包括:
获取单元201,用于获取待识别字符串;
查找单元202,用于依据所述待识别字符串,查找目标字符串;
分词单元203,用于将所述待识别字符串、目标字符串分别进行分词,得到各待识别字符子串、各目标字符子串;
语义权重确定单元204,用于确定各待识别字符子串、各目标字符子串的语义权重;
语义编辑距离确定单元205,用于依据各待识别字符子串和各目标字符子串的语义权重,确定待识别字符串与目标字符串之间的语义编辑距离;
相似度确定单元206,用于依据所述语义编辑距离,确定所述待识别字符串与目标字符串之间的相似度;
后续处理单元207,用于依据所述相似度,对所述待识别字符串进行后续处理。
所述获取单元201获取的待识别字符串S包括由用户输入的公司名称、地址、商品名称、黑名单、问题名称或描述中的一种或多种。
如用户需要在某些服务网站输入收货地址、服务提供商户需要输入商品名称、部分用户可能需要设置一些黑名单。而所有的这些数据可能存在表示同一意义而不同表现的一串字符,且服务网站需要保存的数据量日益庞大,此时,系统需要对用户输入的数据进行识别,以便于归类、添加、替换等后续操作。
所述分词单元202先将所述获取的待识别字符串S按语义单元进行分词处理得到各具有语义的各待识别字符子串S={s1,s2,s3…,si}。此装置采用语法分析单元进行处理分词处理。
在所述语义权重确定单元204或本地数据库中,存在着一个语义权重表Wn,所述语义权重表是是预先依据数据库中保存的样本进行计算获得的,计算方法包括:
抽取一定数量的字符串样本,所述字符串样本可能为10000行以上的同类名单、地址等;对所述抽取的字符串样本进行去重操作,即去掉所述抽取的字符串样本中完全相同的字符串以使字符串样本不重复;对所述抽取的字符串样本进行分词,得到若干具有一定语义单元的样本子串,分词处理同步骤S102;最后根据逆向文件频率(term frequency–inverse document frequency,TF-IDF)词语普遍重要性的度量计算公式计算得出各样本子串的语义权重Wn={(w1,idf1),(w2,idf2),(w3,idf3)…,(wn,idfn)},其中所述|D|表示样本字符串总数,|{j:ti∈dj}|表示包含样本子串ti的行数,如果样本中不存在该样本子串,则会导致分母为零,因此一般情况下使用1+|{j:ti∈dj}|。如果该类别样本子串权重集合具有普遍性,则取一个类别名称保存该集合,如“W(companyName)”、“W(address)”等,下一次同样场景可直接调用对应权重集合。
所述语义权重确定单元204先依据各待识别字符子串查找所述语义权重表;然后从所述语义权重表中找出各待识别字符子串的对应的语义权重得到带语义权重的待识别字符子串Sw={(s1,sw1),(s2,sw2),(s3,sw3)…,(sm,swm)}。
所述查找单元203依据所述各待识别字符串内的待识别字符子串,查找目标字符串。先从所述待识别字符串中选择语义权重大于设定阈值的待识别字符子串;然后采用选择出的待识别字符子串检索目标字符串数据库,找出目标字符串T。
所述目标字符串T是保存于本地数据库中的正确的公司名称、地址、商品名称、黑名单、问题名称或描述中的一种或多种。
所述语义权重大于设定阈值的待识别字符子串是指语义权重大于一定阈值的一个或多个待识别字符子串,所述找出的目标字符串可以是一个或多且每个目标字符串中都包括所述选定的待识别字符子串。
在获得所述目标字符串T后再由所述分词单元202将所述目标字符串按语义单元进行分词,得到目标字符子串T={t1,t2,t3…,tn};然后再由所述语义权重确定单元204依据各目标字符子串查找所述语义权重表;然后从所述语义权重表中找出各目标字符子串的对应的语义权重得到带语义权重的目标字符子串Tw={(t1,tw1),(t2,tw2),(t3,tw3)…,(tn,twn)}。
所述语义编辑距离确定单元205依据各待识别字符子串和各目标字符子串的语义权重,确定待识别字符串与目标字符串之间的语义编辑距离,包括:
依据以下公式计算语义编辑距离:
当i=0且j=0时,edit(0,0)=0;
当i=0且j>0时,edit(0,j)=edit(0,j-1)+twj;
当i>0且j=0时,edit(i,0)=edit(i-1,0)+swi;
当i>0且j>0时,edit(i,j)=min(edit(i-1,j)+swi,edit(i,j-1)+twj,edit(i-1,j-1)+f(i,j));
其中i表示待识别字符子串个数,j表示目标字符子串个数;twj表示目标字符子串的tj语义权重,swi表示待识别字符子串si的语义权重;edit(i,j)表示待识别字符子串集合(s1,s2,s3…si)到目标字符子串集合(t1,t2,t3…tj)的语义编辑距离,当i和j分别为待识别字符串S和目标字符串T的所包含的所有子串数量时,edit(i,j)等于待识别字符串S与目标字符串T之间的语义编辑距离edit(S,T);f(i,j)表示第i个待识别字符子串si转换到第j个目标字符子串tj所产生的语义编辑距离,当si=tj,则f(i,j)=0;当si≠tj,则f(i,j)=MAX(swi,twj)。
所述相似度确定单元206依据所述语义编辑距离确定单元205获得的待识别字符串S与目标识别字符串T之间的语义编辑距离,确定所述待识别字符串与目标字符串之间的相似度。
相似度计算公式为:1-(edit(S,T)/(MAX(length(S),length(T))),其中edit(S,T)表示待识别字符串S与目标字符串T之间的语义编辑距离,length(S)表示待识别字符串S中所有待识别字符子串的语义权重之和,length(T)表示目标字符串T中所有目标字符子串的语义权重之和。
所述后续处理单元207依据所述相似度确定单元206确定的所述待识别字符串S与目标字符串T之间的相似度,对所述待识别字符串进行后续处理。
所述后续处理单元207在不同的应用场景执行不同的处理功能,如依据所述相似度结果,将所述待识别字符串进行归类、替换为符合相似度条件的目标字符串、设为黑名单等处理中的一种或多种。
本装置演示的示例与实施例一中的例1、例2相同。
需要说明的是,实施例一所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。