⑴ python计算文章相似度有什么比较好的实践
基于用户相似度的推荐中,一般采用Pearson相关系数;
基于物品相似度的推荐中,改进的余弦相似度效果更好。
⑵ 如何计算网站网页相似度
据统计,网页上的大部分相同的页面占29%,而主体内容完全相同的占22%,这些重复网页有的是没有一点改动的拷贝,有的在内容上稍作修改,比如同一文章的不同版本,一个新一点,一个老一点,有的则仅仅是网页的格式不同(如 HTML, Postscript),文献[Models and Algorithms for Duplicate Document Detection 1999年]将内容重复归结为以下四个类型:
1.如果2篇文档内容和格式上毫无差别,则这种重复叫做full-layout plicate。
2.如果2篇文档内容相同,但是格式不同,则叫做full-content plicates
3.如果2篇文档有部分重要的内容相同,并且格式相同,则称为partial-layout plicates
4.如果2篇文档有部分重要的内容相同,但是格式不同,则称为partial-content plicates
网页去重的任务就是去掉网页中主题内容重复的部分。它和网页净化(noise rection),反作弊(antispam) 是搜索引擎的3大门神
去重在我看来起码有四好处:减少存储;增强检索效率;增强用户的体验;死链的另一种解决方案。
目前从网络的搜索结果来看,去重工作做的不是很完善,一方面可能是技术难度(precision和recall都超过90%还是很难的);另一方面可能是重复的界定,比如转载算不算重复?所以另一项附属的工作是对个人可写的页面(PWP)进行特殊的处理,那么随之而来的工作就是识别PWP页面。^_^这里就不扯远呢。
问题如何解决?
网页的deplication,我们的算法应该是从最简单的开始,最朴素的算法当然是
对文档进行两两比较,如果A和B比较,如果相似就去掉其中一个
然而这个朴素的算法,存在几个没有解决的问题:
0.要解决问题是什么?full-layout?full-content?partial-layout还是partial-content?
1. 怎么度量A 和 B的相似程度
2. 去掉A还是去掉B,如果A ~B(~表相似,!~表示不相似),B~C 但是 A!~C,去掉B的话,C就去不掉。另一个更深入的问题是,算法的复杂度是多少?假设文档数为n,文档平均长度为m,如果相似度计算复杂度为m的某一个复杂度函数:T=T(m),文档两两比较的复杂度是O(n^2),合起来是O(n^2 * T(m)) . 这个复杂度是相当高的,想搜索引擎这样处理海量数据的系统,这样的复杂度是完全不能接受的,所有,另外三个问题是:
3. 如何降低相似度计算的复杂化度
4. 如何减少文档比较的复杂度
5. 超大数据集该如何处理
第0个问题是,我们要解决的关键,不同的问题有不同的解决方法,从网页的角度来看,结构的重复并不能代表是重复,比如产品展示页面,不同的产品展示页面就有相同的文档结构。内容来看,复制网站会拷贝其他网站的主要内容,然后加些广告或做些修改。所以,解决的问题是,partial-content deplication,那么首先要抽取网页的主体内容。算法变成:
抽取文档主体内容,两两比较内容的相似性,如果A和B相似,去掉其中一个
其次,问题2依赖于问题1的相似度度量,如果度量函数具有传递性,那么问题2就不存在了,如果没有传递性,我们的方法是什么呢?哦,那就找一个关系,把相似关系传递开嘛,简单,聚类嘛,我们的框架可以改成:
抽取文档主体内容,两两比较内容的相似性,如果A和B相似,把他们聚类在一起,最后一个类里保留一个page
最后,归纳为几个步骤
第一步:识别页面的主题内容,网页净化的一部分,以后讨论
第二步:计算相似度
第三步:聚类算法,计算出文档那些文档是相似的,归类。
核心的问题是,“如何计算相似度?”这里很容易想到的是
1. 计算内容的编辑距离edit distance(方法很有名,但是复杂度太高)
2. 把内容分成一个个的token,然后用集合的jaccard度量(好主意,但是页面内容太多,能不能减少啊?)
好吧,但是,当然可以减少集合的个数呢,采样,抽取满足性质的token就可以啦,如满足 mod m =0 的token,比如有实词?比如stopwords。真是绝妙的注意.在把所有的idea放一起前,突然灵光一现,啊哈,
3. 计算内容的信息指纹,参考google研究员吴军的数学之美系列。
把他们放在一起:
第一步:识别页面的主题内容,网页净化的一部分,以后讨论
第二步:提取页面的特征。将文章切分为重合和或不重合的几个结合,hash out
第三步:用相似度度量来计算集合的相似性,包括用信息指纹,Jaccard集合相似度量,random projection等。
第四步:聚类算法,计算出文档那些文档是相似的,归类。
方法分类:
按照利用的信息,现有方法可以分为以下三类
1.只是利用内容计算相似
2.结合内容和链接关系计算相似
3.结合内容,链接关系以及url文字进行相似计算
一般为内容重复的去重,实际上有些网页是
按照特征提取的粒度现有方法可以分为以下三类
1.按照单词这个级别的粒度进行特征提取.
2.按照SHINGLE这个级别的粒度进行特征提取.SHNGLE是若干个连续出现的单词,级别处于文档和单词之间,比文档粒度小,比单词粒度大.
3.按照整个文档这个级别的粒度进行特征提取
算法-具体见真知
1. I-Match
2. Shingling
3. Locality Sensitive Hashing.(SimHash)
4. SpotSigs
5. Combined
⑶ 相似度计算
你是求一个相似度算法:
如果一个公司真实排名为x1,
而你的打分排名是
x2,
怎么搞一个合理的评分数呢?
对差值的绝对值进行打分
|x1-x2|=0
得14分(28的一半)
|x1-x2|>=14
得
0分
就是:|差值|>14
得0分,|差值|<=14,得
14-|差值|
满分
14x28
分,
这样对28个排名,就可以算出得分了
相似度=得分/(14x28)
x
100
(%)
用c语言编个计算小程序很简单。
⑷ 如何进行相似度的计算,主要用什么方式
如何计算句子的语义相似度,很容易想到的是向量空间模型(VSM)和编辑距离的方法,比如A:“我爸是李刚”,B:“我儿子是李刚”,利用VSM方法A(我,爸,是,李刚)B(我,儿子,是,李刚),计算两个向量的夹角余弦值,不赘述;编辑距离就更好说了将“爸”,“儿子”分别替换掉,D(A,B)= replace_cost;
这是两种相当呆的方法,属于baseline中的baseline,换两个例子看一下就知道A:“楼房如何建造?”,B:“高尔夫球怎么打?”,C:“房子怎么盖?”,如果用VSM算很明显由于B,C中有共同的词“怎么”,所以BC相似度高于AC;编辑距离同理;
解决这种问题方法也不难,只要通过同义词词典对所有句子进行扩展,“如何”、“怎么”,“楼房”、“房子”都是同义词或者近义词,扩展后再算vsm或者edit distance对这一问题即可正解.这种方法一定程度上解决了召回率低的问题,但是扩展后引入噪声在所难免,尤其若原句中含有多义词时.例如:“打酱油”、“打毛衣”.在汉字中有些单字词表达了相当多的意义,在董振东先生的知网(hownet)中对这种类型汉字有很好的语义关系解释,通过hownet中词语到义元的树状结构可以对对词语粒度的形似度进行度量.
问题到这里似乎得到了不错的解答,但实际中远远不够.VSM的方法把句子中的词语看做相互独立的特征,忽略了句子序列关系、位置关系对句子语义的影响;Edit Distance考虑了句子中词语顺序关系,但是这种关系是机械的置换、移动、删除、添加,实际中每个词语表达了不同的信息量,同样的词语在不同词语组合中包含的信息量或者说表达的语义信息大不相同.What about 句法分析,计算句法树的相似度?这个比前两种方法更靠谱些,因为句法树很好的描述了词语在句子中的地位.实际效果要待实验证实.
对了,还有一种方法translation model,IBM在机器翻译领域的一大创举,需要有大量的语料库进行训练才能得到理想的翻译结果.当然包括中间词语对齐结果,如果能够利用web资源建立一个高质量的语料库对两两相似句对通过EM迭代词语对齐,由词语对齐生成句子相似度,这个.想想还是不错的方法!
⑸ 如何计算两个文档的相似度
如何计算两个文档的相似度
winmerge用这个软件
操作步骤为:
FC——文件比较命令
1.功能:比较文件的异同,并列出差异处。
2.类型:外部命令
3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A][/B][/C][/N]
4.使用说明:
(1)选用/A参数,为ASCII码比较模式;
(2)选用/B参数,为二进制比较模式;
(3)选用/C参数,将大小写字符看成是相同的字符。
(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号。
⑹ 怎样计算两篇文档的相似度
winmerge用这个
操作步骤为:
FC——文件比较命令
1.功能:比较文件的异同,并列出差异处。
2.类型:外部命令
3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A][/B][/C][/N]
4.使用说明:
(1)选用/A参数,为ASCII码比较模式;
(2)选用/B参数,为二进制比较模式;
(3)选用/C参数,将大小写字符看成是相同的字符。
(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号。
⑺ 搜索引擎如何判断网页文章的重复度
搜索引擎如何判断网页文章的重复度?
在这个科技高度发达的时代,网络已经成为人们能获取消息的主要途径。但如今的网络,到处充斥着一些重复的内容,对用户的访问造成很大的困扰。因此,网络需要对网页重复进行判断,对重复的网页,只选取一些高质量的我那工业,共用户浏览。然而,现有技术中一般是通过比较两个页面的内容和借点,来确认两个页面的相似度。
这种方法能够计算的比较准确,可时间复杂度太高,计算很费时间。通过对一个页面中的某些重要信息进行签名,然后比较两个页面的签名,来计算相似度,这种方式比较简单高效,计算速度比较快,比较适合网络这种海量信息的应用场景。
1,网站重复内容的判断
A,获取多个网页;
B,分别提取网页的网页正文;
C,从网页正文中提取一个或多个句子,并根据一个或多个句子计算网页正文句子签名;
D,根据网页正文句子签名对多个网页进行聚类;
E,针对每一类下的网页,计算网页的附加签名;
F,根据附加签名判断每一类下的网页是否重复。
通过上述方式,网页重复的判断系统及其判断方法通过包括网页正文句子签名在内的多维度签名有效且快速地判断网页是否重复。
广告图
网站页面基本架构
提取正文
A,对网页进行分块;
B,对分块后的网页进行块过滤,以获取包含网页正文的内容快;
C,从内容块中提取网页正文。
正文分句
A,对网页正文进行分句;
在本步骤中,可利用分号,句号,感叹号等表示句子完结的标志符号来对网页正文进行分句。此外,还可以通过网页正文的视觉信息来对网页正文进行分句。
B,对分句后的网页正文进行过滤及转换;
在步骤中,首先过滤掉句子中的数字信息;版权信息以及其他对网页重复判断不起决定性作用的信息。随后,对句子进行转换,例如,进行全角/半角转换或者繁体/简体转换,以使得转换后的句子的格式统一。
C,从过滤及转换后的网页正文中提取最长的一个或多个句子;
在本步骤中,过滤及转换后的网页正文提取出最长的一个句子或者做场的预定数量连续句子的组合。例如,某个网页实例中,经过过滤及转换后的某段最长,远超其他句子,因此可选择该段为网页正文句子,或者选择最长的连续句子组合作为网页正文句子。
D,对一个或多个句子进行hash签名运算,以获取网页正文句子签名。
simhash算法就是比较各网页的附加签名是否相同或相似来判断网页是否重复。具体来说,在比较利用simhash签名运算获得的网页正文签名时,比较网页正文签名的不同位数,不同位越少,表示网页重复的可能性越高,在比较其他的附加签名时,若附加签名相等,表示网页在该纬度上重复。
总结:
1、两个网页的真实标题签名相同。
2、两个我那工业的网页内容签名相同。
3、两个网页的网页正文签名的不同位数小于6.。
4、两个网页的网页位置签名相同,并且url文件名签名相同。
5、评论块签名、资源签名、标签标题签名、摘要签名、url文件名签名中有三个签名相同。
附加信息整站判断重复标准:
通过两两页面比较,可以得到真重复url的集合。一般来说,如果这个真重复url集合中的网页的数量/整个网页集中网页的数量大于30%,则认为整个网页集都是真重复,否则就是假重复。
⑻ 中文短句相似度匹配方法
一、原始落后的VSM
网上搜索关键词“短文本 相似度”,出来的结果基本上都是以BOW(Bag of words)的VSM方案,大致流程如下:
分词 —> 提取关键词 —> 计算tf或if-idf,以向量的形式替换原文本 —> 文本相似度的问题转变为计算向量相似度
一开始这样的一个思路,很清晰明了,而且网上相应的资料也很多,然后就开搞吧。
1、把所有短文本去掉标点符号,用jieba分词分好词,去除停用词,得到分好的文本;
2、按一定规则抽取特征词汇,作为后期向量的每一维;
3、用sklearn库中的原生方法CountVectorizer、TfidfVectorizer等得到矩阵;
4、每个短文本计算对应得到的向量,采用K-Means聚类的方法进行非监督学习。
文本分类的大致思路基本上就如上所述,具体的细节调整就视实际情况而定。然而,想法是美好的,现实是残酷的,全部分好词的文本,抽取的特征词较多,即向量的维度较大,且向量是稀疏的,在使用K-Means时,会出现有个别cluster下的文本数量特别大;
⑼ 如何计算两个文本内容的相似度
楼上说的挺全面,这种类型的比较,方法有很多,基本都是先转换成同一种编码格式进行字符串比较,返回下标,转换成现有字符串。但是如果考虑性能的话,就应该用递归去做。
个人愚见~
⑽ 将来可能实现由人工智能来批阅高考作文吗
有可能实现的,但是有很大难度。
在各种考试系统中,客观题标注技术已经非常成熟,在考试系统中,针对选择题和填空题的自动评分技术在各个考试系统中得到了广泛的应用。然而,主观题阅卷技术的发展一直比较缓慢,主要是因为一些核心技术还处于发展阶段,如自然语言理解、模式识别、人工智能等技术还处于研究的初级阶段。然而,在前沿技术方面,实际上也有人研究了基于人工智能和大数据的主观题智能阅卷技术。
主观智能阅卷的主要技术途径是基于人工智能和大数据分析的自然语言处理技术。
根据主观题的评分过程,评分系统主要分为五个部分:分句、分词、句法分析、词相似度计算和句子相似度计算。智能评分系统在对主观题进行评分时,直接对句子语法的相似度进行评分。
我们现在来说一下难度的问题。
1.然而,对于汉语来说,实现自然语言处理技术是非常困难的。到目前为止,我国还没有一个实用的、真正实现的主观智能评分系统。由于汉语的复杂性,考生有很大的余地来充分利用语言。如果算法没有包含相关的关键语义,则会导致阅卷时的错误判断。
2.更不幸的是,由于研究方法和问题解决视角的不同,智能阅卷主观题往往只能用于主体的浅信息结构和语义结构,主观题智能阅卷处理简述题,名词解释还可以,但针对相对复杂的主观题,如小作文、大作文等,只能鞭长莫及。
3.即使在主观智能评卷系统成熟之后,强大的社会壁垒也是促进主观智能评卷的主要因素。没有家长或学生会把自己的命运交给一组不成熟的机器。对人工智能的不信任将成为主观智能评分的最大问题。
根据目前人工智能和大数据分析技术的发展趋势,在教育领域,自动批阅是智能教育系统的必然方向。一方面,自动批阅可以避免人为错误,更客观地反映阅卷结果,保证阅卷的客观性和公正性。另一方面,在传统的评卷模式下,自动批阅节省了教师的体力劳动,也让教师节省了更多的教学时间和精力。