分词

simhash文本相似度比较

こ雲淡風輕ζ 提交于 2019-12-02 13:00:14
在simhash中处理一个文本的步骤如下: 第一步,分词: 对文本进行分词操作,同时需要我们同时返回当前词组在文本内容中的权重(这基本上是目前所有分词工具都支持的功能)。 第二步,计算hash: 对于每一个得到的词组做hash,将词语表示为到01表示的bit位,需要保证每个hash结果的位数相同,如图中所示,使用的是8bit。 第三步,加权 根据每个词组对应的权重,对hash值做加权计算(bit为1则取为1做乘积,bit为0则取为-1做乘积),如上图中, 10011111与权重2加权得到[2 -2 -2 2 2 2 2 2]; 01001011与权重1加权得到[-1 1 -1 -1 1 -1 1 1]; 01001011与权重4加权后得到[-4 4 -4 -4 4 -4 4 4]; 第三步,纵向相加: 将上述得到的加权向量结果,进行纵向相加实现降维,如上述所示,得到[-3 3 -7 -3 7 -3 7 7]。 第四步,归一化: 将最终降维向量,对于每一位大于0则取为1,否则取为0,这样就能得到最终的simhash的指纹签名[0 1 0 0 1 0 1 1] 第五步,相似度比较: 通过上面的步骤,我们可以利用SimHash算法为每一个网页生成一个向量指纹,在simhash中,判断2篇文本的相似性使用的是海明距离。什么是汉明距离?前文已经介绍过了。在在经验数据上

elasticsearch 基本概念

北慕城南 提交于 2019-12-02 11:12:59
创建索引库 就是存放索引的数据库, 在索引中创建 映射 put http://localhost:9200/索引库名称 请求体: { "settings":{ "index":{ "number_of_shards":1, "number_of_replicas":0 } } } number_of_shards:设置分片的数量,在集群中通常设置多个分片,表示一个索引库将拆分成多片分别存储不同 的结点,提高了ES的处理能力和高可用性,入门程序使用单机环境,这里设置为1。 number_of_replicas:设置副本的数量,设置副本是为了提高ES的高可靠性,单机环境设置为0. 如下是创建的例子,创建xc_course索引库,共1个分片,0个副本: 创建映射 就是设置索引中 字段的属性 一旦创建只能增加,不能修改已经创建的 post 请求:http://localhost:9200/xc_course/doc/_mapping { "properties": { "name": { "type": "text" }, "description": { "type": "text" }, "studymodel": { "type": "keyword" } } } 创建文档 ES中的文档相当于MySQL数据库表中的记录。 发送:put 或Post http://localhost

我的架构演化笔记 10:ElasticSearch的分词器之ansj研究

拈花ヽ惹草 提交于 2019-12-02 07:49:33
架构不变,为了学习方便,直接研究ElasticSearch-rtf版本。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 关于redis---配置文件中指定 redis: pool: maxactive: 20 maxidle: 10 maxwait: 100 testonborrow: true ip: 127.0.0.1:6379 先修改为目的IP: redis: pool: maxactive: 20 maxidle: 10 maxwait: 100 testonborrow: true ip: 192.168.56.200:6379 启动redis和ElasticSearch-rtf版本。 ~~~~~~~~~~~~~~~~~~~~~~~开始研究 redis篇 Q1: ElasticSeach什么时候连接上redis的? A: root@ubuntu:/usr/local/elasticsearch-rtf/elasticsearch-rtf# lsof -i:6379 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME redis-ser 1927 root 4u IPv6 11682 0t0 TCP *:6379 (LISTEN) redis-ser 1927 root 5u IPv4

jieba库对中文文本进行切割 python

走远了吗. 提交于 2019-12-02 05:29:52
jieba是中文文本用于分词的库,有3种模式:精确模式、全模式(所有可能的分割)、搜索引擎模式(在精确模式基础上再进行分割) # coding=utf-8 import jieba #txt = open(u"D:\data\ebook\红楼梦.txt","r").read() #,encoding='utf-8' txt = open("D:\\data\\ebook\\1.txt","r",encoding='utf-8').read() words = jieba.lcut_for_search(txt) # 使用搜索引擎模式对文本进行分词 counts = {} # 通过键值对的形式存储词语及其出现的次数 for word in words: print(word) if len(word) == 1: # 长度为1的词语不计算在内 continue else: counts[word] = counts.get(word, 0) + 1 # 遍历所有词语,每出现一次其对应的值加 1 items = list(counts.items())#将键值对转换成列表 items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进行从大到小排序 for i in range(5): word, count = items[i]

自然语言处理从小白到大白系列(6)说说中文分词那些事

