相似度分析的,其中的分词可以采用HanLP即可: http://www.open-open.com/lib/view/open1421978002609.htm /*********************************************************** * @Title : SimilarityAnalyse.java * @Package : lsg.hawei.hanlp * @Description: TODO(用一句话描述该文件做什么) * @author…
在IDEA中使用Ctrl+D就可以退出console输入…
分享一篇hanlp分词工具使用的小案例,即利用hanlp分词工具分析两个中文语句的相似度的案例.供大家一起学习参考! 在做考试系统需求时,后台题库系统提供录入题目的功能.在录入题目的时候,由于题目来源广泛,且参与录入题目的人有多位,因此容易出现录入重复题目的情况.所以需要实现语句相似度分析功能,从而筛选出重复的题目并人工处理之. 下面介绍如何使用Java实现上述想法,完成语句相似度分析: 1.使用HanLP完成分词: 首先,添加HanLP的依赖:(jsoup是为了处理题干中的html标签,去除h…
这是文本离散表示的第二篇实战文章,要做的是运用TF-IDF算法结合n-gram,求几篇文档的TF-IDF矩阵,然后提取出各篇文档的关键词,并计算各篇文档之间的余弦距离,分析其相似度. TF-IDF与n-gram的结合可看我的这篇文章:https://www.cnblogs.com/Luv-GEM/p/10543612.html 用TF-IDF来分析文本的相似度可看阮一峰大佬的文章:http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.h…
一.分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程. 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需要对外存进行访问的排序过程. 2.比较类排序和非比较排序 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较…
一.动图演 二.思路分析 基数排序第i趟将待排数组里的每个数的i位数放到tempj(j=1-10)队列中,然后再从这十个队列中取出数据,重新放到原数组里,直到i大于待排数的最大位数. 1.数组里的数最大位数是n位,就需要排n趟,例如数组里最大的数是3位数,则需要排3趟. 2.若数组里共有m个数,则需要十个长度为m的数组tempj(j=0-9)用来暂存i位上数为j的数,例如,第1趟,各位数为0的会被分配到temp0数组里,各位数为1的会被分配到temp1数组里...... 3.分配结束后,再依次从…
一.动图演示 二.思路分析 归并排序就是递归得将原始数组递归对半分隔,直到不能再分(只剩下一个元素)后,开始从最小的数组向上归并排序 1.  向上归并排序的时候,需要一个暂存数组用来排序, 2.  将待合并的两个数组,从第一位开始比较,小的放到暂存数组,指针向后移, 3.  直到一个数组空,这时,不用判断哪个数组空了,直接将两个数组剩下的元素追加到暂存数组里, 4.  再将暂存数组排序后的元素放到原数组里,两个数组合成一个,这一趟结束. 根据思路分析,每一趟的执行流程如下图所示: 三.负杂度分析…
一.动图演示 二.思路分析 快速排序的思想就是,选一个数作为基数(这里我选的是第一个数),大于这个基数的放到右边,小于这个基数的放到左边,等于这个基数的数可以放到左边或右边,看自己习惯,这里我是放到了左边, 一趟结束后,将基数放到中间分隔的位置,第二趟将数组从基数的位置分成两半,分割后的两个的数组继续重复以上步骤,选基数,将小数放在基数左边,将大数放到基数的右边,在分割数组,,,直到数组不能再分为止,排序结束. 例如从小到大排序: 1.  第一趟,第一个数为基数temp,设置两个指针left =…
两种集合类的复杂度分析 在[6.1]节与[6.2]节中分别以二分搜索树和链表作为底层实现了集合Set,在本节就两种集合类的复杂度分析进行分析:测试内容:6.1节与6.2节中使用的书籍.测试方法:测试两种集合类查找单词所用的时间 //创建一个测试方法 Set<String> set:他们可以是实现了该接口的LinkedListSet和BSTSet对象 private static double testSet(Set<String> set, String filename) { /…
一.动图演示 二.思路分析 例如从小到大排序: 1.  从第二位开始遍历, 2.  当前数(第一趟是第二位数)与前面的数依次比较,如果前面的数大于当前数,则将这个数放在当前数的位置上,当前数的下标-1, 3.  重复以上步骤,直到当前数不大于前面的某一个数为止,这时,将当前数,放到这个位置, 1-3步就是保证当前数的前面的数都是有序的,内层循环的目的就是将当前数插入到前面的有序序列里 4.  重复以上3步,直到遍历到最后一位数,并将最后一位数插入到合适的位置,插入排序结束. 根据思路分析,每一趟…