/**
* 文档相似度查询
*/
@SuppressWarnings("unchecked")
@Override
public List<MyLibraryModel> queryDocList(MyLibraryModel model) {
List<MyLibraryModel> list = new ArrayList<MyLibraryModel>();
List<MyLibraryModel> librarylist = dao.queryDocListItems(model);
for (int c = 0; c < librarylist.size(); c++) {
MyLibraryModel myModel = librarylist.get(c);
String str1 = myModel.getLibTitle();
String str2 = model.getLibTitle();
// 计算两个字符串的长度。
int len1 = str1.length();
int len2 = str2.length();
// 建立上面说的数组,比字符长度大一个空间
int[][] dif = new int[len1 + 1][len2 + 1];
// 赋初值,步骤B。
for (int a = 0; a <= len1; a++) {
dif[a][0] = a;
}
for (int a = 0; a <= len2; a++) {
dif[0][a] = a;
}
// 计算两个字符是否一样,计算左上的值
int temp;
for (int k = 1; k <= len1; k++) {
for (int j = 1; j <= len2; j++) {
if (str1.charAt(k - 1) == str2.charAt(j - 1)) {
temp = 0;
} else {
temp = 1;
}
// 取三个值中最小的
dif[k][j] = min(dif[k - 1][j - 1] + temp,
dif[k][j - 1] + 1, dif[k - 1][j] + 1);
}
}
// 取数组右下角的值,同样不同位置代表不同字符串的比较
// 计算相似度
float similarity = 1 - (float) dif[len1][len2]
/ Math.max(str1.length(), str2.length());
if (similarity > 0) {
myModel.setSimilarity(similarity);
list.add(myModel);
}
}
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
float one = ((MyLibraryModel) a).getSimilarity();
float two = ((MyLibraryModel) b).getSimilarity();
if (one > two)
return 0;
return 1;
}
});
if (list.size() > 4) {
return list.subList(0, 4);
}
return list;
}
/**
* 得到最小值
*
* @param is
* @return
*/
private static int min(int... is) {
int min = Integer.MAX_VALUE;
for (int i : is) {
if (min > i) {
min = i;
}
}
return min;
}
分享到:
相关推荐
在这个Java实现中,我们将讨论如何利用余弦相似性和TF-IDF(词频-逆文档频率)算法来确定两篇文章的相似度。 首先,我们要理解余弦相似性的基本原理。假设我们有两个文档D1和D2,我们可以将它们视为向量,其中每个...
在文本聚类中,我们先为每篇文档计算其TF-IDF向量,然后根据这些向量的欧氏距离或余弦相似度来确定它们之间的相似度。K-NN算法的基本思想是,将每篇文档与现有的K个最近邻进行比较,根据邻居的类别决定新文档的类别...
- **数据库+VS=相似度单词TXT文档**:描述中提到的是一个TXT文档,这暗示了可能存在一份文档用于记录数据库操作的过程或者结果。此外,“相似度单词”表明该文档中包含了如何在数据库中查找相似单词的方法。 #### ...
标题中的“基于相似度查询的模具CAD图纸查询与管理方法”指的是一种用于模具行业CAD图纸管理的技术方法,该方法的核心在于通过相似度查询技术,提高模具设计和管理过程中的效率。在模具设计领域中,相似度查询指的是...
在本任务中,我们主要关注如何使用Python来计算英文新闻标题的Jaccard相似度,以检测相似的新闻文档。Jaccard相似度是一种衡量两个集合相似性的指标,定义为两个集合交集的大小除以并集的大小。在新闻标题的场景下,...
本项目标题为“计算任意文章相似度”,显然,它聚焦于利用特定方法来评估两篇或更多文章之间的语义近似度。在这个案例中,使用了TF-IDF(词频-逆文档频率)算法,这是一种经典的文本特征提取和权重分配方法,用于...
本篇文档《浅谈基于大数据处理及文本相似度判断的信息服务工单分析工具》深入探讨了这一主题,旨在通过专业视角为读者提供相关知识,对于从事信息服务业的工作人员以及对大数据和文本分析感兴趣的个人,提供参考和...
本文将深入探讨这个主题,基于标题“各程序程序代码的相似度”和描述“对于不同的代码,根据一些关键字的个数,看程序是否相似,个数越接近,相似度越高”。 首先,我们要理解什么是代码相似度。代码相似度是指两段...
标题中的“word文档对比软件”指的是专门用于比较Word文档差异的工具,这类软件或应用程序能够帮助用户快速识别并展示两个或多个Word文档之间的内容、格式或结构上的不同之处。在日常工作中,这样的工具非常实用,...
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
在给定的标题“易语言快速计算文本相似度源码”中,我们可以理解这是一段使用易语言编写的代码,用于高效地计算两个文本之间的相似度。这种技术在信息检索、自然语言处理和文本挖掘等领域具有广泛应用。 文本相似度...
例如,在上面给出的XML文档示例中,可以看到文档结构清晰地定义了书的信息,包括标题、出版社和作者等子元素。这种层次结构和元素间的关系对于理解文档内容至关重要。 #### 三、递归相似度计算方法 针对XML数据的...
标题提到的"PDF转WORD,非常好用.99%相似度",意味着这是一个高效且精度高的转换工具,能够确保转换后的Word文档与原始PDF文件内容相似度高达99%。 PDF格式是由Adobe公司开发的,其优点在于跨平台兼容性好,能保持...
NGD是基于搜索引擎查询结果来衡量两个词汇之间相似度的指标,它通过统计两个词汇在Google搜索结果中出现的频率来计算它们的相似度。 综上所述,文章详细阐述了一种结合深度学习和词汇相似度分析的个性化新闻推荐...
simhash高效的文本相似度去重算法实现simhash是什么Google发明的的文本去重算法,适合于大批量文档的相似度计算主要步骤对文本分词,得到N维特征向量(默认为64维)为分词设置权重(tf-idf)为特征向量计算哈希对...
标题中的“毕业设计:Python (BERT) 深度学习文本相似度检测系统设计”是一个基于Python编程语言,利用BERT模型进行深度学习的项目,旨在实现文本相似度检测功能。BERT,全称为Bidirectional Encoder ...
主要功能是对新闻标题进行去重处理,基于内容相似度进行筛选和剔除重复标题。 ## 项目的主要特性和功能 1. 基于gensim模块的中文句子相似度计算利用gensim库进行高效的文本相似度计算。 2. 使用jieba进行中文分词...
将待处理文档的特征词向量集与主题词向量集进行比较,通过计算每对向量之间的余弦相似度,找出最大的相似度值作为该特征词与主题词之间的相似度。最终,将所有特征词与主题词之间的相似度相加,得到待处理文档的整体...
1. **信息检索**:通过计算查询语句与文档集合中各文档的相似度,找出最相关的文档。 2. **情感分析**:利用词向量捕捉词义和情感,帮助分析文本的情感倾向。 3. **机器翻译**:通过词向量理解源语言和目标语言的...
标题《一种基于语义相似度的文本聚类算法》及描述指出本文介绍的算法聚焦于文本聚类,着重于从语义角度计算文本相似性,以期提高聚类的质量和效果。而标签“语义相似度”和“聚类”则直接指向该算法的核心——使用...