发明内容
鉴于现有技术中存在的问题,本发明的目的在于提供一种快速计算评论相似度的方法、装置及***,用于针对互联网信息,特别是:互联网信息的评论、回复等。针对这类短文本,采用适合短文本的相似度计算方法,可以实现减少对服务器CPU的运算依赖度和对服务器的存储评论内容数据库的访问次数,以此提高服务器的***处理效能。
为了达到上述目的,本发明提供了一种快速计算评论相似度的方法,其特征在于包括如下步骤:
S1、提取新评论关键字;包括
S11,将评论原始文本转化为可用处理文本;
S12,接着使用分词程序对已处理的评论文本进行分词;
S13,根据文本分词结果,抽取句子主干;
S14,根据停用词词表进一步过滤步骤S13所得到的特征关键字,最终提取得到有用的新的评论关键字;
S2、为提取的每个关键字查倒排索引及文本信息,找出与新评论文本有相同关键字的文本;
S3、计算新评论文本与索引文本间相同关键字的数量;
S4、根据新评论文本与索引文本间相同关键字的数量计算新文本与索引中文本的相似度;包括
S41,采用布尔权重的方法计算特征关键字权重;
S42,根据步骤S41获得的各个关键字的权重,采用Dice系数计算文本相似度,以两个文本间相同关键字的个数以及各个关键字的权重来衡量文本间的相似程度;
S5、获取新文本最高相似度得分,从而找出与新评论文本中最相似的文本。
S6,将新评论文本加入索引,生成新索引,进而当计算下一条评论时,所有已知评论都要加入倒排索引中。
此外,本发明还提供一种快速计算评论相似度的装置,其特征在于包括如下模块:
关键字提取模块,用于提取新评论的关键字;包括
用于将评论原始文本转化为可用处理文本的模块;
用于使用分词程序对已处理的评论文本进行分词的模块;
用于根据文本分词结果,抽取句子主干的模块;
用于根据停用词词表进一步过滤所得到的特征关键字,最终提取得到有用的新的评论关键字的模块;
倒排索引模块,用于为提取的每个关键字查倒排索引及文本信息,找出与新评论文本有相同关键字的文本;
相同关键字计算模块,用于计算新评论文本与索引文本间相同关键字的数量;
相似度计算模块,用于根据新评论文本与索引文本间相同关键字的数量计算新文本与索引中文本的相似度;包括
用于采用布尔权重的方法计算特征关键字权重的模块;
用于根据获得的各个关键字的权重,采用Dice系数计算文本相似度,以两个文本间相同关键字的个数以及各个关键字的权重来衡量文本间的相似程度的模块;
相似度文本确定模块,用于获取新文本最高相似度得分,从而找出与新评论文本中最相似的文本;
索引添加模块,用于将新评论文本加入索引,生成新索引,进而当计算下一条评论时,所有已知评论都要加入倒排索引中。
此外,本发明还提供一种快速计算评论相似度的***,其特征在于包括如下装置:
关键字提取装置,用于提取新评论的关键字;包括
用于将评论原始文本转化为可用处理文本的模块;
用于使用分词程序对已处理的评论文本进行分词的模块;
用于根据文本分词结果,抽取句子主干的模块;
用于根据停用词词表进一步过滤所得到的特征关键字,最终提取得到有用的新的评论关键字的模块;
倒排索引装置,用于为提取的每个关键字查倒排索引及文本信息,找出与新评论文本有相同关键字的文本;
相同关键字计算装置,用于计算新评论文本与索引文本间相同关键字的数量;
相似度计算装置,用于根据新评论文本与索引文本间相同关键字的数量计算新文本与索引中文本的相似度;包括
用于采用布尔权重的方法计算特征关键字权重的模块;
用于根据获得的各个关键字的权重,采用Dice系数计算文本相似度,以两个文本间相同关键字的个数以及各个关键字的权重来衡量文本间的相似程度的模块;
相似度文本确定装置,用于获取新文本最高相似度得分,从而找出与新评论文本中最相似的文本;
索引添加装置,用于将新评论文本加入索引,生成新索引,进而当计算下一条评论时,所有已知评论都要加入倒排索引中。
本发明所述的快速分析计算评论相似度的方法、装置及***可以快速计算短文本相似度,运算程序以空间换时间,减少CPU计算时间,具体而言;
1、采用倒排索引方式存储文本特征关键字,增强相似度文本查找速度,不需要文本之间逐一相似度计算,减少计算量;
2、保留每个文本相似度计算时的中间计算值,文本相似度计算时直接使用,不需要多次计算。
具体实施方式
为使本发明的上述目的、特征和优点更加明显易懂,下面结合附图和具体实施例对本发明作进一步详细的说明:
图1是本发明所述的快速计算评论相似度的方法的流程图。如图1所示,本发明方法具体执行过程如下:
S1、提取新评论关键字;具体提取过程如下:
步骤S11,将评论原始文本转化为可用处理文本,如去掉内部标签、表情等信息;
转化程序可以使用自身程序来进行文本处理,例如,对于对于微博这类短文本,可以将短文本中的内部标签、新浪微博标签去掉,在转发中出现的人名“//”,话题标签“##”等都去掉,仅抽取评论的自身内容,此外,也通过在数据库中存储"[]"如[赞]等表情标签,可以将短文本中的表情标签信息去掉
步骤S12,接着使用分词程序对已处理的评论文本进行分词;
该过程可以使用自身程序实现,也可以使用第三方中文分词程序,词典从互联网上抓取,从而可以不断丰富了本地分词词库;分词算法采用最大逆向匹配原则,根据词典中的词对文本进行分词。
步骤S13,根据文本分词结果,抽取名词、动词等句子主干;
抽取名词、动词、形容词等是根据程序进行词性标注得来的,使用外部程序完成。
比如“黄晓明哈哈剧情发展”标记后得“黄晓明/nh哈哈/o剧情/n发展/v”。
如果对于一些复杂句子结构,有可能出现标记错误情况,导致抽取会出现错误。根据测试词性标注的准确率会在95%以上,存在少部分错误可能影响最后相似度得分,但由于高准确率得分范围变化不会太大。所以能够比较准确地抽取到句子主干。
步骤S14,最后根据停用词词表进一步过滤步骤S13所得到特征关键字,最终提取得到有用的新的评论关键字。
停用词词表中的词,表示这些词对文本意思的影响不大,可以忽略。停用词词表部分来源于互联网,少部分使用统计方法得出,比如统计大规模评论中发现后“沙发”这个关键字得分非常低,可以加入停用词词表。此外,更多的停用词,例如:似乎、的、当然等等。
S2、为提取的每个关键字查倒排索引及文本信息,找出与新评论文本有相同关键字的文本;对每个关键字建立一个索引,索引文本为需要做相似度分析的文本。倒排索引的目的以便于快速查找文本及文本信息;
排索引是搜索引擎中使用的一种技术方法。倒排索引实质是根据文本中的关键词建立一个查找机制,来查找文本的一种方法。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件。
本发明建立倒排索引具体过程如下:
定义两张表a和b;其中,表a的每一行存储评论的文本、抽取的特征关键字信息、以及一个代表文本的唯一id号;表b是每一行存储关键字及一组id序列。根据表a的文本所生成关键字对应一个文本的id序列。表b生成规则是:遍历表a中所有文本,对每一个文本中出现的关键字,将id号添加到表b关键字对应的id序列中,如果没有该关键字则加入一组新的关键字。
倒排索引使用过程,例如,找出含有关键字“你好”的文档,可以根据表b快速定位到关键字“你好”,并获取到对应的id序列,根据id查找表a中id对应的文档。
S3、计算新评论文本与索引文本间相同关键字的数量;
具体过程如下:
根据S2步骤中新评论文本与其他所有文本中包含相同的关键字的索引文本,计算新评论文本与所有文本的关键字个数,由于S2步骤已经找出了与新文本有相同关键字的文本,所以本步骤中“所有文本”是一个被简化的区间,所得到的结果为文本间相同关键字的个数,这个关键字个数就是下面相似度计算公式Dice方法中comm(s1,s2)值。
统计各文本与新文本之间相同特征的信息,这一信息可以是关键字,本发明的文本特征只使用文本中的关键字来表示,所以计算相似度的时候只使用S1步骤中抽取出来的特征关键字,其他的方法可能出现一些信息,如文本长度、符号信息等也算是文本特征,也可以作为对文本进行分析的特征信息。
评论特征信息指公式中leng(s2)这个值,这个值表示使用特种关键字计算的一个文本信息值,如本发明中使用Dice方法计算文本相似度,那么该值为文本中特征关键字的个数即可。这个值可以保存在S2的表a中,以方便与其他文本进行相似度时使用。
S4、根据新评论文本与索引文本间相同关键字的数量计算新文本与索引中文本的相似度;该步骤的具体实现过程如下:
步骤S41,采用采用布尔权重的方法计算特征关键字权重;由于评论内容为短文本,文本包含的特征词数量较少,所以采用布尔权重的方法计算特征权重;常用的特征权重方法有:布尔权重、词频(tf)权重、tf-idf权重。根据实验表明如果使用tf-idf方法计算特征权重,会相对增加计算量,且计算相似度的效果没有明显变化,所以采用布尔权重的方法计算特征权重。
步骤S42,根据步骤S41获得的各个关键字的权重,采用Dice系数计算文本相似度,以两个文本间相同关键字的个数以及各个关键字的权重来衡量文本间的相似程度;
Dice系数计算公式为:
Dice(s1,s2)=2×comm(s1,s2)/(leng(s1)+leng(s2))
其中,comm(s1,s2)是s1、s2中相同字符的个数,leng(s1),leng(s2)是字符串s1、s2的长度。
举例说明如下,例如:已经经过提取关键字处理之后的句子为新文本C1:电影黄晓明扮演小明;
已有索引文本包括:
索引文本C2:电影黄晓明演技
索引文本C3:赵薇扮演小薇
索引文本C4:小薇女孩
首先,根据“电影”、“黄晓明”,“扮演”,“小明”等关键字找出倒排索引中对应文档C2和C3(C2、C3、C4已经加入倒排索引)。
然后,计算C1与C2、C1与C3关键字相同的个数,即公式中的comm(s1,s2)。
最后,使用Dice相似度计算公式,计算C1与C2的相似度,C1与C3的相似度。
S5、获取新文本最高相似度得分,从而找出与新评论文本中最相似的文本。最终得到相似度的一个分数,该分数在0-1之间,1表示文本内容最相近,0表示最不相近;得到新评论相似度得分的目的是判断该新的评论是否是抄袭,也可以基于此确定被引用次数最多的评论为精华评论,从而降低抄袭评论的精华评论得分。
S6、将新评论文本加入索引,生产新索引,进而当计算下一条评论时,所有已知评论都要加入倒排索引中。
本发明技术方案可以在一单独装置中实现,由此也可以获得一种能够完成此技术方案的实体装置,图2是本发明所述的快速计算评论相似度的装置的框图;具体包括如下模块:
关键字提取模块,用于提取新评论的关键字;具体工作过程与方法步骤S1的具体过程相同。
倒排索引模块,用于为提取的每个关键字查倒排索引及文本信息,找出与新评论文本有相同关键字的文本;具体工作过程与方法步骤S2的具体过程相同。
相同关键字计算模块,用于计算新评论文本与索引文本间相同关键字的数量;具体工作过程与方法步骤S3的具体过程相同。
相似度计算模块,用于根据新评论文本与索引文本间相同关键字的数量计算新文本与索引中文本的相似度;具体工作过程与方法步骤S4的具体过程相同。
相似度文本确定模块,用于获取新文本最高相似度得分,从而找出与新评论文本中最相似的文本;具体工作过程与方法步骤S5的具体过程相同。
索引添加模块,用于将新评论文本加入索引,生产新索引,进而当计算下一条评论时,所有已知评论都要加入倒排索引中。
此外,本发明也可以通过分离的各个装置来协同完成,由此可以获得一种能够完成此技术方案的***,图3是本发明所述的快速计算评论相似度的***的框图,具体包括如下装置:
关键字提取装置,用于提取新评论的关键字;具体工作过程与方法步骤S1的具体过程相同。
倒排索引装置,用于为提取的每个关键字查倒排索引及文本信息,找出与新评论文本有相同关键字的文本;具体工作过程与方法步骤S2的具体过程相同。
相同关键字计算装置,用于计算新评论文本与索引文本间相同关键字的数量;具体工作过程与方法步骤S3的具体过程相同。
相似度计算装置,用于根据新评论文本与索引文本间相同关键字的数量计算新文本与索引中文本的相似度;具体工作过程与方法步骤S4的具体过程相同。
相似度文本确定装置,用于获取新文本最高相似度得分,从而找出与新评论文本中最相似的文本;具体工作过程与方法步骤S5的具体过程相同。
索引添加装置,用于将新评论文本加入索引,生产新索引,进而当计算下一条评论时,所有已知评论都要加入倒排索引中。
综上所述,本发明的快速计算评论相似度的方法、装置及***,由于评论内容为短文本,文本包含的特征词数量较少,所以采用布尔权重的方法计算特征权重,采用Dice系数计算两个字符串的相似度,对相似度计算复杂做出优化,其具有以下优点:可以快速计算短文本相似度,运算程序以空间换时间,减少CPU计算时间。采用倒排索引方式存储文本特征关键字,增强相似度文本查找速度,不需要文本之间逐一相似度计算,减少计算量。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的,例如调整接口调用顺序、改变消息格式和内容、使用不同的编程语言(如C、C++、Java等)实现等。这些都在本发明的权利要求所限定的保护范围内。