从编辑距离、BK树到文本纠错】的更多相关文章

搜索引擎里有一个很重要的话题,就是文本纠错,主要有两种做法,一是从词典纠错,一是分析用户搜索日志,今天我们探讨使用基于词典的方式纠错,核心思想就是基于编辑距离,使用BK树.下面我们来逐一探讨: 编辑距离 1965年,俄国科学家Vladimir Levenshtein给字符串相似度做出了一个明确的定义叫做Levenshtein距离,我们通常叫它"编辑距离". 字符串A到B的编辑距离是指,只用插入.删除和替换三种操作,最少需要多少步可以把A变成B.例如,从FAME到GATE需要两步(两次替…
前几天无意间遇到一个博客,觉得写得挺好的,自己之前的时候有个不好的习惯,那就是遇到了好资源第一反应就是收藏起来然后却很少再看!!这是坏习惯,要改!于是今天就开始通读了,读的第二篇是BK树.觉得有点意思,于是乎就萌发了写个博客啥的,但是呢,我发现已经有人翻译了.那还干嘛重复发明轮子呢,鉴于原作者声明禁止转载,那就算了吧,想看原文的来这里. 下面简单说明一下这个算法,确实不难,只是思路有点巧妙. BK树解决一个什么问题呢,简单而言就是找相似字符串,比如说"book"跟"boon&…
毕设做的是文本纠错方面,然后今天进组见研究生导师 .老师对我做的东西蛮感兴趣.然后介绍自己现在做的一些项目,其中有个模块需要有用到文本纠错功能. 要求1:有多人同时在线编辑文档,然后文档功能有类似Word中的在疑似错误下标浪线,或者标记高亮,并且要推荐修改选项 要求2:语料数据的获取.处理以及完善 要求3:文章写完后要有生成keyword 根据老师所讲要查阅文献,以及已有项目来分析可行性,首先想到之前曾有同学调用百度API来进行文档的纠错,然后在这里试了一下. API描述 识别输入文本中有错误的…
BK树或者称为Burkhard-Keller树,是一种基于树的数据结构,被设计于快速查找近似字符串匹配,比方说拼写纠错,或模糊查找,当搜索”aeek”时能返回”seek”和”peek”. 本文首先剖析了基本原理,并在后面给出了Java源码实现. BK树在1973年由Burkhard和Keller第一次提出,论文在这<Some approaches to best match file searching>.这是网上唯一的ACM存档,需要订阅.更细节的内容,可以阅读这篇论文<Fast Ap…
大伙都知道,文件系统是树形结构的,有时候我们会想到把目录的层次结构变为纯文本形式,就像这样: ├─Windows-universal-samples-master │ ├─Samples │ │ ├─3DPrintingFromUnity │ │ │ └─Assets │ │ │ └─Script │ │ ├─Accelerometer │ │ │ ├─cpp │ │ │ ├─cs │ │ │ ├─js │ │ │ │ ├─css │ │ │ │ ├─html │ │ │ │ ├─js │ │…
http://acm.hdu.edu.cn/showproblem.php?pid=4323 题意: 给出n个串和m次询问,每个询问给出一个串和改变次数上限,在不超过这个上限的情况下,n个串中有多少个串可以转化为询问中给的串. 思路: 明显的编辑距离DP,直接暴力过了,网上有用bk树的,可惜我不会. #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n, m; ]…
引言 我之前参加了一个中文文本智能校对大赛,拿了17名,虽然没什么奖金但好歹也是自己solo拿的第一个比较好的名次吧,期间也学到了一些BERT应用的新视角和新的预训练方法,感觉还挺有趣的,所以在这里记录一下这期间学到的知识,分享一下自己的比赛过程.这个赛题任务大概就是,选择网络文本作为输入,从中检测并纠正错误,实现中文文本校对系统.即给定一段文本,校对系统从中检测出错误字词.错误类型,并进行纠正. 任务定义 系统/模型的输入为原始序列\(X=(x1,x2,..,xn)\),输出为纠错后的序列 \…
后缀树: 字符串匹配算法一般都分为两个步骤,一预处理,二匹配. KMP和AC自动机都是对模式串进行预处理,后缀树和后缀数组则是对文本串进行预处理. 后缀树的性质: 存储所有 n(n-1)/2 个后缀需要 O(n) 的空间,n 为的文本(Text)的长度: 构建后缀树需要 O(dn) 的时间,d 为字符集的长度(alphabet): 对模式(Pattern)的查询需要 O(dm) 时间,m 为 Pattern 的长度: 介绍后缀树之前,我们首先要知道压缩字典树的概念. 我们在对关键字建立字典树的时…
在做机场项目的时候,业务为一个input框,点击的时候出现一个下拉树,这个下拉树是所有的设备,由于设备太多,加上分了区域,为了更好的用户体验,设计一个模糊搜索的功能,方便用户进行选择 具体实现过程如下: 第一步:ui设计  一个input输入框,用于输入用,下方一个div或者是一个ul用于ztree树用 <ul class="list"> <li class="title">  城市:<input id="citySel&qu…
事务集过滤重排: #FP树节点结构 class treeNode: def __init__(self,nameValue,numOccur,parentNode): self.name=nameValue#节点名 self.count=numOccur#出现次数 self.nodeLink=None#链接相似的元素 self.parent=parentNode#当前节点的父节点 self.children={}#子节点集 #为count增加指定值 def inc(self,numOccur):…
一.哈希树概述 1.1..其他树背景 二叉排序树,平衡二叉树,红黑树等二叉排序树.在大数据量时树高很深,我们不断向下找寻值时会比较很多次.二叉排序树自身是有顺序结构的,每个结点除最小结点和最大结点外都有前驱和后继,不论是排序还是搜索它的综合性能比较好,但是单独在搜索这一方面二叉排序树的性能就可能没有Hash树快. 1.2.基础理论 1.2.1.质数分辨定理 什么是质数 : 即只能被 1 和 本身 整除的数. 为什么用质数:因为N个不同的质数可以 ”辨别“ 的连续整数的数量,与这些质数的乘积相同.…
[版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 最近看到一些动态规划的东西讲到莱文斯坦距离(编辑距离)的计算,发现很多都讲的不是很清楚,比较难理解,自己思考过后重新给大家讲解一下: 维基百科解析:莱文斯坦距离,又称Levenshtein距离,是编辑距离的一种.指两个字串之间,由一个转成另一个所需的最少编辑操作次数.允许的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符.例如将kitten转成sittin…
最近面试一些公司,被问到的关于Elasticsearch和搜索引擎相关的问题,以及自己总结的回答. Elasticsearch是如何实现Master选举的? Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分: 对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排一次…
论文标题:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition 论文作者: Baoguang Shi, Xiang Bai and Cong Yao 论文代码的下载地址:http://mc.eistar.net/~xbai/CRNN/crnn_code.zip 论文地址:https://arxiv.org/p…
Elasticsearch是如何实现Master选举的? Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分: 对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0位)节点,暂且认为它是master节点. 如果对某个节点的投票数达到一定的值…
minHash最小哈希原理 收藏 初雪之音 发表于 9个月前 阅读 208 收藏 9 点赞 1 评论 0 摘要: 在数据挖掘中,一个最基本的问题就是比较两个集合的相似度.通常通过遍历这两个集合中的所有元素,统计这两个集合中相同元素的个数,来表示集合的相似度:这一步也可以看成特征向量间相似度的计算(欧氏距离,余弦相似度).当这两个集合里的元素数量异常大(特征空间维数很大),同时又有很多个集合需要判断两两间的相似度时,传统方法会变得十分耗时,最小哈希(minHash)可以用来解决该问题. 前言 在数…
作者:龙心尘 &&寒小阳 时间:2016年1月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50543337 http://blog.csdn.net/han_xiaoyang/article/details/50545650 声明:版权所有,转载请联系作者并注明出处 1. 如果让你破译"三体"人文字你会怎么办? 我们试着开一下脑洞:假如你有一个优盘,里面存了大量"三体"人(刘慈欣…
很久之前就得到了百度机器阅读理解关于数据集的这篇文章,今天才进行总结!.... 论文地址:https://arxiv.org/abs/1711.05073 自然语言处理是人工智能皇冠上的明珠,而机器阅读理解可以说是自然语言处理皇冠上的明珠.近些年机器阅读理解领域也越来越火热,百度所创造的DuReader这个数据集以及百度的两篇被ACL所收录的论文都充分证明了我们又向机器阅读理解领域迈进了一步. 这篇文章主要介绍了DuReader这个数据集,这个数据集是目前最大的关于中文的MRC数据集. 0摘要:…
前言 对于如何发现一个数据集中的频繁项集,前文讲解的经典 Apriori 算法能够做到. 然而,对于每个潜在的频繁项,它都要检索一遍数据集,这是比较低效的.在实际的大数据应用中,这么做就更不好了. 本文将介绍一种专门检索频繁项集的新算法 - FP-growth 算法. 它只会扫描数据集两次,能循序挖掘出频繁项集.因此这种算法在网页信息处理中占据着非常重要的地位. FP-growth 算法基本原理 将数据存储到一种成为 FP 树的数据结构中,这样的一棵树包含了数据集中满足最小支持度阈值的所有节点信…
FP - growth是一种比Apriori更高效的发现频繁项集的方法.FP是frequent pattern的简称,即常在一块儿出现的元素项的集合的模型.通过将数据集存储在一个特定的FP树上,然后发现频繁项集或者频繁项对.通常,FP-growth算法的性能比Apriori好两个数量级以上. FP树与一般的树结构类似,但它通过链接(Link)来连接相似元素,被连起来的元素项可以看成一个链表. 上图是一棵FP树,一个元素项可以在一棵FP树种出现多次,FP树的节点会存储项集的出现频率,每个项集会以路…
.PageManager控件— 页面级别的控制(包括主题.语言 等等) 覆盖web.config中自定义结点的配置 EnablePageLoading:是否启用页面的第一次加载提示,默认居中显示加载图标(默认值:true) EnableAjaxLoading:是否启用Ajax加载提示,默认位于页面上方的文字提示(默认值:true) ExecuteOnReadyWhenPostBack: 是否每次页面回发时都执行onReady脚本(默认值:true) AutoSizePanelID: 指定某一控件…
From:http://www.csdn.net/article/2015-03-26/2824317 1. Notepad++ Notepad++是用于编辑xml.脚本以及记笔记的最佳工具.这个工具的最好部分在于,你在Notepad++上打开的任何一个文档,在关闭后都会有一个残留文档,它有助于在意外删除重要文档,还有办法恢复.Notepad++是一款非常有特色的编辑器,是开源软件,可以免费使用. 2. XML Marker XML Marker工具对Java程序员来说是非常重要的.它可以帮助开…
作者:Shane 出处:http://bluescorpio.cnblogs.com lxml takes all the pain out of XML. Stephan Richter lxml是Python语言里和XML以及HTML工作的功能最丰富和最容易使用的库.lxml是为libxml2和libxslt库的一个Python化的绑定.它与众不同的地方是它兼顾了这些库的速度和功能完整性,以及纯Python API的简洁性,大部分与熟知的ElementTree API兼容但比之更优越. 安装…
身为一个Java开发的爱好者,你不得不承认需要安装以下软件 NO.1 Java开发工具包 Java JDK 可以说这个工具包不得不安装,因为这个工具包是开发Java程序的核心! Java JDK工具包配置的第一步就是安装→配置Java环境变量→测试Java和Javac指令→测试Hello world(原谅博主只会Hello World),接下来就是愉快的敲代码~\(≧▽≦)/~ NO.2 Eclipse 这个软件Java骨灰级程序猿应该晓得了,敲代码必备耶!!(反正博主自打装上了以后就没咋用过,…
为什么需要 wepy 转 VUE "转转二手"是我司用 wepy 开发的功能与 APP 相似度非常高的小程序,实现了大量的功能性页面,而新业务 H5 项目在开发过程中有时也经常需要一些公共页面和功能,但新项目又有自己的独特点,这些页面需求重新开发成本很高,但如果把小程序代码转换成 VUE 就会容易的多,因此需要这样一个转换工具. 本文将通过实战带你体验 HTML.css.JavaScript 的 AST 解析和转换过程 如果你看完觉得有用,请点个赞~ AST 概览 AST 全称是叫抽象…
简介: Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. 使用 from bs4 import BeautifulSoup html_doc = """<html><head><title>The Dormouse's story</title></head><body><p class=&q…
1.分词 Word Segmentationchqiwang/convseg ,基于CNN做中文分词,提供数据和代码. 2.词预测 Word PredictionKyubyong/word_prediction ,基于CNN做词预测,提供数据和代码. 3. 文本蕴涵 Textual Entailment Steven-Hewitt/Entailment-with-Tensorflow,基于Tensorflow做文本蕴涵,提供数据和代码. 4. 语音识别 Automatic Speech Reco…
经常有人问我:老大让我完成xxx,我不会,他也不会,但是很着急.这个任务怎么实现啊?这个任务需要什么技术啊?这种情况我遇到有100+次了,而且很多时候问得问题跟具体需要的技术简直是驴唇不对马嘴.所以今天整理了常见的30种NLP任务非常适合练手的Project,我觉得有俩作用:研究+练手,加深理解,做到更专业:收藏起来,以备不时之需,不敢保证涵盖工业界所有NLP业务场景,但是涵盖95+%以上是完全没问题的. 还有一个原因,马上周末了,我发现大部分人周五晚上开始到周一上午都不看技术相关的内容,今天本…
DOM可以将任何HTML或XML文档描绘成一个有多层节点构成的结构,即在HTML中所有内容都是节点.文档节点是每个文档的根节点,文档节点有一个子节点,称为文档元素.每个文档只能有一个文档元素.在HTML中,文档元素是<html>元素,其他所有元素都包含在文档元素中. 1.节点 JavaScript中实现了一个 Node 类型来描述DOM节点,JavaScript中的所有节点类型都是继承自Node类型.一共有12中节点类型,Node类型定义了12个数值常量来表示,如下所示,其中括号中表示的是常量…
先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.6.zip 注意:由于涉及到版权问题,此附件没有图片和音乐.请参考链接,手动采集一下! 请参考链接: https://www.cnblogs.com/xiao987334176/p/9647993.html#autoid-3-4-0 一.玩具与玩具之间的对话 app消息提醒 之前实现了App发送语音消息给web端玩具,web端…