橙三吉。 提交于 2019-12-02 05:06:24
文章目录 一. 分词常用方法 1.1 基于词表的方法 最大匹配法 全切分路径选择法 1.2 基于统计模型的方法 1. n元语法模型 2. 隐马尔可夫模型(Hidden Markov Model ,HMM) 3. 条件随机场模型(Conditional Random Fields,CRF) 1.3 基于深度学习的方法 二. 分词常用工具 2.1 [jieba](https://github.com/fxsjy/jieba) 2.2 [hanLP](https://github.com/hankcs/pyhanlp) 2.3 [PKUseg](https://github.com/lancopku/pkuseg-python) 2.4 [thulac](https://github.com/thunlp/THULAC-Python) 2.5 [nlpir](https://github.com/NLPIR-team/NLPIR) 2.6 [snowNLP](https://github.com/isnowfy/snownlp) 自然语言处理的中文分词有三个难点: 分词标准 例如“花草”,有的人认为是一个词,有的人认为应该划分开为两个词“花/草”。某种意义上,中文分词可以说是一个没有明确定义的问题。 切分歧义 不同的切分结果会有不同的含义,这个不用举例了,很常见。 未登录词 也叫新词发现

JAVA自然语言处理NLP工具包

好久不见. 提交于 2019-12-02 03:21:16
1. Java自然语言处理 LingPipe LingPipe 是一个自然语言处理的Java开源工具包。LingPipe目前已有很丰富的功能,包括主题分类(Top Classification)、命名实体识别(Named Entity Recognition)、词性标注(Part-of Speech Tagging)、句题检测(Sentence Detection)、查询拼写检查(Query Spell Checking)、兴趣短语检测(Interseting Phrase Detection)、聚类(Clustering)、字符语言建模(Character Language Modeling)、医学文献下载/解析/索引(MEDLINE Download, Parsing and Indexing)、数据库文本挖掘(Database Text Mining)、中文分词(Chinese Word Segmentation)、情感分析(Sentiment Analysis)、语言辨别(Language Identification)等API。 下载链接: http://alias-i.com/lingpipe/web/download.html 2.中文自然语言处理工具包 FudanNLP FudanNLP主要是为中文自然语言处理而开发的工具包

jieba

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-02 00:16:25
功能 1):分词 jieba.cut方法接受两个输入参数: 1) 第一个参数为需要分词的字符串 2)cut_all参数用来控制是否采用全模式 jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细 注意:待分词的字符串可以是gbk字符串、utf-8字符串或者unicode jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list 代码示例( 分词 ) #encoding=utf-8 import jieba seg_list = jieba.cut("我来到北京清华大学",cut_all=True) print "Full Mode:", "/ ".join(seg_list) #全模式 seg_list = jieba.cut("我来到北京清华大学",cut_all=False) print "Default Mode:", "/ ".join(seg_list) #精确模式 seg_list = jieba.cut("他来到了网易杭研大厦") #默认是精确模式 print ", ".join(seg_list) seg_list

Solr环境搭建及IK分词的集成及solrJ的调用(二)

随声附和 提交于 2019-12-01 21:41:37
看上一篇请移步到这里: http://my.oschina.net/zimingforever/blog/120732 Solr环境搭建及IK分词的集成及solrJ的调用(一) 这里首先介绍如何做分词,首先solr并没有加入中文分词在里面,所以如果是中文搜索的项目我们要加入分词在里面,常用的中文分词有很多,网上大多数都是和庖丁分词结合的,我这里主要加入了IK analyzer,以下简称IK,使用IK是因为之前没有使用solr的时候我一直在用Ik做搜索,感觉用起来还蛮不错,不过网上关于IK和solr的配置就少了一些。 IK的介绍可以看这里: http://www.oschina.net/p/ikanalyzer 首先把iK的jar放入工程里,这里为了避免找不到jar包,我把IKAnalyzer2012.jar这个包扔到了tomcat下的lib下,同时webapps\solr\WEB-INF\lib这里我也扔了相同的jar包进去 接下来,打开schemal.xml文件(上一节我们就提到过这个文件是用来配置分词的) 在types的标签内加如下的配置: <fieldType name="text" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>

elasticsearch安装分词插件analysis-ik

為{幸葍}努か 提交于 2019-12-01 16:45:36
插件地址 https://github.com/medcl/elasticsearch-analysis-ik/ 找到相应的版本 elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.2/elasticsearch-analysis-ik-6.4.2.zip 安装完成后重启elasticsearch 也可以下载zip的压缩包然后解压拷贝到plugin目录下 来源: https://www.cnblogs.com/zhongnan/p/11693872.html

Python使用jieba分词

妖精的绣舞 提交于 2019-12-01 13:57:29
# -*- coding: utf-8 -*- # Spyder (python 3.7) import pandas as pd import jieba import jieba.analyse as anls if __name__ == '__main__': data = pd.read_excel(r'空气指数评论.xlsx') # content为excel的列名 opinion_content = data['content'].dropna().values all_word = '' for i in opinion_content: #形成整个字符串 all_word = all_word +','+ str(i) all_word = all_word.strip() #去掉字符串的空格 all_word_upper = all_word.upper() #大写   #加载词典 #jieba.load_userdict(r"D:\Python_workspace\aaaa.txt")   #如果有不想被切分开的词,例如王者荣耀,和平精英等,可以进行参数设置:tune=True   # jieba.analyse 是基于tf-idf算法的关键词抽取 segment=['王者荣耀','和平精英'] for ii in segment: jieba.suggest