基于Java实现的图片搜索系统

这篇具有很好参考价值的文章主要介绍了基于Java实现的图片搜索系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图片搜索实现

一、BM25算法的实现

BM25算法的实现较为简单,但是此处修改了simpleScorer的构造函数,传入了indexReader,以便获得doc中 abstractString的长度,具体实现见如下代码:

assert doc != ‐1;
    try
    {
        Document currentDoc = reader.document(doc);
        String absStr = currentDoc.get("abstract");
        int docLen = absStr.length();
        float denominator = K1 * (1 ‐ b + b * (float)docLen / avgLength) + termDocs.freq();
        float numerator = (K1 + 1) * termDocs.freq();
        float tf = numerator / denominator;
        return tf * idf;
    }
    catch (IOException e)
    {
        System.out.println(e);
        return idf * this.termDocs.freq();
    }

二、VSM模型与BM25的对比

VSM模型则直接使用了lucene自带的term query 对爆笑这个词进行了搜索,VSM与BM25对比的结果如下: vsm:

基于Java实现的图片搜索系统

bm25:

基于Java实现的图片搜索系统

可见VSM中爆笑出现的频率更高,但是BM25中爆笑出现的频率并不一定是最高的,这与它们各自的计算方式相关。

三、用html扩充语料库

首先用python写了一个脚本将各个html中的title抽取出来,并处理了编码问题,随后生成了一个新的xml文件供

ImageIndexer生成新的index,下面对比了是否扩充语料库的搜索结果:

美女(扩充语料库)

基于Java实现的图片搜索系统

美女(未扩充语料库)

基于Java实现的图片搜索系统

可见扩充语料库后,搜索结果比扩充前更加丰富。

四、查询词分词

对查询词同样适用了IKAnalyzer进行分词,随后每个term都生成一个termQuery,并将termQuery add到

BooleanQuery中,add的方式为occur.SHOULD。这样即使当搜索词与索引不是完美匹配时,也可以利用分词有一个较好的搜索结果。下面给出一个对比:

分词前

基于Java实现的图片搜索系统

分词后

基于Java实现的图片搜索系统

可见一些分词前无法搜到的图片在分词后可以搜到一些折中的结果。文章来源地址https://www.toymoban.com/news/detail-420876.html

到了这里,关于基于Java实现的图片搜索系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 三级联动图片搜索

    2024年02月06日
    浏览(40)
  • OpenCV(图像处理)-图片搜索

    Opencv进行图片搜索需要的知识有:特征点匹配+单应性矩阵知识,特征点匹配作者前面文章有记录。 单应性矩阵:两个不同视角上的点所对应的单应性矩阵可以用同一个射影变换来表述可以简单理解为变换矩阵H,x1 = h*x2 分别计算查询图片和训练图片的特征点和特征点的描述子

    2024年02月13日
    浏览(45)
  • Everypixel: AI图片搜索引擎

    【产品介绍】   Everypixel是一个基于人工智能的图片搜索引擎。可以搜索超过 50 个图片来源的优质的授权图库版权素材图片,还可以使用免费图案功能,找到适合自己需求的可定制无缝图案。   Everypixel利用深度学习和计算机视觉技术,为客户提供先进的图像和视频搜索工具

    2024年02月05日
    浏览(54)
  • OpenCV书签 #差值哈希算法的原理与相似图片搜索实验

    差值哈希算法(Difference Hash Algorithm,简称dHash) 是哈希算法的一种,主要可以用来做以图搜索/相似图片的搜索工作。   差值哈希算法通过计算相邻像素的差异来生成哈希,即通过缩小图像的每个像素与平均灰度值的比较,生成一组哈希值。最后,利用两组图像的哈希值的汉

    2024年01月23日
    浏览(47)
  • OpenCV书签 #感知哈希算法的原理与相似图片搜索实验

    感知哈希算法(Perceptual Hash Algorithm,简称pHash) 是哈希算法的一种,主要可以用来做以图搜索/相似图片搜索工作。   感知哈希算法(pHash)首先将原图像缩小成一个固定大小的像素图像,然后将图像转换为灰度图像,通过使用离散余弦变换(DCT)来获取频域信息。然后,根

    2024年01月22日
    浏览(41)
  • 图片搜索引擎网站大全,以图搜图网站

    当我们需要搜索一些图片的时候使用图片搜索引擎网站可以帮我们更快地找到自己需要的图片,那么有哪些图片搜索引擎网站可以搜索图片呢?下面小编就来和大家分享几个以图搜图的网站。 1.百度图片搜索引擎网站 百度是最大的中文搜索引擎,百度的图片搜索以中文网站的

    2024年02月07日
    浏览(73)
  • OpenCV书签 #直方图算法的原理与相似图片搜索实验

    直方图算法(Image Histogram Algorithm) 通过统计图像中各个颜色值的分布情况来提供关于图像颜色特征的信息,它可以用来衡量两张图片在颜色分布上的相似度,进而可以用来进行图像相似度的比较,因此,直方图算法是一种常用的图片相似度算法,通常是一个一维的数组(取

    2024年01月23日
    浏览(46)
  • Python Selenium 图片资源自动搜索保存 项目实践

    启动后会自动打开一个页面 页面分析 第一页 第二页 由此可得出变化的只有这里,根据pagi= 展示不同页面 红色箭头定位到页数,绿色的不要使用 是反爬虫的限制,不断变化的 可以适当的进行优化,使用selnium的页面加载策略

    2024年01月16日
    浏览(55)
  • Elasticsearch:如何在 Elastic 中实现图片相似度搜索

    作者:Radovan Ondas 在本文章,我们将了解如何通过几个步骤在 Elastic 中实施相似图像搜索。 开始设置应用程序环境,然后导入 NLP 模型,最后完成为你的图像集生成嵌入。 Elastic 图像相似性搜索概览 Elasticsearch:如何在 Elastic 中实现图片相似度搜索 第一步是为你的应用程序设

    2024年01月22日
    浏览(52)
  • DFS(深度优先搜索)详解(概念讲解,图片辅助,例题解释,剪枝技巧)

    目录 那年深夏 引入 1.什么是深度优先搜索(DFS)? 2.什么是栈? 3.什么是递归? 图解过程  问题示例 1、全排列问题 2、迷宫问题 3、棋盘问题(N皇后)  4、加法分解 模板 剪枝 1.简介 2.剪枝的原则   3.剪枝策略的寻找的方法 4.常见剪枝方法 最后 他终于抬起头,眨了眨眼睛

    2023年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包