CN112182337B - 从海量短新闻中识别相似新闻的方法及相关设备 - Google Patents
从海量短新闻中识别相似新闻的方法及相关设备 Download PDFInfo
- Publication number
- CN112182337B CN112182337B CN202011093664.9A CN202011093664A CN112182337B CN 112182337 B CN112182337 B CN 112182337B CN 202011093664 A CN202011093664 A CN 202011093664A CN 112182337 B CN112182337 B CN 112182337B
- Authority
- CN
- China
- Prior art keywords
- news
- similar
- word
- vector
- characters
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- 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/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于大数据分析技术领域,具体涉及一种识别相似新闻的方法及相关设备。从海量短新闻中识别相似新闻的方法及相关设备,其中方法包括:获取预设的格式化主体词汇并建立索引;获取多篇新闻,对每篇新闻进行向量化;计算每篇目标新闻与其他新闻是否相似,将与目标新闻相似的其他新闻作为相似新闻;提取目标新闻和相似新闻之间差异的多个字符,在格式化主体词汇建立的索引中查找每个字符,判定目标新闻与相似新闻是否相似;输出新闻相似结果。本发明能很准确地计算出短新闻之间是否相似,能够识别出除了格式化主体不同之外基本一致的格式化新闻是不相似的,避免了格式化新闻都被判为相似的错误。
Description
技术领域
本发明属于大数据分析技术领域,具体涉及一种识别相似新闻的方法及相关设备。
背景技术
海量文本相似度算法是文本处理中的重要基础性算法,很多文本处理程序如新闻分析中的新闻去重、搜索引擎的网页去重等都需要能够处理海量文本的相似度算法。
目前主流的海量文本相似度算法是simhash算法。simhash算法是一种局部敏感哈希算法,原理是将文本分解为词,计算每个词的hash值,并加权求和,求和后大于0的位置为1,等于0的位置保持为0,由此得到文本的hash串。过比较文本hash串的海明距离来判断文本是否相似,海明距离大于阈值的为不相似,反之为相似。为了减少比较次数,通常会把hash串分割成n段并以各段为key建立索引,n的值为海明距离阈值加1,因此通常simhash算法使用一个固定阈值。
除了基本的simhash算法之外,还有一些基于simhash的改进算法。如申请号为CN201910225442.9的专利《改进的Simhash算法在文本去重中的方法及系统》提出了一种改进词权重的方式,基于TF-IDF算法与信息熵进行加权得到权重。申请号为CN201810535318.8的专利《一种基于改进的simhash文本对比方法》提出了一种基于改进的simhash文本对比方法,通过对文章标题出现次数较高的词的权重进行设置,进而提高查重的准确率。
simhash算法及其改进算法,对于较长的文本计算相似度效果较好,但对于较短如600字以下的文本效果欠佳。原因是较长的文本会在加权求和的过程中把不同文字带来的影响进行稀释,从而减少两篇文本最终hash值的海明距离;而对于短文本,不同文字带来的影响相对较大,少量文字的不同也会导致两篇文本最终hash值的海明距离较大,从而使文本被判为不相似。而且在实践中simhash算法往往使用固定阈值,无法自动适应文本长度的变化。
Simhash算法的另一个缺陷是无法正确处理格式化新闻。在新闻特别是财经新闻中,很多新闻是一种模板式的结构,除了新闻描述的主体如股票名称、大宗商品(以下称为“格式化主体”)等之外几乎完全一致。Simhash算法往往会把这种新闻判为相似,但是主体不同的两篇新闻不应该被判为相似新闻。通过设置词权重优化simhash的方法一定程度上可以缓解对格式化新闻的误判,但对格式化主体词汇权重进行加强的同时也会影响到非格式化新闻,导致算法对非格式化新闻的效果变差。
发明内容
本发明针对现有的simhash算法及其改进算法针对于较短文本和格式化主体的新闻,相似度识别效果较差的技术问题,目的在于提供一种从海量短新闻中识别相似新闻的方法及相关设备。
从海量短新闻中识别相似新闻的方法,包括:
获取预设的格式化主体词汇并建立索引;
获取多篇新闻,对每篇所述新闻进行向量化;
计算每篇目标新闻与其他新闻是否相似,将与所述目标新闻相似的其他新闻作为相似新闻;
提取所述目标新闻和所述相似新闻之间差异的多个字符,在所述格式化主体词汇建立的索引中查找每个所述字符,如果多个所述字符能构成多于预设目标阈值的格式化主体词汇,则判定所述目标新闻与所述相似新闻不相似,否则判定所述目标新闻与所述相似新闻相似;
输出新闻相似结果。
可选的,所述获取预设的格式化主体词汇并建立索引,包括:
从数据库中获取预设的格式化主体词汇,加入到词表W;
分别建立索引数据结构IW、名称长度数组WL;
从所述词表W中取出词wi,i∈[1,N];其中,i表示wi是W中的第i个词,W中共有N个词;
取wi中的第j个字cj,j∈[1,n];其中,n是wi中的英文、阿拉伯数字和GB2312编码汉字字符的数量;
将字cj转换为位置索引idxj;
将i添加到索引数据结构IW[idxj]内;
直至词wi内的每个字都完成位置索引的转换后,将n添加到名称长度数组WL中,当所述词表W中所有的词wi完成位置索引,则初始化结束。
可选的,所述获取多篇新闻,对每篇所述新闻进行向量化前,包括获取多篇新闻,对每篇所述新闻进行过滤:
获取新闻Di,i∈[1,M],M是新闻的总数量;
如果所述新闻Di的第一个非空自然段中有以第一预设字段开头的句子,则去除该句子,如果所述新闻Di的前两个非空自然段中有以第二预设字段开头的自然段,则去除该段;
将所述新闻Di中全角的英文字母和数字字符转为半角字符,英文字母转为小写,繁体字转为简体字;
去除所述新闻Di中所有的非汉字、英文和数字的字符。
可选的,所述对每篇所述新闻进行过滤后,还包括:
判断过滤后的所述新闻Di的字符总数是否小于预设总数,如果小于则进行所述对每篇所述新闻进行向量化步骤,否则去除所述新闻Di。
可选的,所述获取多篇新闻,对每篇所述新闻进行向量化,包括:
建立新闻向量矩阵A,所述新闻向量矩阵A为二维矩阵,所述新闻向量矩阵A的每一行对应一篇新闻的文字向量;
将过滤后的所述新闻Di转为GB2312编码,将所述新闻Di转化为文字向量Vi,转化时声明一个文字向量Vi,计算所述新闻Di中每个字符ck在所述文字向量Vi中的位置,并计算字符ck出现次数;其中,k∈[1,K],K是Di中字符的数量;
将所述文字向量Vi添加到所述新闻向量矩阵A中,令Ai=Vi;
直至所有的新闻均转化为文字向量并添加到所述新闻向量矩阵A中。
可选的,将字cj转换为位置索引idxj的计算方式为:
如果所述字cj是阿拉伯数字字符,则所述位置索引idxj=int(cj);
如果所述字cj是英文字母字符,则所述位置索引idxj=ord(cj)-87,ord(cj)表示取所述字cj的ASCII编码;
如果所述字cj是GB2312范围内的汉字,则所述位置索引idxj=(high_bytej-0xB0)*100+low_bytej-0xA0+36;其中,高位字节为high_bytej,低位字节为low_bytej;
如果所述字cj非汉字、英文和阿拉伯数字的字符,则跳过所述字cj;
将字cj转换为位置索引idxj的计算方式与所述字符ck在所述文字向量Vi中的位置的计算方式相同。
可选的,所述计算每篇目标新闻与其他新闻是否相似,将与所述目标新闻相似的其他新闻作为相似新闻,包括:
通过矩阵减法计算所述目标新闻和所有其他新闻向量的差,得到两个新闻之间的差异量,判断所述差异量是否满足预设的相似阈值条件,将满足所述相似阈值条件的新闻作为相似新闻。
可选的,每篇所述新闻进行向量化后得到新闻向量矩阵A,取所述新闻向量矩阵A的行向量Ai,i∈[1,M],M是新闻的总数量,将Ai转为维度为[1,7236]的二维矩阵B,对所述二维矩阵B进行自动扩展,使得所述二维矩阵B与所述新闻向量矩阵A的维度相等,做矩阵减法C=A-B;
取矩阵C的行向量Cj,j∈[i+1,M],计算所述行向量Cj中大于0的值的和,记为差异量Posij,计算所述行向量Cj中小于0的值的和的绝对值,记为差异量Negij;
判断所述差异量Posij和所述差异量Negij是否满足所述相似阈值条件。
可选的,所述判断所述差异量Posij和所述差异量Negij是否满足所述相似阈值条件,包括:
通过分段线性函数来判断所述差异值是否满足相似阈值条件。
可选的,所述通过分段线性函数来判断所述差异值是否满足相似阈值条件,包括:
计算用于判断相似阈值条件的两个数值:
mid_valuei=K*0.08
off_seti=K*0.2
其中,K为所述目标新闻中字符的数量;
如果所述差异量Posij和所述差异量Negij都大于等于数值mid_valuei,则不满足所述相似阈值条件;
如果所述差异量Posij和所述差异量Negij都小于数值mid_valuei,则满足所述相似阈值条件,否则,
如果所述差异量posij小于数值mid_valuei,则计算:
yij=Negij+1.5*Posij
如果yij>off_seti,则不满足所述相似阈值条件,否则满足所述相似阈值条件;
如果所述差异量Negij小于数值mid_valuei,则计算:
yij=Posij+1.5*Negij
如果yij>off_seti,则不满足所述相似阈值条件,否则满足所述相似阈值条件。
可选的,所述提取所述目标新闻和所述相似新闻之间差异的多个字符,在所述格式化主体词汇建立的索引中查找每个所述字符,如果多个所述字符能构成多于预设目标阈值的格式化主体词汇,则判定所述目标新闻与所述相似新闻不相似,否则判定所述目标新闻与所述相似新闻相似,包括:
提取所述行向量Cj中大于0的值的位置,记为Pos_idx,定义一个长度等于名称长度数组WL长度的列表Retr_pos,定义一个整数name_diff=0;
从Pos_idx中取Posl,l∈[1,len(Pos_idx)],从建立的索引数据结构IW[Posl]中逐个取值IW[Posl][h],h∈[1,len(IW[Posl])],令Retr_pos[IW[Posl][h]]+=1,如果Retr_pos[IW[Posl][h]]≥WL[IW[Posl][h]],令name_diff+=1;
直至l等于len(Pos_idx)后,提取Cj中小于0的值的位置,记为Neg_idx,从Neg_idx中取Negl,l∈[1,len(Neg_idx)],从IW[Negl]中逐个取值IW[Negl][h],h∈[1,len(IW[Negl])],令Retr_pos[IW[Negl][h]]+=1,如果Retr_pos[IW[Negl][h]]≥WL[IW[Nwgl][h]],令name_diff+=1;
直至l等于len(Neg_idx),如果name_diff>2,则判定新闻i和新闻j不相似,否则判定新闻i和新闻j是相似的,记录下相似对(i,j)。
从海量短新闻中识别相似新闻的装置,包括:
初始化模块,用于获取预设的格式化主体词汇并建立索引;
新闻向量化模块,用于获取多篇新闻,对每篇所述新闻进行向量化;
计算新闻相似性模块,用于计算每篇目标新闻与其他新闻是否相似,将与所述目标新闻相似的其他新闻作为相似新闻;
格式化新闻判别模块,用于提取所述目标新闻和所述相似新闻之间差异的多个字符,在所述格式化主体词汇建立的索引中查找每个所述字符,如果多个所述字符能构成多于预设目标阈值的格式化主体词汇,则判定所述目标新闻与所述相似新闻不相似,否则判定所述目标新闻与所述相似新闻相似;
输出结果模块,用于输出新闻相似结果。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述从海量短新闻中识别相似新闻的方法的步骤。
一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述从海量短新闻中识别相似新闻的的步骤。
本发明的积极进步效果在于:本发明采用从海量短新闻中识别相似新闻的方法,能很准确地计算出短新闻之间是否相似,并且还能够识别出除了格式化主体不同之外基本一致的格式化新闻是不相似的,避免了格式化新闻都被判为相似的错误。
附图说明
图1为本发明方法的一种流程图;
图2为本发明初始化流程图;
图3为本发明单篇新闻向量化流程图;
图4为本发明计算相似新闻流程图;
图5为本发明分段函数的一种函数图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示进一步阐述本发明。
参照图1,从海量短新闻中识别相似新闻的方法,包括如下具体步骤:
S1,初始化:获取预设的格式化主体词汇并建立索引。
在一个实施例中,参照图2,本步骤的初始化过程,具体采用如下方式:
S101,从数据库中获取预设的格式化主体词汇,加入到词表W,转到下一步。
S102,分别建立索引数据结构IW、名称长度数组WL,转到下一步。
其中,索引数据结构IW是一个长度为7236的python列表,列表的每个元素是一个空的集合(python的set)。
名称长度数组WL是一个空的python列表。
S103,从词表W中取出词wi,i∈[1,N];其中,i表示wi是W中的第i个词,W中共有N个词,转到下一步。
S104,取wi中的第j个字cj,j∈[1,n];其中,n是wi中的英文、阿拉伯数字和GB2312编码汉字字符的数量,转到下一步。
S105,将字cj转换为位置索引idxj。
在一个实施例中,位置索引idxj的计算方法如下:
S10501,如果字cj是阿拉伯数字字符,则位置索引idxj=int(cj)。
S10502,如果字cj是英文字母字符,则位置索引idxj=ord(cj)-87,ord(cj)表示取字cj的ASCII编码。
S10503,如果字cj是GB2312范围内的汉字,则位置索引idxj=(high_bytej-0xB0)*100+low_bytej-0xA0+36;其中,高位字节为high_bytej,低位字节为low_bytej。
由于GB2312是用两个字节来表示汉字,因此本步骤把cj汉字编码的两个字节拆开,取高位字节为high_bytej,低位字节为low_bytej。另外,由于字节存储有高位优先和低位优先两种情况,因此具体实施时需要预先确定运行环境上是哪一种情况后,获取对应的高位字节和低位字节。
例如汉字'啊'的高位字节是0xB0,低位字节是0xA1。
S10504,如果字cj非汉字、英文和阿拉伯数字的字符,即字cj不在以上三种范围内,则跳过字cj,转到S107。
S106,将i添加到索引数据结构IW[idxj]内,即执行IW[idxj].add(i),转到下一步。
S107,如果j==n,转到下一步,否则j+=1,转到S104。
S108,将n添加到名称长度数组WL,即执行WL.append(n),转到下一步。
S109,如果i==N,转到下一步,否则i+=1,转到S103。
S110,初始化结束。
S2,新闻过滤:获取多篇新闻,对每篇新闻进行过滤。
本步骤为可选步骤,在获取了多篇新闻后,可以先对每篇新闻进行过滤,也可以直接进行后续对每篇新闻进行向量化步骤。
具体的,本发明在对新闻向量化之前对新闻内容进行了过滤,去除了“原标题”、“摘要”等内容,并去除了除汉字、英文和数字之外的字符,从而排除掉了噪音,提升了相似度计算的准确性。
S3,新闻向量化:对每篇新闻进行向量化。
为了快速地计算短新闻之间的文本相似度,并减少内存占用,本发明将短新闻转为长度为7236的向量进行存储,其中10位是数字字符位,26位是英文字符位,7200位是汉字字符位。每个汉字、英文字母和数字分别对应向量上的一个位置,汉字、英文字母和数字都可以通过其编码直接计算出字符在向量中的位置,位置上的值表示该字符在新闻中出现的次数。为了减少内存占用,汉字采用GB2312字符集,GB2312编码包含的汉字是6763个,但编码区间中存在空白位,为了简化计算,使得从字符计算出位置的计算尽量简化,本发明中保留了GB2312中的空位,因此汉字字符位是7200位。GB2312中包含了汉字的常见字,非常见字未包含在内,但是为了减少内存占用,本发明在计算中剔除了非常见字。由于本发明所处理的文本主要是新闻文本,而新闻的受众是广大普通读者,因此新闻中的非常见字较为少见,对于新闻这种文体而言,剔除非常见字带来的误差可以忽略。
具体的,计算字符在向量中位置的方式是直接从字符的编码计算出位置。阿拉伯数字字符对应的位置是向量中的第0-9位,可以直接将数字字符的数据类型从文本转为数字得到。英文字符对应的位置是向量中的第10-35位,通过英文字符的ASCII编码减去'a'的ASCII编码再加上10得到。汉字字符对应的位置是向量中第36位及以后的位置,计算方式是通过汉字字符的GB2312编码计算得到。GB2312是用两个字节来表示汉字,对于汉字ck,把编码的两个字节拆开,分为高位字节high_bytek和低位字节low_bytek。由于字节存储方式有高位优先和低位优先两种,所以要先确定运行环境上是哪一种。作为参考,汉字'啊'的高位字节是0xB0,低位字节是0xA1。汉字字符ck在向量中的位置idxk=(high_bytek-0xB0)*100+low_bytek-0xA0+36。
本发明中计算字符在向量中位置的耗时是常数时间,而且计算公式都是线性公式,因此计算位置消耗的时间优化到了最低。
S4,计算新闻相似性:计算每篇目标新闻与其他新闻是否相似,将与目标新闻相似的其他新闻作为相似新闻。
本步骤通过矩阵减法计算目标新闻和所有其他新闻向量的差,得到两个新闻之间的差异量,判断差异量是否满足预设的相似阈值条件,将满足相似阈值条件的新闻作为相似新闻。
上述设计将要计算相似度的新闻的向量存为矩阵,计算相似度时,通过矩阵减法计算目标新闻向量和所有新闻向量的差,这个差表示了两个新闻间字符的差异量,再根据阈值函数判断差异量是否满足相似阈值条件,满足相似阈值条件的新闻称为和目标新闻向量相似的新闻。
为了解决固定阈值带来的适应性差的问题,本发明的一个实施方式为采用一个分段线性函数来计算向量的差异量是否满足相似阈值条件,且函数的参数与目标新闻的长度相关,以此来避免固定阈值带来的对不同长度文本适应性不佳的问题。
为了提高运算速度,本发明中所涉及向量间计算和矩阵间计算的部分均使用能够进行矩阵运算的软件工具进行,如python的numpy等。
S5,格式化新闻判别:提取目标新闻和相似新闻之间差异的多个字符,在格式化主体词汇建立的索引中查找每个字符,如果多个字符能构成多于预设目标阈值的格式化主体词汇,则判定目标新闻与相似新闻不相似,否则判定目标新闻与相似新闻相似。
为了解决格式化新闻被误判为相似的问题,本发明预先加载了格式化主体词汇,并对这些词建立以字为key的倒排索引。当一篇新闻被判定为和目标新闻向量相似之后,提取出该新闻和目标新闻之间差异的字符,并在倒排索引中查找这些字符。如果差异的字符能构成多于阈值个格式化主体词,那么判定这两篇新闻是不相似的,反之则判定为相似的,这个判定的结果是最终结果。
S6,输出结果:输出新闻相似结果。
在一个实施例中,对新闻进行S2至S6的具体方式如下:
S201,获取新闻Di,i∈[1,M],M是新闻的总数量,转到下一步。
S202,如果新闻Di的第一个非空自然段中有以第一预设字段开头的句子,则去除该句子,如果新闻Di的前两个非空自然段中有以第二预设字段开头的自然段,则去除该段,转到下一步。
其中,第一预设字段可以设置为“原标题”,第二预设字段可以设置为“摘要”。
S203,将新闻Di中全角的英文字母和数字字符转为半角字符,英文字母转为小写,繁体字转为简体字,转到下一步。
S204,去除新闻Di中所有的非汉字、英文和数字的字符。
S205,判断过滤后的新闻Di的字符总数是否小于预设总数,如果小于则对新闻Di进行向量化步骤,否则去除新闻Di,i+=1,转到S201。
本发明设定的短新闻标准是过滤后字符数小于等于MAX_LEN,MAX_LEN可根据实际情况调整,MAX_LEN的一个可选值是600。由于相似新闻的长度可能大于MAX_LEN,因此留出一定的余量,过滤后字符数小于等于MAX_LEN+100的新闻都纳入计算。即本发明优选预设总数为MAX_LEN+100。
S301,建立新闻向量矩阵A,新闻向量矩阵A为二维矩阵,新闻向量矩阵A的每一行对应一篇新闻的文字向量。
S302,将过滤后的新闻Di转为GB2312编码,将新闻Di转化为文字向量Vi,然后转到下一步。
在一个实施例中,将新闻Di转化为文字向量Vi的方法如下:
S30201,声明一个文字向量Vi。
本步骤中的文字向量Vi长度等于7236,数值类型为2字节unsigned int,Vi的数据类型应为可做矩阵运算的类型。
S30202,计算新闻Di中每个字符ck在文字向量Vi中的位置,并计算字符ck出现次数;其中,k∈[1,K],K是Di中字符的数量。
具体的,字符ck在文字向量Vi中的位置的计算方式与将字cj转换为位置索引idxj的计算方式相同,即:
参照图3,对于每个字符ck:
如果字符ck是阿拉伯数字字符,则字符ck在文字向量Vi中的位置idxk=int(ck)。
如果字符ck是英文字母字符,则字符ck在文字向量Vi中的位置idxk=ord(ck)-87,ord(ck)表示取字符ck的ASCII编码。
如果字符ck是GB2312范围内的汉字,则字符ck在文字向量Vi中的位置idxk=(high_bytek-0xB0)*100+low_bytek-0xA0+36。其中,高位字节为high_bytek,低位字节为low_bytek。
如果字符ck非汉字、英文和阿拉伯数字的字符,则跳过字符ck;
文字向量Vi的idxk位加1,即Vi[idxk]+=1。
S303,将文字向量Vi添加到新闻向量矩阵A中,令Ai=Vi,转到下一步;
S304,如果i等于M,转到下一步,否则i+=1,转到S201;
参照图4,对于新闻i计算与其他新闻的相似性:
S401,取新闻向量矩阵A的行向量Ai,i∈[1,M],将Ai转为维度为[1,7236]的二维矩阵B,对二维矩阵B进行自动扩展,使得二维矩阵B与新闻向量矩阵A的维度相等,做矩阵减法C=A-B,转到下一步;
本步骤中,可利用预设的数学计算工具的广播机制,例如NumPy广播机制,对二维矩阵B做自动扩展后,使得二维矩阵B和新闻向量矩阵A的维度相等,从而满足矩阵减法的要求。
S402,取矩阵C的行向量Cj,j∈[i+1,M],计算行向量Cj中大于0的值的和,记为差异量Posij,计算行向量Cj中小于0的值的和的绝对值,记为差异量Negij,转到下一步;
S403,判断差异量Posij和差异量Negij是否满足相似阈值条件,当满足相似阈值条件时,转到下一步,当不满足相似阈值条件时,转到S510。
在一个实施方式中,计算差异量是否满足相似阈值条件的方法如下:
参照图5,通过分段线性函数来判断差异值是否满足相似阈值条件,分段线性函数的表达式为:
令x=Negij/K,y=Posij/K,当y<y^时,即(x,y)落在函数曲线和横坐标轴、纵坐标轴之间的封闭区域时,新闻i和新闻j是向量相似的,满足相似阈值条件。
采用分段函数的原因是Posij和Negij的不同组合代表了不同的情况。当Posij和Negij中有一个为0时,表示两篇新闻中有一篇是在另一篇的基础上增加了一些字而成的,两篇新闻相似的可能性较高,阈值可以适当放宽。而当Posij和Negij都不为0时,表明两篇新闻都各自比另一篇多了某些字,这种情况下两篇新闻相似的可能性相对略低,阈值需要适当收紧。比较理想的情况是用一条弧线来拟合阈值函数,但弧线是非线性的,计算耗时比线性函数要多,因此选择了分段线性函数来拟合阈值函数,函数中的参数值为优选值。
参照图4,在一个实施方式中,通过分段线性函数来判断所述差异值是否满足相似阈值条件的具体方法如下:
计算用于判断相似阈值条件的两个数值:
mid_valuei=K*0.08
off_seti=K*0.2
其中,K为目标新闻中字符的数量;
上述两个数值的计算可在步骤S402取Cj之前。
如果差异量Posij和差异量Negij都大于等于数值mid_valuei,则不满足相似阈值条件;
如果差异量Posij和差异量Negij都小于数值mid_valuei,则满足相似阈值条件,否则,
如果差异量Posij小于数值mid_valuei,则计算:
yij=Negij+1.5*Posij
如果yij>off_seti,则不满足相似阈值条件,否则满足相似阈值条件;
如果差异量Negij小于数值mid_valuei,则计算:
yij=Posij+1.5*Negij
如果yij>ofd_seti,则不满足相似阈值条件,否则满足相似阈值条件。
S501,提取行向量Cj中大于0的值的位置,记为Pos_idx,定义一个长度等于名称长度数组WL长度的列表Retr_pos,定义一个整数name_diff=0,转到下一步。
S502,从Pos_idx中取Posl,l∈[1,len(Pos_idx)],转到下一步。
S503,从IW[Posl]中逐个取值IW[Posl][h],h∈[1,len(IW[Posl])],令Retr_pos[IW[Posl][h]]+=1,如果Retr_pos[IW[Posl][h]]≥WL[IW[Posl][h]],令name_diff+=1,转到下一步。
S504,如果l等于len(Pos_idx),转到下一步,反之l+=1,转到S502。
S505,提取Cj中小于0的值的位置,记为Neg_idx,转到下一步。
S506,从Neg_idx中取Negl,l∈[1,len(Neg_idx)],转到下一步。
S507,从IW[Negl]中逐个取值IW[Negl][h],h∈[1,len(IW[Negl])],令Retr_pos[IW[Negl][h]]+=1,如果Retr_pos[IW[Negl][h]]≥WL[IW[Negl][h]],令name_diff+=1,转到下一步。
S508,如果l等于len(Neg_idx),转到下一步,反之l+=1,转到S506。
S509,如果name_diff>2,则判定新闻i和新闻j不相似,否则判定新闻i和新闻j是相似的,记录下相似对(i,j),转到下一步。
S510,如果j等于M,转到下一步,反之j+=1,转到S402。
S511,如果i等于M-1,转到下一步,反之i+=1,转到S401。
S601,输出新闻相似计算结果,计算结束。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (10)
1.从海量短新闻中识别相似新闻的方法,包括:
获取预设的格式化主体词汇并建立索引;
具体包括:从数据库中获取预设的格式化主体词汇,加入到词表W;
分别建立索引数据结构IW、名称长度数组WL;
从所述词表W中取出词wi,i∈[1,N];其中,i表示wi是W中的第i个词,W中共有N个词;
取wi中的第j个字cj,j∈[1,n];其中,n是wi中的英文、阿拉伯数字和GB2312编码汉字字符的数量;
将字cj转换为位置索引idxj;
将i添加到索引数据结构IW[idxj]内;
直至词wi内的每个字都完成位置索引的转换后,将n添加到名称长度数组WL中,当所述词表W中所有的词wi完成位置索引,则初始化结束;
获取多篇新闻,对每篇所述新闻进行向量化;
计算每篇目标新闻与其他新闻是否相似,将与所述目标新闻相似的其他新闻作为相似新闻;
具体包括:通过矩阵减法计算所述目标新闻和所有其他新闻向量的差,得到两个新闻之间的差异量,判断所述差异量是否满足预设的相似阈值条件,将满足所述相似阈值条件的新闻作为相似新闻;更具体地,每篇所述新闻进行向量化后得到新闻向量矩阵A,取所述新闻向量矩阵A的行向量Ai,i∈[1,M],M是新闻的总数量,将Ai转为维度为[1,7236]的二维矩阵B,对所述二维矩阵B进行自动扩展,使得所述二维矩阵B与所述新闻向量矩阵A的维度相等,做矩阵减法C=A-B;
取矩阵C的行向量Cj,j∈[i+1,M],计算所述行向量Cj中大于0的值的和,记为差异量Posij,计算所述行向量Cj中小于0的值的和的绝对值,记为差异量Negij;
判断所述差异量Posij和所述差异量Negij是否满足所述相似阈值条件;
提取所述目标新闻和所述相似新闻之间差异的多个字符,在所述格式化主体词汇建立的索引中查找每个所述字符,如果多个所述字符能构成多于预设目标阈值的格式化主体词汇,则判定所述目标新闻与所述相似新闻不相似,否则判定所述目标新闻与所述相似新闻相似;
输出新闻相似结果。
2.如权利要求1所述的从海量短新闻中识别相似新闻的方法,其特征在于,所述获取多篇新闻,对每篇所述新闻进行向量化前,包括获取多篇新闻,对每篇所述新闻进行过滤:
获取新闻Di,i∈[1,M],M是新闻的总数量;
如果所述新闻Di的第一个非空自然段中有以第一预设字段开头的句子,则去除该句子,如果所述新闻Di的前两个非空自然段中有以第二预设字段开头的自然段,则去除该段;
将所述新闻Di中全角的英文字母和数字字符转为半角字符,英文字母转为小写,繁体字转为简体字;
去除所述新闻Di中所有的非汉字、英文和数字的字符。
3.如权利要求2所述的从海量短新闻中识别相似新闻的方法,其特征在于,所述对每篇所述新闻进行过滤后,还包括:
判断过滤后的所述新闻Di的字符总数是否小于预设总数,如果小于则进行所述对每篇所述新闻进行向量化步骤,否则去除所述新闻Di。
4.如权利要求2所述的从海量短新闻中识别相似新闻的方法,其特征在于,所述获取多篇新闻,对每篇所述新闻进行向量化,包括:
建立新闻向量矩阵A,所述新闻向量矩阵A为二维矩阵,所述新闻向量矩阵A的每一行对应一篇新闻的文字向量;
将过滤后的所述新闻Di转为GB2312编码,将所述新闻Di转化为文字向量Vi,转化时声明一个文字向量Vi,计算所述新闻Di中每个字符ck在所述文字向量Vi中的位置,并计算字符ck出现次数;其中,k∈[1,K],K是Di中字符的数量;
将所述文字向量Vi添加到所述新闻向量矩阵A中,令Ai=Vi;
直至所有的新闻均转化为文字向量并添加到所述新闻向量矩阵A中。
5.如权利要求4所述的从海量短新闻中识别相似新闻的方法,其特征在于,将字cj转换为位置索引idxj的计算方式为:
如果所述字cj是阿拉伯数字字符,则所述位置索引idxj=int(cj);
如果所述字cj是英文字母字符,则所述位置索引idxj=ord(cj)-87,ord(cj)表示取所述字cj的ASCII编码;
如果所述字cj是GB2312范围内的汉字,则所述位置索引idxj=(high_bytej-0xB0)*100+low_bytej-0xA0+36;其中,高位字节为high_bytej,低位字节为low_bytej;
如果所述字cj非汉字、英文和阿拉伯数字的字符,则跳过所述字cj;
将字cj转换为位置索引idxj的计算方式与所述字符ck在所述文字向量Vi中的位置的计算方式相同。
6.如权利要求1所述的从海量短新闻中识别相似新闻的方法,其特征在于,所述判断所述差异量Posij和所述差异量Negij是否满足所述相似阈值条件,包括:
通过分段线性函数来判断所述差异值是否满足相似阈值条件。
7.如权利要求6所述的从海量短新闻中识别相似新闻的方法,其特征在于,所述通过分段线性函数来判断所述差异值是否满足相似阈值条件,包括:
计算用于判断相似阈值条件的两个数值:
mid_valuei=K*0.08
off_seti=K*0.2
其中,K为所述目标新闻中字符的数量;
如果所述差异量Posij和所述差异量Negij都大于等于数值mid_valuei,则不满足所述相似阈值条件;
如果所述差异量Posij和所述差异量Negij都小于数值mid_valuei,则满足所述相似阈值条件,否则,
如果所述差异量Posij小于数值mid_valuei,则计算:
yij=Negij+1.5*Posij
如果yij>off_seti,则不满足所述相似阈值条件,否则满足所述相似阈值条件;
如果所述差异量Negij小于数值mid_valuei,则计算:
yij=Posij+1.5*Negij
如果yij>off_seti,则不满足所述相似阈值条件,否则满足所述相似阈值条件。
8.从海量短新闻中识别相似新闻的装置,其特征在于,包括:
初始化模块,用于获取预设的格式化主体词汇并建立索引;
具体包括:从数据库中获取预设的格式化主体词汇,加入到词表W;
分别建立索引数据结构IW、名称长度数组WL;
从所述词表W中取出词wi,i∈[1,N];其中,i表示wi是W中的第i个词,W中共有N个词;
取wi中的第j个字cj,j∈[1,n];其中,n是wi中的英文、阿拉伯数字和GB2312编码汉字字符的数量;
将字cj转换为位置索引idxj;
将i添加到索引数据结构IW[idxj]内;
直至词wi内的每个字都完成位置索引的转换后,将n添加到名称长度数组WL中,当所述词表W中所有的词wi完成位置索引,则初始化结束;
新闻向量化模块,用于获取多篇新闻,对每篇所述新闻进行向量化;
计算新闻相似性模块,用于计算每篇目标新闻与其他新闻是否相似,将与所述目标新闻相似的其他新闻作为相似新闻;
具体包括:通过矩阵减法计算所述目标新闻和所有其他新闻向量的差,得到两个新闻之间的差异量,判断所述差异量是否满足预设的相似阈值条件,将满足所述相似阈值条件的新闻作为相似新闻;更具体地,每篇所述新闻进行向量化后得到新闻向量矩阵A,取所述新闻向量矩阵A的行向量Ai,i∈[1,M],M是新闻的总数量,将Ai转为维度为[1,7236]的二维矩阵B,对所述二维矩阵B进行自动扩展,使得所述二维矩阵B与所述新闻向量矩阵A的维度相等,做矩阵减法C=A-B;
取矩阵C的行向量Cj,j∈[i+1,M],计算所述行向量Cj中大于0的值的和,记为差异量Posij,计算所述行向量Cj中小于0的值的和的绝对值,记为差异量Negij;
判断所述差异量Posij和所述差异量Negij是否满足所述相似阈值条件;
格式化新闻判别模块,用于提取所述目标新闻和所述相似新闻之间差异的多个字符,在所述格式化主体词汇建立的索引中查找每个所述字符,如果多个所述字符能构成多于预设目标阈值的格式化主体词汇,则判定所述目标新闻与所述相似新闻不相似,否则判定所述目标新闻与所述相似新闻相似;
输出结果模块,用于输出新闻相似结果。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述从海量短新闻中识别相似新闻的方法的步骤。
10.一种存储有计算机可读指令的存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项权利要求所述从海量短新闻中识别相似新闻的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011093664.9A CN112182337B (zh) | 2020-10-14 | 2020-10-14 | 从海量短新闻中识别相似新闻的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011093664.9A CN112182337B (zh) | 2020-10-14 | 2020-10-14 | 从海量短新闻中识别相似新闻的方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112182337A CN112182337A (zh) | 2021-01-05 |
CN112182337B true CN112182337B (zh) | 2021-10-22 |
Family
ID=73949873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011093664.9A Active CN112182337B (zh) | 2020-10-14 | 2020-10-14 | 从海量短新闻中识别相似新闻的方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112182337B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114386421A (zh) * | 2022-01-13 | 2022-04-22 | 平安科技(深圳)有限公司 | 相似新闻检测方法、装置、计算机设备和存储介质 |
CN116932526B (zh) * | 2023-09-19 | 2023-11-24 | 天泽智慧科技(成都)有限公司 | 一种面向开源情报的文本去重方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108573045A (zh) * | 2018-04-18 | 2018-09-25 | 同方知网数字出版技术股份有限公司 | 一种基于多阶指纹的比对矩阵相似度检索方法 |
CN108694476A (zh) * | 2018-06-29 | 2018-10-23 | 山东财经大学 | 一种结合财经新闻的卷积神经网络股票价格波动预测方法 |
CN108829780A (zh) * | 2018-05-31 | 2018-11-16 | 北京万方数据股份有限公司 | 文本检测方法、装置、计算设备及计算机可读存储介质 |
CN110321466A (zh) * | 2019-06-14 | 2019-10-11 | 广发证券股份有限公司 | 一种基于语义分析的证券资讯查重方法及系统 |
CN111324750A (zh) * | 2020-02-29 | 2020-06-23 | 上海爱数信息技术股份有限公司 | 一种大规模文本相似度计算及文本查重方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8788261B2 (en) * | 2008-11-04 | 2014-07-22 | Saplo Ab | Method and system for analyzing text |
US20180341686A1 (en) * | 2017-05-26 | 2018-11-29 | Nanfang Hu | System and method for data search based on top-to-bottom similarity analysis |
-
2020
- 2020-10-14 CN CN202011093664.9A patent/CN112182337B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108573045A (zh) * | 2018-04-18 | 2018-09-25 | 同方知网数字出版技术股份有限公司 | 一种基于多阶指纹的比对矩阵相似度检索方法 |
CN108829780A (zh) * | 2018-05-31 | 2018-11-16 | 北京万方数据股份有限公司 | 文本检测方法、装置、计算设备及计算机可读存储介质 |
CN108694476A (zh) * | 2018-06-29 | 2018-10-23 | 山东财经大学 | 一种结合财经新闻的卷积神经网络股票价格波动预测方法 |
CN110321466A (zh) * | 2019-06-14 | 2019-10-11 | 广发证券股份有限公司 | 一种基于语义分析的证券资讯查重方法及系统 |
CN111324750A (zh) * | 2020-02-29 | 2020-06-23 | 上海爱数信息技术股份有限公司 | 一种大规模文本相似度计算及文本查重方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112182337A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108959246B (zh) | 基于改进的注意力机制的答案选择方法、装置和电子设备 | |
CN108629046B (zh) | 一种字段匹配方法及终端设备 | |
CN108664574B (zh) | 信息的输入方法、终端设备及介质 | |
CN106598959B (zh) | 一种确定双语语句对互译关系方法及系统 | |
CN110502626B (zh) | 一种基于卷积神经网络的方面级情感分析方法 | |
CN110083832B (zh) | 文章转载关系的识别方法、装置、设备及可读存储介质 | |
Pan et al. | Product quantization with dual codebooks for approximate nearest neighbor search | |
CN111858843B (zh) | 一种文本分类方法及装置 | |
CN112182337B (zh) | 从海量短新闻中识别相似新闻的方法及相关设备 | |
CN114282527A (zh) | 多语言文本检测与纠错方法、系统、电子设备及存储介质 | |
CN109993216B (zh) | 一种基于k最近邻knn的文本分类方法及其设备 | |
CN113987174A (zh) | 分类标签的核心语句提取方法、系统、设备及存储介质 | |
CN113986950A (zh) | 一种sql语句处理方法、装置、设备及存储介质 | |
CN113065349A (zh) | 基于条件随机场的命名实体识别方法 | |
EP3635586A1 (en) | Computerized methods of data compression and analysis | |
US11281714B2 (en) | Image retrieval | |
CN115098673A (zh) | 基于变体注意力及层次结构的业务文书信息抽取方法 | |
CN108694167B (zh) | 候选词评估方法、候选词排序方法及装置 | |
CN108628826B (zh) | 候选词评估方法、装置、计算机设备和存储介质 | |
CN109902162B (zh) | 基于数字指纹的文本相似性的识别方法、存储介质及装置 | |
CN112287657A (zh) | 基于文本相似度的信息匹配系统 | |
CN111581377A (zh) | 文本分类方法、装置、存储介质及计算机设备 | |
US20230177251A1 (en) | Method, device, and system for analyzing unstructured document | |
CN115687625A (zh) | 文本分类方法、装置、设备及介质 | |
CN115909381A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |