分词

商城项目---畅购chapter05(第五天)

我与影子孤独终老i 提交于 2020-01-31 23:01:33
第五章的内容使用Elasticsearch做搜索引擎,之前用的Solar做搜索都是模模糊糊的,这个在Linux操作部署的这个过程到简单 了不少,这个安装和启动elasticsearch都挺麻烦的,还有kibana分词器,不过这些这个虚拟机都装好了,并且都有自动启动,所以光改一下IP就可以了,相对部署安装过程是简单了不少。 这些安装的步骤其实都不用去写的,虚拟机都集成好了,什么都不用装,环境都搭建好了,省时省力多块好省 修改网关要先停掉服务,这个步骤非常重要,因为这个虚拟机里面继承的IP是原来的IP这个时候你必须要改成你自己虚拟机的IP才可以 这些配置文件熟悉一下就可以了,其实虚拟机里面基本都改好了 这个分词器也不用下载了,虚拟机里面也装好了都有所有的环境,解压都不用解压 如果没有虚拟机的可以点我个人头像看我的资源里面上传的有这个虚拟机镜像 测试分词结果 所有服务启动安装正常 这个语句也是相对比较简单的 注意一下这个kibnan的IP一定要换成本机的IP所以这个里面的docker要重新安装一下Kibnan 注意重新安装的的时候:9200的端口号不要忘记了不然Discover就会识别不到ElasticSeach Kibnan启动成功 进行索引库的测试 下面就是一些DSL语句的测试,这个之前做项目的时候中文识别有问题,推荐有火狐浏览器,这个语句基本就不会出现什么问题 一个注意点就是

jieba库

跟風遠走 提交于 2020-01-28 13:45:07
jieba库: 利用一个中文词库,确定中文字符之间的关联概率 中文字符间概率大的组成词组,形成分词结果 jieba库分词的三种模式:精确模式、全模式、搜索引擎模式 精确模式:把文本精确的切分开,不存在冗余单词 全模式:把文本中所有可能的词语都扫描出来,有冗余 搜索引擎模式:在精确模式的基础上,对长词再次切分 常用函数: jieba.lcut(s):精确模式,返回一个列表类型的分词结果 jieba.lcut(s,cut_all=True):全模式,返回一个列表类型的分词结果,存在冗余 jieba.lcut_for_search(s):搜索引擎模式,返回一个列表类型的分词结果,存在冗余 jieba.add_word(w):向分词词典增加新词w 来源: 51CTO 作者: 王果果ooo 链接: https://blog.51cto.com/14232274/2468502

elasticsearch教程--中文分词器作用和使用

北城余情 提交于 2020-01-28 08:52:12
概述 本文都是基于 elasticsearch安装教程 中的elasticsearch安装目录(/opt/environment/elasticsearch-6.4.0)为范例 环境准备 · 全新最小化安装的 centos 7.5 ·elasticsearch 6.4.0 认识中文分词器 在博文 elasticsearch分词器中提到elasticsearch能够快速的通过搜索词检索出对应的文章归功于倒排索引,下面通过中文举例看看倒排索引。 中文分词器作用以及效果 中文分词器是做什么的呢 ? what? 通过名字就知道了啊,为什么还要问。。。下面通过三个文档示例,看看它是如何分词的 文档 1: 我爱伟大的祖国 文档 2: 祝福祖国强大繁 文档 3: 我爱蓝天白云 经过中文分词器 ,以上文档均会根据分词规则,将文档进行分词后的结果如下: 注意 :不同的分词规则,分词结果不一样,选择根据分词器提供的分词规则找到适合的分词规则 文档 1分词结果: [我,爱,伟大,的,祖国] 文档 2分词结果: [祝福,祖国,强大,繁盛] 文档 3分词结果: [我,爱,蓝天白云,蓝天,白云] 通过上面的分词结果,发现拆分的每个词都是我们熟知的词语, 但是如果不使用中文分词,就会发现上面的文档把每个字拆分成了一个词,对我们中文检索很不友好。 再看倒排索引 看到上面中文分词器结果 ,就会有新的疑问

文本挖掘的分词原理

