一种文档相似度计算方法、装置、设备及介质
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种文档相似度计算方法、装置、设备及介质。
背景技术
目前,基于iOS平台或者基于Android平台的直播间应用程序发展迅速,深受用户喜爱。弹幕是直播平台一种非常流行的用于信息交流以及信息共享的表达方式,通过弹幕可以实现观众与主播之间的互动,有助于营造良好的直播氛围。
在机器人会话领域中,其中一个重要环节是找出与输入语句语义相似度最高的回复。同样,在直播间经常需要根据水友弹幕,计算与其相似度较高的回复,由机器人针对水友弹幕进行自动回复。当待计算相似度的文档长度比较长时,现有的文档相似度计算方法通常需要将待计算相似度的两个较长的文档切分成多段较短的文本,然后通过依次比较两个文档中每两个较短文本之间的相似度,并取其中的最大值进行求和,得到两个长文档的最终相似度。可见,现有的相似度计算方法存在如下缺陷:当待匹配的两个文档的长度较长时,步骤繁琐且计算量大,还没有相似特征的重点突出。
发明内容
本发明实施例提供一种文档相似度计算方法、装置、设备及介质,所述方法在尽量不丢失文档特征的前提下,有效减少了较长文档相似度的计算复杂度,节省了计算资源,提高了计算效率。
为实现上述目的,本发明实施例采用如下技术方案:
第一方面,本发明实施例提供了一种文档相似度计算方法,所述方法包括:
对待匹配文档进行分词处理,并确定所述待匹配文档的特征词;
基于预设规则计算每个特征词的权重;
利用所述特征词的权重将所述待匹配文档进行向量化表示,得到所述待匹配文档的文档向量;
通过所述文档向量计算所述待匹配文档之间的相似度。
进一步的,所述基于预设规则计算每个特征词的权重,包括:
基于所述待匹配文档的特征词将所述待匹配文档切分为多个文本段;
根据每个文本段包含的特征词总数以及每个特征词在当前文本段出现的次数计算每个特征词的权重。
进一步的,所述根据每个文本段包含的特征词总数以及每个特征词在当前文本段出现的次数计算每个特征词的权重,包括:
按照如下公式计算每个特征词的权重:
其中:wsi表示文本段S中第i个特征词的权重,Cs表示文本段S的长度,Csk表示文本段S中第i个特征词在文本段S中出现的次数;
对应的,文本段S表示为S={ws1,ws2,ws3...wsn},待匹配文档D表示为D={S1,S2,S3……Sm},n表示文本段S中特征词的总数,m表示待匹配文档被切分的文本段的数量。
进一步的,所述通过所述文档向量计算所述待匹配文档之间的相似度,包括:
按照如下公式计算所述待匹配文档之间的相似度:
其中:sim(d1,d2)表示待匹配文档d1与待匹配文档d2之间的相似度,m表示待匹配文档被切分的文本段的数量,λj表示第j个文本段对应的权重,mj表示第j个文本段中特征词的总数,k表示每个文本段中特征词的序号,w1jk表示待匹配文档d1的第j个文本段中第k个特征词的权重,w2jk表示待匹配文档d2中的第j个文本段中第k个特征词的权重。
进一步的,所述对待匹配文档进行分词处理,并确定所述待匹配文档的特征词,包括:
利用python中的jieba分词工具对待匹配文档进行分词处理,并去除停用词,得到所述待匹配文档的特征词。
第二方面,本发明实施例提供了一种文档相似度计算方法装置,所述装置包括:
分词模块,用于对待匹配文档进行分词处理,并确定所述待匹配文档的特征词;
权重计算模块,用于基于预设规则计算每个特征词的权重;
向量化表示模块,用于利用所述特征词的权重将所述待匹配文档进行向量化表示,得到所述待匹配文档的文档向量;
相似度计算模块,用于通过所述文档向量计算所述待匹配文档之间的相似度。
进一步的,所述权重计算模块包括:切分单元和计算单元,其中,所述切分单元用于基于所述待匹配文档的特征词将所述待匹配文档切分为多个文本段;
所述计算单元,用于根据每个文本段包含的特征词总数以及每个特征词在当前文本段出现的次数计算每个特征词的权重。
进一步的,所述计算单元具体用于:按照如下公式计算每个特征词的权重:
其中:wsi表示文本段S中第i个特征词的权重,Cs表示文本段S的长度,Csk表示文本段S中第i个特征词在文本段S中出现的次数;
对应的,文本段S表示为S={ws1,ws2,ws3...wsn},待匹配文档D表示为D={S1,S2,S3……Sm},n表示文本段S中特征词的总数,m表示待匹配文档被切分的文本段的数量。
进一步的,所述相似度计算模块具体用于:
按照如下公式计算所述待匹配文档之间的相似度:
其中:sim(d1,d2)表示待匹配文档d1与待匹配文档d2之间的相似度,m表示待匹配文档被切分的文本段的数量,λj表示第j个文本段对应的权重,mj表示第j个文本段中特征词的总数,k表示每个文本段中特征词的序号,w1jk表示待匹配文档d1的第j个文本段中第k个特征词的权重,w2jk表示待匹配文档d2中的第j个文本段中第k个特征词的权重。
第三方面,本发明实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的文档相似度计算方法。
第四方面,本发明实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时实现如上述第一方面所述的文档相似度计算方法。
本发明实施例提供的一种文档相似度计算方法,通过对待匹配文档进行分词处理,并确定所述待匹配文档的特征词,基于预设规则计算每个特征词的权重,利用所述特征词的权重将所述待匹配文档进行向量化表示,得到所述待匹配文档的文档向量,通过所述文档向量计算所述待匹配文档之间的相似度的技术手段,实现了在尽量不丢失文档特征的前提下,有效减少了较长文档相似度的计算复杂度,节省了计算资源,提高了计算效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
图1为本发明实施例一提供的一种文档相似度计算方法流程示意图;
图2为本发明实施例二提供的一种文档相似度计算装置结构示意图;
图3为本发明实施例三提供的一种电子设备的结构示意图。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1为本发明实施例一提供的一种文档相似度计算方法流程示意图。本实施例公开的文档相似度计算方法旨在降低较长文档之间的相似度计算复杂度。所述文档相似度计算方法可以由文档相似度计算方法装置来执行,其中该装置可由软件和/或硬件实现,并一般集成在终端中,例如服务器等。具体参见图1所示,该方法包括如下步骤:
110、对待匹配文档进行分词处理,并确定所述待匹配文档的特征词。
示例性的,所述对待匹配文档进行分词处理,并确定所述待匹配文档的特征词,包括:
利用python中的jieba分词工具对待匹配文档进行分词处理,并去除停用词,得到所述待匹配文档的特征词。
所述停用词是指在信息检索中,为了节省存储空间和提高检索效率,在处理自然语言文本之前或之后自动过滤掉某些字或词,这些被过滤掉的字或词称为停用词。对于一个给定的目标,任何一类的词语都可以被选作停用词,停用词是基于给定目标,给定领域由人工输入的,非自动化生成的,人工输入的停用词会形成一个停用词表。通常,那些不能表示实际含义的词被当作停用词,例如:“的”、“把”以及“吗”等。
例如,对待匹配文档“d1=四倍和全息怎么换的,点击背包里面的装备,把四倍拖过去就行”进行分词处理并去除停用词后得到“d1=四倍全息怎么换,点击背包里面装备,四倍拖过去”,即待匹配文档d1的特征词包括:“四倍”、“全息”、“怎么”、“换”,“点击”、“背包”、“里面”、“装备”,“四倍”、“拖过去”十个特征词。
120、基于预设规则计算每个特征词的权重。
示例性的,所述基于预设规则计算每个特征词的权重,包括:
基于所述待匹配文档的特征词将所述待匹配文档切分为多个文本段;
根据每个文本段包含的特征词总数以及每个特征词在当前文本段出现的次数计算每个特征词的权重。
其中,所述基于所述待匹配文档的特征词将所述待匹配文档切分为多个文本段,具体可以是将设定数量的特征词切分为一个文本段,若所述设定数量不能被所述待匹配文档中的特征词总数整除,则通过补0的方式使剩余的特征词与0组成一个文本段,以使各文本段中特征词的总数相同;还可以是通过断句的方式将每句话切分为一个文本段,以包含特征词数量最多的句子为基准,其余句子通过补0的方式使得每句话中包含特征词的总数相同。例如对于待匹配文档“d1=四倍全息怎么换,点击背包里面装备,四倍拖过去”,可以将每4个特征词切分为一个文本段,分别得到第一文本段“d11=四倍全息怎么换”,第二文本段“d12=点击背包里面装备”,第三文本段“d13=四倍拖过去0 0”,可见第三文本段由于剩余特征词的数量不够4,则通过补0的方式使其特征词的总数与其他文本段中特征词的总数相同。
具体的,所述根据每个文本段包含的特征词总数以及每个特征词在当前文本段出现的次数计算每个特征词的权重,包括:
按照如下公式计算每个特征词的权重:
其中:wsi表示文本段S中第i个特征词的权重,Cs表示文本段S的长度,Csk表示文本段S中第i个特征词在文本段S中出现的次数;
对应的,文本段S表示为S={ws1,ws2,ws3...wsn},待匹配文档D表示为D={S1,S2,S3……Sm},n表示文本段S中特征词的总数,m表示待匹配文档被切分的文本段的数量。
例如,对于待匹配文档“d1=四倍全息怎么换,点击背包里面装备,四倍拖过去”,对应的文本段分别为第一文本段“d11=四倍全息怎么换”,第二文本段“d12=点击背包里面装备”和第三文本段“d13=四倍拖过去0 0”,则待匹配文档d1可表示为:d1={d11、d12、d13}。按照上述公式(1)可得第一文本段中每个特征词的权重分别为:1/4、1/4、1/4、1/4,则第一文本段d11可表示为:d11=[1/4、1/4、1/4、1/4],同样的原理,第二文本段d12=[1/4、1/4、1/4、1/4],第三文本段d13=[1/2、1/2、0、0]。
130、利用所述特征词的权重将所述待匹配文档进行向量化表示,得到所述待匹配文档的文档向量。
按照上述举例,可知待匹配文档d1的文档向量为d1={[1/4、1/4、1/4、1/4],[1/4、1/4、1/4、1/4],[1/2、1/2、0、0]}。
140、通过所述文档向量计算所述待匹配文档之间的相似度。
具体的,按照如下公式计算所述待匹配文档之间的相似度:
其中:sim(d1,d2)表示待匹配文档d1与待匹配文档d2之间的相似度,m表示待匹配文档被切分的文本段的数量,λj表示第j个文本段对应的权重,mj表示第j个文本段中特征词的总数,k表示每个文本段中特征词的序号,w1jk表示待匹配文档d1的第j个文本段中第k个特征词的权重,w2jk表示待匹配文档d2中的第j个文本段中第k个特征词的权重。其中,第j个文本段对应的权重λj根据人工经验进行设定,通常标题文本段、摘要文本段对应的权重较高,正文文本段对应的权重较低,各文本段对应的权重满足λ1+λ2+...+λm=1。
举例说明上述文档相似度计算过程:
假设待匹配长文档分别为第一文档d1=四倍和全息怎么换的,点击背包里面的装备,把四倍拖过去就行;第二文档d2=主播可以用四倍镜吗,四倍镜压枪更方便,比较喜欢四倍;分别对第一文档d1和第二文档d2进行分词、去除停用词处理,得到第一文档d1的特征词为d1=四倍全息怎么换,点击背包里面装备,四倍拖过去;第二文档d2的特征词为d2=主播可以用四倍镜,四倍镜压枪更方便,比较喜欢四倍;按照每四个特征词为一个文本段将第一文档d1和第二文档d2分别切分为3个文本段,即待匹配文档被切分的文本段的数量m=3。第一文档d1中的第一文本段d11=四倍全息怎么换,第二文本段d12=点击背包里面装备,第三文本段d13=四倍拖过去0 0;第二文档d2中的第一文本段d21=主播可以用四倍镜,第二文本段d22=四倍镜压枪更方便0,第三文本段d23=比较喜欢四倍,0。根据上述公式(1)可得每个文本段中每个特征词的权重,则第一文档d1中的第一文本段d11=[1/4、1/4、1/4、1/4],第二文本段d12=[1/4、1/4、1/4、1/4],第三文本段d13=[1/2、1/2、0、0];第二文档d2中的第一文本段d21=[1/4、1/4、1/4、1/4],第二文本段d22=[1/3、1/3、1/3、0],第三文本段d32=[1/3、1/3、1/3、0]。假设第一文本段d11和d21为标题,第二文本段d12和d22为摘要,第三文本段d13和d23为正文,对应的权重分别为:λ1=0.6,λ2=0.3,λ3=0.1,根据上述向量以及上述公式(2)可得第一文档d1与第二文档d2之间的相似度为:
本实施例提供的一种文档相似度计算方法,通过将待匹配较长文档进行切分,并对切分得到的每个文本段进行权重表征,最终得到整个较长文档的向量化表示,在此基础上,基于较长文档的向量化表示并借用余弦相似度的思想计算待匹配较长文档之间的相似度,实现了在尽量不丢失文本特征的情况下,有效减少较长文档相似度的计算复杂度,节省了计算资源,提高了计算效率。
进一步的,在上述实施例的基础上,所述文档相似度计算方法具体可以用于直播间在直播过程中对弹幕相似度的计算;例如在机器人会话中,根据水友弹幕计算与其相似度较高的答复语句,由机器人针对水友弹幕进行自动回复。
举例说明利用上述文档相似度计算方法计算两条待匹配弹幕文档相似度的计算过程:
假设所述两条待匹配弹幕文档分别为:第一弹幕文档d1=小姐姐人美声甜,可爱呀;第二弹幕文档d2=主播枪法如神,车技可以;分别对第一弹幕文档d1和第二弹幕文档d2进行分词、去除停用词处理,得到第一弹幕文档d1的特征词为d1=小姐姐人美声甜,可爱;第二弹幕文档d2的特征词为d2=主播枪法如神,车技;按照每两个特征词为一个文本段将第一弹幕文档d1和第二弹幕文档d2分别切分为2个文本段,即待匹配弹幕文档被切分的文本段的数量m=2。第一弹幕文档d1中的第一文本段d11=小姐姐人美声甜,第二文本段d12=可爱0;第二弹幕文档d2中的第一文本段d21=主播枪法如神,第二文本段d22=车技0。根据上述公式(1)可得每个文本段中每个特征词的权重,则第一弹幕文档d1中的第一文本段d11=[1/2、1/2],第二文本段d12=[1、0];第二弹幕文档d2中的第一文本段d21=[1/2、1/2],第二文本段d22=[1、0]。假设第一文本段d11和d21为标题,第二文本段d12和d22为摘要,对应的权重分别为:λ1=0.6,λ2=0.4,根据上述向量以及上述公式(2)可得第一弹幕文档d1与第二弹幕文档d2之间的相似度为:
尤其当弹幕文档较长时,通过上述文档相似度计算方法可有效减少文档相似度的计算复杂度,提高计算效率,实现机器人对水友弹幕的快速回复,提升用户体验。需要说明的是,当所述文档相似度计算方法应用于直播间直播过程中对弹幕相似度进行计算的场景时,为了提高对弹幕文档分词的准确性,可通过收集直播间直播领域内的领域词对python中的jieba分词工具进行学习训练实现,通过利用特定领域内的领域词对jieba分词工具进行学习训练,可使jieba分词工具对特定领域内的领域词有所记忆,实现提高分词准确度的目的。
实施例二
图2为本发明实施例二提供的一种文档相似度计算装置结构示意图。参见图2所示,所述装置包括:分词模块210、权重计算模块220、向量化表示模块230和相似度计算模块240;
其中,分词模块210,用于对待匹配文档进行分词处理,并确定所述待匹配文档的特征词;权重计算模块220,用于基于预设规则计算每个特征词的权重;向量化表示模块230,用于利用所述特征词的权重将所述待匹配文档进行向量化表示,得到所述待匹配文档的文档向量;相似度计算模块240,用于通过所述文档向量计算所述待匹配文档之间的相似度。
进一步的,权重计算模块220包括:切分单元和计算单元,其中,所述切分单元用于基于所述待匹配文档的特征词将所述待匹配文档切分为多个文本段;所述计算单元,用于根据每个文本段包含的特征词总数以及每个特征词在当前文本段出现的次数计算每个特征词的权重。
进一步的,所述计算单元具体用于:按照如下公式计算每个特征词的权重:
其中:wsi表示文本段S中第i个特征词的权重,Cs表示文本段S的长度,Csk表示文本段S中第i个特征词在文本段S中出现的次数;
对应的,文本段S表示为S={ws1,ws2,ws3...wsn},待匹配文档D表示为D={S1,S2,S3……Sm},n表示文本段S中特征词的总数,m表示待匹配文档被切分的文本段的数量。
进一步的,相似度计算模块240具体用于:
按照如下公式计算所述待匹配文档之间的相似度:
其中:sim(d1,d2)表示待匹配文档d1与待匹配文档d2之间的相似度,m表示待匹配文档被切分的文本段的数量,λj表示第j个文本段对应的权重,mj表示第j个文本段中特征词的总数,k表示每个文本段中特征词的序号,w1jk表示待匹配文档d1的第j个文本段中第k个特征词的权重,w2jk表示待匹配文档d2中的第j个文本段中第k个特征词的权重。
进一步的,分词模块210具体用于:利用python中的jieba分词工具对待匹配文档进行分词处理,并去除停用词,得到所述待匹配文档的特征词。
本实施例提供的文档相似度计算装置,通过对待匹配文档进行分词处理,并确定所述待匹配文档的特征词,基于预设规则计算每个特征词的权重,利用所述特征词的权重将所述待匹配文档进行向量化表示,得到所述待匹配文档的文档向量,通过所述文档向量计算所述待匹配文档之间的相似度的技术手段,实现了在尽量不丢失文档特征的前提下,有效减少了较长文档相似度的计算复杂度,节省了计算资源,提高了计算效率。
实施例三
图3为本发明实施例三提供的一种电子设备的结构示意图。如图3所示,该电子设备包括:处理器670、存储器671及存储在存储器671上并可在处理器670上运行的计算机程序;其中,处理器670的数量可以是一个或多个,图3中以一个处理器670为例;处理器670执行所述计算机程序时实现如上述实施例一中所述的文档相似度计算方法。如图3所示,所述电子设备还可以包括输入装置672和输出装置673。处理器670、存储器671、输入装置672和输出装置673可以通过总线或其他方式连接,图3中以通过总线连接为例。
存储器671作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中文档相似度计算方法装置/模块(例如,文档相似度计算装置中的分词模块210、权重计算模块220、向量化表示模块230和相似度计算统计模块240等)。处理器670通过运行存储在存储器671中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的文档相似度计算方法。
存储器671可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器671可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器671可进一步包括相对于处理器670远程设置的存储器,这些远程存储器可以通过网络连接至电子设备/存储介质。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置672可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置673可包括显示屏等显示设备。
实施例四
本发明实施例四还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种文档相似度计算方法,该方法包括:
对待匹配文档进行分词处理,并确定所述待匹配文档的特征词;
基于预设规则计算每个特征词的权重;
利用所述特征词的权重将所述待匹配文档进行向量化表示,得到所述待匹配文档的文档向量;
通过所述文档向量计算所述待匹配文档之间的相似度。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的文本分类相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,存储介质,或者网络设备等)执行本发明各个实施例所述的。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。