H-ui

关于SimHash算法的实现及测试V1.0

点点圈 提交于 2021-02-20 01:05:47
@祁俊辉,2017年5月21日测试。 1 说明 本程序是简化版的SimHash算法(分词暂为手动分词,每个词的权重都设为1); 本程序是基于《数学之美 》第二版第16章所介绍的原理展开; 本篇文章将计算多个字符串的SimHash值,并将对其分析; 本篇文章暂不介绍SimHash算法的原理,因为网上的资源相对较杂,待我彻底理解,整理过后更新(已在笔记本中); 本篇文章(程序)将持续更新。 2 程序(32位) 关于程序的解释,都在程序源码中有相应的注释。若有不明白之处,请联系本人:qce.hui@qq.com。 1 /* 【算法】SimHash->32位 2 * 【说明】1.本程序手动分词,假设每个词的权重都为1 3 * 【说明】2.对每个词进行BKDRHash算法,在此基础上加减权重 4 * 【说明】3.将所有词整合后,降维 5 * 【说明】4.计算各个句子的海明距离 6 * 【时间】祁俊辉->2017.5.19 7 * */ 8 public class SimHash_32 { 9 // 定义待比较的字符串 10 static String s1="SimHash/算法/的/研究" ; 11 static String s2="SimHash/算法/的/探讨" ; 12 static String s3="SimHash/研究/的/算法" ; 13 static String

【深度学习】目标检测算法总结(R-CNN、Fast R-CNN、Faster R-CNN、FPN、YOLO、SSD、RetinaNet)

旧巷老猫 提交于 2021-02-11 20:40:40
目标检测是很多计算机视觉任务的基础,不论我们需要实现图像与文字的交互还是需要识别精细类别,它都提供了可靠的信息。本文对目标检测进行了整体回顾,第一部分从RCNN开始介绍基于候选区域的目标检测器,包括Fast R-CNN、Faster R-CNN 和 FPN等。第二部分则重点讨论了包括YOLO、SSD和RetinaNet等在内的单次检测器,它们都是目前最为优秀的方法。 一、基于候选区域的目标检测器 1.1 滑动窗口检测器   自从 AlexNet 获得 ILSVRC 2012 挑战赛冠军后,用 CNN 进行分类成为主流。 一种用于目标检测的暴力方法是从左到右、从上到下滑动窗口,利用分类识别目标 。为了在不同观察距离处检测不同的目标类型,我们使用不同大小和宽高比的窗口。 滑动窗口(从右到左,从上到下)   我们根据滑动窗口从图像中剪切图像块。由于很多分类器只取固定大小的图像,因此这些图像块是经过变形转换的。但是,这不影响分类准确率,因为分类器可以处理变形后的图像。 将图像变形转换成固定大小的图像   变形图像块被输入 CNN 分类器中,提取出 4096 个特征。之后,我们使用 SVM 分类器识别类别 和该 边界框的另一个线性回归器 。 滑动窗口检测器的系统工作流程图   下面是伪代码。我们创建很多窗口来检测不同位置的不同目标。要提升性能,一个显而易见的办法就是减少窗口数量。 for

MySQL学习笔记-操作数据表中的记录

霸气de小男生 提交于 2020-12-26 09:53:12
MySQL学习笔记-操作数据表中的记录 1.插入记录 INSERT INSERT [INTO] tbl_name [(col_name,...)] {VAULES|VALUE} ({expr|DEFAULT},...),(...),... 例,插入单条记录: mysql> USE testDatabase changed mysql> CREATE TABLE users( -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(20) NOT NULL, -> password VARCHAR(32) NOT NULL, -> age TINYINT UNSIGNED NOT NULL DEFAULT 10, -> sex BOOLEAN -> ); mysql> INSERT users VALUES(NULL,'Tom','asd123',24,1); mysql> SELECT * FROM users;+----+----------+----------+-----+------+| id | username | password | age | sex |+----+----------+----------+-----+------+| 1 | Tom | asd123 |

最近三年四大顶会深度推荐系统上的18篇论文

不想你离开。 提交于 2020-12-05 08:04:26
导读:本文是“深度推荐系统”专栏的第十篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文主要根据RecSys 2019中论文《Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation Approaches》总结的最近三年四大顶会深度推荐系统上的18个最新算法。 欢迎转载,转载请注明出处以及链接,更多关于深度推荐系统优质内容请关注如下频道。 知乎专栏: 深度推荐系统 微博: 深度传送门 公众号:深度传送门 今年RecSys 2019上出现的一篇极具批判性的论文《Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation Approaches》。灵魂一问深度学习是否在推荐系统已经取得了足够可信的进展?在知乎上也引起了激烈的讨论: 如何看待RecSys 2019上的一篇文章认为现有DNN-based推荐算法带来的基本上都是伪提升? 作者总结了过去三年四大顶会(KDD、SIGIR、WWW和RecSys)推荐系统上18个最新算法,只有7个能重现效果。而且在不同的测试数据集上它们与浅层经典方法效果对比中经常都败下阵来

【LeetCode】 87 排列序列

匆匆过客 提交于 2020-11-04 01:41:08
题目: 解题思路: liweiwei-深度优先遍历 + 剪枝、有序数组模拟 https://leetcode-cn.com/problems/permutation-sequence/solution/hui-su-jian-zhi-python-dai-ma-java-dai-ma-by-liwei/ 代码: import java.util.Arrays; public class Solution { /** * 记录数字是否使用过 */ private boolean[] used; /** * 阶乘数组 */ private int[] factorial; private int n; private int k; public String getPermutation(int n, int k) { this.n = n; this.k = k; calculateFactorial(n); // 查找全排列需要的布尔数组 used = new boolean[n + 1]; Arrays.fill(used, false); StringBuilder path = new StringBuilder(); dfs(0, path); return path.toString(); } /** * [@param](https://my.oschina.net/u

力扣-125. 验证回文串

|▌冷眼眸甩不掉的悲伤 提交于 2020-09-30 23:20:45
0. 题目 1.我的思路   我的思路和官方题解中的第一种思路相同,就不放我的烂代码了,放官方的吧: class Solution { public: bool isPalindrome(string s) { string sgood; for (char ch: s) { if (isalnum(ch)) { sgood += tolower(ch); } } int n = sgood.size(); int left = 0, right = n - 1; while (left < right) { if (sgood[left] != sgood[right]) { return false; } ++left; --right; } return true; } }; 作者:LeetCode-Solution 链接:https://leetcode-cn.com/problems/valid-palindrome/solution/yan-zheng-hui-wen-chuan-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 2.官方题解 class Solution { public: bool isPalindrome(string s) { int n = s

Redis 6.0 客户端缓存的服务器端实现

我是研究僧i 提交于 2020-08-11 10:44:40
原文: https://redis.io/topics/client-side-caching 翻译:Wen Hui 转载:中间件小哥 客户端缓存是用于提供高性能服务的一项技术。它使用应用服务器节点(通常情况下和数据库服务器使用不同的物理机)的可用内存,用来在应用端直接存储一部分数据库信息。 正常情况下当客户端请求应用服务器一些数据时,应用服务器会请求数据库这些信息,如下图所示: 当使用客户端缓存时,应用服务器端会存储经常访问的数据请求,以便在下次客户端请求过程中重用之前的数据库查询回复,而无需再向数据库进行查询。 尽管用于本地缓存的应用程序内存可能不是很大,但是与请求诸如数据库之类的网络服务相比,访问本地计算机内存所需的时间要小几个数量级。由于在通常情况下,少量比例数据会经常频繁的被访问,因此该模式可以极大地减少应用程序获取数据的延迟,并同时减少数据库端的负载。 此外,在许多数据集中,信息很少进行更改。例如,社交网络中的大多数用户帖子要么是不变的,要么很少被用户编辑。再加上通常只有一小部分帖子非常受欢迎的事实,要么是因为一小群用户拥有大量关注者,或者因为最近的帖子具有更高的曝光度,由此可见为什么这种模式在实际情况下会非常有用。 通常来说,客户端缓存的两个主要优点是: 可用的数据延迟非常短。 数据库系统接收的查询较少,从而可以使用更少的节点来提供相同的数据服务。

【学习笔记】字符串—广义后缀自动机

╄→尐↘猪︶ㄣ 提交于 2020-08-11 03:27:40
【学习笔记】字符串—广义后缀自动机 一:【前言】 最近一周都在研究 惊( Ren )艳( Lei )无( Zhi )比( Hui )、美( Li )妙( Xing )绝( Yu )伦( Yue ) 的自动机,这里引用 \(\text{bztMinamoto}\) 巨佬的一句话来表达此时的心情: 我感觉我整个人都自动机了…… —— \(bztMinamoto\) ( 回文自动机学习笔记 ) 在此过程中发现网上讲广义 \(\text{SAM}\) 的文章很少,而且很多都不正确,所以决定整理一下。 二:【引理】 众所周知, \(\text{SAM}\) 的一个经典应用是求一个字符串中本质不同子串数量,那么如果改为求一个 \(\text{Trie}\) 树呢? 刘研绎在 \(2015\) 的国家队论文中说过这样一句话: 大部分可以用后缀自动机处理的字符串的问题均可扩展到 \(Trie\) 树上。 我们将这种建立在 \(\text{Trie}\) 树上的 \(\text{SAM}\) 成为广义 \(\text{SAM}\) 。在学习之前,首先要确保对 单串 \(\text{SAM}\) 足够熟悉, 其实也可以简单理解为 多串 \(\text{SAM}\) 啦QAQ 三:【算法实现】 在用广义 \(\text{SAM}\) 处理多模式串问题时,网上流传着的主流写法有 \(3\) 种: \((1

【LeetCode】 62 解数独

安稳与你 提交于 2020-08-10 17:06:05
题目: 解题思路: 回溯法解数独 类似人的思考方式去尝试,行,列,还有 3*3 的方格内数字是 1~9 不能重复。 我们尝试填充,如果发现重复了,那么擦除重新进行新一轮的尝试,直到把整个数组填充完成。 https://leetcode-cn.com/problems/sudoku-solver/solution/hui-su-fa-jie-shu-du-by-i_use_python/ 代码: class Solution { public void solveSudoku(char[][] board) { // 三个布尔数组 表明 行, 列, 还有 3*3 的方格的数字是否被使用过 boolean[][] rowUsed = new boolean[9][10]; boolean[][] colUsed = new boolean[9][10]; boolean[][][] boxUsed = new boolean[3][3][10]; // 初始化 for(int row = 0; row < board.length; row++){ for(int col = 0; col < board[0].length; col++) { int num = board[row][col] - '0'; if(1 <= num && num <= 9){ rowUsed[row]

【LeetCode】45 恢复二叉搜索树

社会主义新天地 提交于 2020-08-05 19:01:28
题目 恢复二叉搜索树 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例 1: 输入: [1,3,null,null,2] 1 / 3 \ 2 输出: [3,1,null,null,2] 3 / 1 \ 2 示例 2: 输入: [3,1,4,null,null,2] 3 / \ 1 4 / 2 输出: [2,1,4,null,null,3] 2 / \ 1 4 / 3 进阶: 使用 O(n) 空间复杂度的解法很容易实现。 你能想出一个只使用常数空间的解决方案吗? 前情提要 二叉搜索树的概念: 二叉查找树它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 思路 https://leetcode-cn.com/problems/recover-binary-search-tree/solution/san-chong-jie-fa-xiang-xi-tu-jie-99-hui-fu-er-cha-/ 代码 class Solution { //用两个变量x,y来记录需要交换的节点 private TreeNode x = null; private TreeNode y = null; private TreeNode pre =