与世无争的帅哥 提交于 2020-01-27 20:40:07
    在 文本挖掘的分词原理 中,我们讲到了文本挖掘的预处理的关键一步:“分词”,而在做了分词后,如果我们是做文本分类聚类,则后面关键的特征预处理步骤有向量化或向量化的特例Hash Trick,本文我们就对向量化和特例Hash Trick预处理方法做一个总结。 1. 词袋模型     在讲向量化与Hash Trick之前,我们先说说词袋模型(Bag of Words,简称BoW)。词袋模型假设我们不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重。而权重与词在文本中出现的频率有关。     词袋模型首先会进行分词,在分词之后,通过统计每个词在文本中出现的次数,我们就可以得到该文本基于词的特征,如果将各个文本样本的这些词与对应的词频放在一起,就是我们常说的向量化。向量化完毕后一般也会使用TF-IDF进行特征的权重修正,再将特征进行标准化。 再进行一些其他的特征工程后,就可以将数据带入机器学习算法进行分类聚类了。     总结下词袋模型的三部曲:分词(tokenizing),统计修订词特征值(counting)与标准化(normalizing)。     与词袋模型非常类似的一个模型是词集模型(Set of Words,简称SoW),和词袋模型唯一的不同是它仅仅考虑词是否在文本中出现,而不考虑词频。也就是一个词在文本在文本中出现1次和多次特征处理是一样的。在大多数时候

全文索引Sphinx和sphinx的中文分词(二)

China☆狼群 提交于 2020-01-27 07:57:03
2.sphinx的中文分词 Coreseek 官网地址:http://www.coreseek.cn/ 使用最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包 LibMMSeg。 这个项目用的词库格式与普通词库的格式不一样, 还需要转换一下格式才能转换成词库文件. 这个项目里提供了一个叫mmseg的可执行文件做词库生成, 做繁体的定制是要收费的。 sfc(sphinx-for-chinese) google code:http://code.google.com/p/sphinx-for-chinese/ 这个项目是在每个Sphinx的发行版中, 在sphinxutils.cpp中加入了一个新参数 chinese-dictionary, 在sphinx.cpp 中加入mmseg实现的分词算法, 除此外没有其他改动, 比较接近原始的sphinx程序. 它的词典是用mkdict.exe生成的, 词典就是规则的 word fq 格式, 直接用convertz转换简体至繁体, 也可以顺利生成词典. 有一个小小的缺憾是似乎不能设置复合分词, 例如”官方声明”会被作为单个词索引, 这样搜索”声明”时不会出现. 复合分词的冗余会带来磁盘消耗, 但是实际使用中还是需要有复合分词的支持。 SCWS 官网:http://www.ftphp.com/scws/

Lucene05-分词器

此生再无相见时 提交于 2020-01-27 04:07:21
Lucene05- 分词器 1、 概念 Analyzer (分词器)的作用是把一段文本中的词按规则取出所包含的所有词。对应的是 Analyzer 类,这是一个抽象类,切分词的具体规则是由子类实现的,所以对于不同的语言(规则),要用不同的分词器。如下图 注意:在创建索引时会用到分词器,在使用字符串搜索时也会用到分词器,这两个地方要使用同一个分词器,否则可能会搜索不出结果。所以当改变分词器的时候,需要重新建立索引库 2、 常见的中文分词器 中文的分词比较复杂,因为不是一个字就是一个词,而且一个词在另外一个地方就可能不是一个词,如在 “ 帽子和服装 ” 中, “ 和服 ” 就不是一个词。对于中文分词,通常有三种方式:单字分词、二分法分词、词典分词 2.1 单字分词 就是按照中文一个字一个字地进行分词,效率比较低。如: “ 我们是中国人 ” ,效果: “ 我 ” 、 “ 们 ” 、 “ 是 ” 、 “ 中 ” 、 “ 国 ” 、 “ 人 ” 。( StandardAnalyzer 就是这样) Analyzer analyzer2 = new StandardAnalyzer(); 2.2 二分法分词 按两个字进行切分,把相邻的两个字组成词分解出来,效率也比较低。而且很多情况下分的词不对。如: “ 我们是中国人 ” ,效果: “ 我们 ” 、 “ 们是 ” 、 “ 是中 ” 、 “ 中国 ”

《数学之美》-----读后感

邮差的信 提交于 2020-01-26 15:58:37
《数学之美》-----读后感 1.如何衡量分词效果的好坏? 2.如何构建网络爬虫? 3.影响搜索引擎的因素 4.余弦相似度在自然语言处理中的应用 5.如何判断两个集合是否相同? 6.密码 7.解决噪音干扰(反作弊)的基本思路 8.如何衡量搜索结果的权威性? 9.数学模型的重要性 10.拼音输入法 11.哈希表的存储效率一般不超过50%? 后记 参考链接 一直以来都不喜欢看书,比较偏爱数学,觉得只要知道思路不用记太多长篇大论的东西。本科学了四年的数学与应用数学,我从不怀疑数学的价值,但是天天面对复杂的定理和证明,一度时间让我很怀疑数学的实用性,毕竟很多人并不需要知道每一步是怎末推导的,只需要把对应的公式记住就完事了。 大三决心考研的时候,便当了逃兵,转到了统计,考研复试是我第一次感受到本科四年的数学知识在我身上的实际体现,复试笔试的题目好多都是本科只有数学专业才学的特别难的概率论和数理统计的课后习题,庆幸自己没有偷懒,所有的习题都自己做了一遍。随着接触的统计和自然语言处理的知识越来越多,我越来越感受到数学的实用性,那些复杂的推导和证明可以在实际中更快更清晰的解决更多问题。 在朋友和老师的推荐下,便读了吴军老师的数学之美,更是加深了我对数学的认知,真正感受到了从统计学到天文学,数学不仅无处不在,而且无法替代。本文主要整理数学之美里面一些比较实际的问题,作为自己读书后的总结。 1

Elasticsearch实践(三):Mapping

醉酒当歌 提交于 2020-01-25 23:17:59
版本:Elasticsearch 6.2.4。 Mapping类似于数据库中的表结构定义,主要作用如下: 定义Index下字段名(Field Name) 定义字段的类型,比如数值型,字符串型、布尔型等 定义倒排索引的相关配置,比如是否索引、记录postion等 Mapping完整的内容可以分为四部分内容: 字段类型(Field datatypes) 元字段(Meta-Fields) Mapping参数配置(Mapping parameters) 动态Mapping(Dynamic Mapping) 自动Mapping 如果没有手动设置Mapping,Elasticsearch默认会自动解析出类型,且每个字段以第一次出现的为准。 下面我们先看一下Elasticsearch默认创建的Mapping是什么样的。 首先我们创建一个索引: PUT /user/ 查询索引信息: GET /user 结果: { "user": { "aliases": {}, "mappings": {}, "settings": { "index": { "creation_date": "1540044686190", "number_of_shards": "5", "number_of_replicas": "1", "uuid": "_K5b8w7jRiuthf7QeQZhdw", "version"

Sphinx + Coreseek 实现中文分词搜索

自古美人都是妖i 提交于 2020-01-25 16:51:25
Sphinx + Coreseek 实现中文分词搜索 Sphinx Coreseek 实现中文分词搜索 全文检索 1 全文检索 vs 数据库 2 中文检索 vs 汉化检索 3 自建全文搜索与使用Google等第三方站点提供的站内全文搜索的差别 Sphinx Coreseek介绍 Coreseek安装使用 1. 全文检索 1.1 全文检索 vs. 数据库 全文检索是数据库的有力补充,全文检索并不能替代数据库在应用系统中的作用。当应用系统的数据以大量的文本信息为主时,採用全文检索技术能够极大的提升应用系统的价值。 数据库搜索。假设搜索范围包含所有正文数据。往往性能非常低。用户响应时间长(分钟级。常常超时);而全文检索能够在0.x秒(毫秒级)的时间内将结果反馈给用户; 数据库搜索。一个用户在搜索。往往影响其它用户的相应用系统进行操作。全文检索能够同一时候支持多个用户并发搜索,其它相应用系统进行操作的用户不受影响。 数据库搜索非常难实现多个关键字的复合搜索。而全文检索能够实现多个关键词的复合搜索。包含 “和(AND)”、“或(OR)”、“否(NOT)” 等; 数据库搜索难于对结果进行相关度排序,当检索结果多时。用户往往难于找到最恰当的文档。而全文检索通过统计的研究成果。能够将文档进行相关度排序后。再返回给用户,提高用户的效率; 全文检索还能够对检索结果的数据进行聚类分析(Group,

分词中常用算法比较与设想

陌路散爱 提交于 2020-01-24 14:40:28
与基于理解的分词算法和基于统计的分词算法相比,基于文本匹配的算法更加通用。基于文本匹配的算法又称之为“机械分词算法”,他是它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功,可识别出一个词。按照扫描方向的不同,文本匹配分词方法可以分为正向匹配和逆向匹配两种;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。 常用的几种机械分词方法如下: 1) 正向最大匹配法(由左到右的方向) 2) 逆向最大匹配法(由右到左的方向) 3) 最少切分(使每一句中切出的词数最小)。 其他的还有将上述各种方法相互组合形成的分词算法,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。本文中着重讨论正向最大匹配法和逆向最大匹配法。 由于机械分词算法的准确性取决于算法的准确性与词库完备性两个方面。在本文中设想词库充分大,包含需要的词语。 一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统