① 怎么用lucene判断两篇文章的相似度 java
用算法中的求最大相似子字符串的方法LCS或许可以,它可以找到两个字符串中最大相似的子字符串。
Java code
/*
* @author talent_marquis<甜菜侯爵>
* Email: [email protected]
* Copyright (C) 2007 talent_marquis<甜菜侯爵>
* All rights reserved.
*/
package ustc.mse.algorithms.dynamicProgramming;
/*
* LCS, Longest-Common-Subsequence
*/
public class LCS
{
public enum DIRECTION{ TOP, TOP_LEFT, LEFT };
private char[] first;
private char[] second;
private int[][] lcsTable;
private DIRECTION[][] lcsAssistTable;
private int lcsLength;
private String lcs_str, lcsMatrix_str, lcsAssistMatrix_str;
private StringBuffer str_buffer;
public LCS( String str1, String str2 )
{
first = str1.toCharArray();
second = str2.toCharArray();
lcsTable = new int[ first.length + 1 ][ second.length + 1 ];
lcsAssistTable = new DIRECTION[ first.length + 1 ][ second.length + 1];
lcs_str = null;
② 怎样用python或者是java计算文本相似度
第一步:把每个网页文本分词,成为词包(bag of words)。
第三步:统计网页(文档)总数M。
第三步:统计第一个网页词数N,计算第一个网页第一个词在该网页中出现的次数n,再找出该词在所有文档中出现的次数m。则该词的tf-idf 为:n/N * 1/(m/M) (还有其它的归一化公式,这里是最基本最直观的公式)
第四步:重复第三步,计算出一个网页所有词的tf-idf 值。
第五步:重复第四步,计算出所有网页每个词的tf-idf 值。
3、处理用户查询
第一步:对用户查询进行分词。
第二步:根据网页库(文档)的数据,计算用户查询中每个词的tf-idf 值。
4、相似度的计算
使用余弦相似度来计算用户查询和每个网页之间的夹角。夹角越小,越相似。
③ java如何实现超过10w条文本数据的相似度计算
最简单的、最节省性能的方法是建立字典。 字典的索引就是字本身,遍历字符串,没遇到一个字就加入到字典中,加入的时候判断下,如果索引存在则加1,不存在则创建,然后在取字典最大值,大于6就报错。 上面说的字典可以用java中的hashMap实现。
④ 用java判断两个文件的相似度
两个文件转化为二进制流数组或者链表,定义一个int变量n初值为0,遍历两个文件数组,每个节点相同无操作,不同n++;
然后拿 n与 文件数组的大小做比较,,,
⑤ java 如何判断手写与机打文字的相似度
这个不是java的问题吧,看看深度学习。
基础教学就有个是手写文字的判断。
可以把样板文字改成楷体,要机器学习学习。
最后输入手写文字,看命中率吧。
⑥ 文本相似度算法-Jaro distance
给定两个灶指衡文本串 , ,他们的Joro距离定义为:
求 match 的字符数:
分别来自 , 的字符,当他们相同或者距离小于 ,则被认为是 match 的。
比如: =“DIXON”, =“DICKSONX”
中的逗滑每一个字符都会与 中距离 内的字符进行比较。将所有 match 的字符隐做串,需要替调换顺序才能匹配的总数除以二就是transpositions的大小 。这里两个字符串中匹配的分别是:"DION",“DION",所以 。
另外 =4, =8,
则:
参考:
https://rosettacode.org/wiki/Jaro_distance#Java
⑦ java学到哪才可以检测两个文本的相似度
学到IO流可以比较文本了, 不过用IO比较文本比较麻烦, 而且效率低
如果要效率高的话, 就需要学
linux + thread + progress
这样子可以通过java调用linux命令
linux中有一个comm -12命令来实现比较两个文件的共同数据, 生成一个新文本。 拿到新文本的大小/旧文本的大小, 旧可以粗略计算出相似度, 而且效率极其高
如果文本有上百万行数据的话, 用IO可能要十几个小时才有结果, 但是linux命令只需要1分钟左右就可以出结果