首页
精选文章ES查看全文ES是基于Lucene搭建的一个分布式存储。lucene是apache旗下著名的开源搜索框架,但是lucene存在以下问题:lucene是单机版本的搜索引擎,无法用于大规模搜索系统的实现。 lucene的文件写入索引之后不能立即生效,需要等待lucene生成segment才能被检索,过程中如果服务器宕机,会出现数据丢失的问题。 lucene的updateDocuments方法只支持文档全量更新,不支持字段级别的更新。 lucene只提供简单的API用于创建索引以及检索,不是一个完整的搜索引擎。 ES通过分布式架构解决了上述问题,成为了最为流行的搜索引擎之一。 名词解释 实时性 当一个文档写入Lucene不能被立即查询,Elasticsearch提供了refresh的操作,该操作定时地调用(默认1秒)lucene的reopen(新版本为openIfChanged)在内存中为新写入的数据生成一个新的segment,写入segment的文档均可以被检索到。 refresh操作的时间间隔由refresh_interval参数控制,默认为1s, 当然还可以在写入请求中带上refresh表示写入后立即refresh,另外还可以调用refresh API显式refresh。 由于refresh的间隔较短,因此会产生大量的小segment,为此ES会运行一个任务检测当前磁盘中的segment,对符合条件的segment进行合并操作,减少lucene中的segment个数,提高查询速度,降低负载。不仅如此,merge过程也是文档删除和更新操作后,旧的doc真正被删除的时候。用户还可以手动调用_forcemerge API来主动触发merge…HyperLogLog查看全文基数计数通用用于统计一个集合中不重复的元素个数。精确的基数技术对内存的要求较高,和元素的个数基本是线性关系。HyperLogLog是一个概率算法,其应用场景是可以对大量元素进行计数,并且可以计算这些元素的近似基数。 HyperLogLog有优良的空间复杂度表现,其内存占用不用因为计数元素的增加而增多。 基数计数算法一般有下列几种: Linear Counting(LC):较早出现的基数预估算法,空间复杂度与简单bitmap方法是一样的,都是O(Nmax),虽然较bigmap有常量级别的优化,但是整体而言,LC的性能一般。 LogLog Counting(LLC):相比于LC而言,LLC更加节省内存,空间复杂度是O(log2(log2(Nmax)))。 HyperLogLog Counting(HLL):HyperLogLog Counting基于LLC的进行了改进优化,在同样空间复杂度情况下,比LLC的基数估计有更好的准确度表现。 HyperLogLog的算法思想非常简单。它基于一种叫做哈希函数的数学工具来实现。首先将输入的元素通过哈希函数转换成一个二进制字符串,然后从左往右找到第一个1出现的位置,将这个位置记录下来。这个位置的值就可以用来估计唯一值的个数了。最后将所有元素的记录位置求平均,得到的平均值就是唯一值的估计。 具体来说,HyperLogLog算法将输入的元素通过哈希函数得到一个哈希值,然后通过一定的方式将哈希值转化成一个二进制数,并记录下最左边的1的位置,也就是将哈希值转化为一个非负整数。这个非负整数就是这个元素的估计计数器值。HyperLogLog将所有元素的估计计数器值进行平均,得到一个总的估计计数值,这个估计值就是唯一元素的个数…NLP查看全文自然语言处理(英语:Natural Language Processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。NLP是涉及到计算机科学,语言学和机器学习的交叉学科,可以用于计算机和人类之间通过自然语言进行交流,该领域的应用根据目标不同可以分为下列几个分支: 语音识别,将人类语言转译为文本,语音识别(ASR)应用了一部分NLP的能力,例如语言模型,但是ASR技术中还包括声学模型处理等技术,所以ASR只是应用了NLP的一种技术,而不是NLP的一个子集。 自然语言生成,将信息生成人类语言的音频。 自然语言理解,计算机可以理解人类的自然语言。 NLP从大的流程上主要分为几个部分,词法分析、特征工程、模型训练等。 词法分析 词法分析主要的环节有分词,实体识别,词性标注。 分词 人类语言一般是以句子为基础的表意单元,但是人类语言的句子有各种丰富的词汇以及语法的组合,属于非结构化的信息,直接分析成本较高。而词语在任何语言都是可穷举的,具有一定的结构化特性,所以NLP的语义分析都是以词为基础单元。 分词就是将句子、段落、文章这种长文本,分解为以字词为单位的数据结构,方便后续的处理分析工作。 分词算法一般有三种实现: 基于词典的实现,例如ik 基于统计模型,例如ansj, hanlp 基于深度学习 词性标注 词性标注是为分词标注词性,词性是指名词、动词等。 因为中文词语没有印加语系中词态的概念,所以词性标注比较困难。 词性标注算法一般基于HMM。 特征工程 在 NLP 特征提取常用的技术有… |
热门分类开源Golang消息队列JavaJavascriptLinuxMysqlNLPPHP事务内存管理分布式理论分类存储常用存储开源软件操作系统画图网络编程数据库算法虚拟化前端存储理论常用算法微服务数据结构算法应用计算机原理中间件共识算法分布式分治动态规划容器并发排序架构组件绘图工具网络协议编程语言理论算法思想树缓存架构C++字符串算法工程思想搜索
算法题库精选内容 |