分词

simhash 文本相似度计算

泪湿孤枕 提交于 2019-12-06 14:04:59
常见文本相似度计算方法: 1、 向量空间模型VSM(Vector Space Model) 。使用VSM计算相似度,先对文本进行分词,然后建立文本向量,把相似度的计算转换成某种特征向量距离的计算,比如余弦角、欧式距离、Jaccard相似系数等。这种方法存在很大一个问题:需要对文本两两进行相似度比较,无法扩展到海量文本的处理。 使用介绍可以参考 Corpora and Vector Spaces , 以及 TF-IDF model 2 、使用gensim的 doc2vec models.doc2vec 模型 ,doc2vec的设计原理是基于word2vec的原理进行改进。但是据大家使用的反馈,效果不是很好。 3、主题模型的近似计算。 通过计算documents的主题模型,将主题模型近似高的documents进行k-means聚合。实际计算时可以使用 gensim的 LDA 模型 gensim中实践LDA 4、 使用simhash算法斤进行文本相似度计算 5、 最新的有种基于深度学习的方法叫 Deep Averaging Network ,效果据研究者说比以上好,但是网上相关资料目前只有作者的论文以及算法代码。(还没来得及研究) simhash算法流程 1、分词 ,把需要判断文本分词形成这个文章的特征单词。最后形成去掉噪音词的单词序列并为每个词加上权重,我们假设权重分为5个级别(1~5

simhash简介

自作多情 提交于 2019-12-06 13:56:25
先贴一张网上的图片: 解释一下图片:这里feature可以指一篇文档分词后的某个词,即将文档中的某个词作为一个特征。weight是这个词的权重,这里可以是这个词在这个句子中出现的次数。 这里的hash算法就是传统的hash算法,通过调用一个hash函数实现的。 simhash是为了计算一篇文档之间的相似度存在的,通过simhash算法可以计算出文档的simhash值,通过各个文档计算出的二进制值来计算文档之间的汉明距离,然后根据汉明距离来比较文档之间的相似度。汉明距离是指两个相同长度的字符串相同位置上不同的字符的个数。 simhash算法分为5个步骤:分词、hash、加权、合并、降维,具体过程如下所述: 分词 给定一段语句,进行分词,得到有效的特征向量,然后为每一个特征向量设置1-5等5个级别的权重(如果是给定一个文本,那么特征向量可以是文本中 的词,其权重可以是这个词出现的次数)。例如给定一段语句:“CSDN博客结构之法算法之道的作者July”,分词后为:“CSDN 博客 结构 之 法 算法 之 道 的 作者 July”,然后为每个特征向量赋予权值:CSDN(4) 博客(5) 结构(3) 之(1) 法(2) 算法(3) 之(1) 道(2) 的(1) 作者(5) July(5),其中括号里的数字代表这个单词在整条语句中的重要程度,数字越大代表越重要。 hash

面试|海量文本去重~simhash

徘徊边缘 提交于 2019-12-06 13:55:43
simhash算法是google发明的,专门用于海量文本去重的需求,所以在这里记录一下simhash工程化落地问题。 下面我说的都是工程化落地步骤,不仅仅是理论。 背景 互联网上,一篇文章被抄袭来抄袭去,转载来转载去。 被抄袭的文章一般不改,或者少量改动就发表了,所以判重并不是等于的关系,而是相似判断,这个判别的算法就是simhash。 simhash计算 给定一篇文章内容,利用simhash算法可以计算出一个哈希值(64位整形)。 判别两篇文章是相似的方法,就是两个simhash值的距离<=3,这里距离计算采用汉明距离,也就是2个simhash做一下异或运算,数一下比特位=1的有N位,那么距离就是N。 现在问题就是,如何计算文本的simhash? 分词+权重 首先需要将文章作分词,得到若干个(词组,权重)。 分词我们知道很多库都可以实现,最常见的就是结巴分词。权重是怎么得来的呢? 权重一般用TF/IDF算法,TF表示词组在本文章内的频次比例,出现越多则对这篇文章来说越重要,文章分词后TF可以立马计算出来。 IDF是词组在所有文章中的出现比例,出现越多说明词组对文章的区分度越低越不重要,但是IDF因为需要基于所有文章统计,所以一般是离线去批量计算出一个IDF字典。 结巴分词 支持加载IDF词典并且提供了一个默认的词典,它包含了大量的词组以及基于海量文本统计出来的IDF词频

SimHash算法原理

我与影子孤独终老i 提交于 2019-12-06 13:53:00
刚到公司项目中用到了simhash,但没有详细的了解,后来被问到原理,结果就狗带了。。 下面是自己查资料和自己的一些理解,不愧是google出品,比较符合google的风格,简单实用。 先贴一张网上的图片: 解释一下图片:这里feature可以指一篇文档分词后的某个词,即将文档中的某个词作为一个特征。weight是这个词的权重,这里可以是这个词在这个句子中出现的次数。 这里的hash算法就是传统的hash算法,通过调用一个hash函数实现的。 simhash是为了计算一篇文档之间的相似度存在的,通过simhash算法可以计算出文档的simhash值,通过各个文档计算出的二进制值来计算文档之间的汉明距离,然后根据汉明距离来比较文档之间的相似度。汉明距离是指两个相同长度的字符串相同位置上不同的字符的个数。 simhash算法分为5个步骤:分词、hash、加权、合并、降维,具体过程如下所述: 分词 给定一段语句,进行分词,得到有效的特征向量,然后为每一个特征向量设置1-5等5个级别的权重(如果是给定一个文本,那么特征向量可以是文本中 的词,其权重可以是这个词出现的次数)。例如给定一段语句:“CSDN博客结构之法算法之道的作者July”,分词后为:“CSDN 博客 结构 之 法 算法 之 道 的 作者 July”,然后为每个特征向量赋予权值:CSDN(4) 博客(5) 结构(3) 之(1)

ES 或 Solr 分词器的相关面试题:

不羁岁月 提交于 2019-12-06 10:53:30
1、ES 中的 IK 分词器能分中文和英语的原因是什么? ik 分词器为中文分词器,默认可对中文分词;通过 Setting API 构造 analyzer (字符过滤) , 可以对IK中文分词器做一些修改,让它实现 回溯词根 ,从而实现真正的英文分词。 ES默认有 8 个 analyzer 。 2、IK分词器的类型? Ik_smart分词器 和 ik_max_word 分词器 最粗粒度 最细粒度 3、ES中怎么进行拼音的分词? 安装ES 的拼音分词器 4、Solr是怎么用的? ①启动solr服务器; ②创建集合(collection/core) ③配置中文分词 ④在图形界面通过articles进行测试是否支持中文分词 ⑤定义字段类型 ⑥建立索引并查询 5、 solr怎么设置搜索结果排名靠前(得分)? 可以设置文档中域的boost值,boost值越高计算出来的相关度得分就越高,排名也就越靠前。此方法可以把热点商品或者是推广商品的排名提高。 来源: https://www.cnblogs.com/wushaopei/p/11979294.html

7 中文短文本聚类

╄→尐↘猪︶ㄣ 提交于 2019-12-06 10:20:46
文本聚类是将一个个文档由原有的自然语言文字信息转化成数学信息,以高维空间点的形式展现出来,通过计算哪些点距离比较近,从而将那些点聚成一个簇,簇的中心叫做簇心。一个好的聚类要保证簇内点的距离尽量的近,但簇与簇之间的点要尽量的远。 如下图,以 K、M、N 三个点分别为聚类的簇心,将结果聚为三类,使得簇内点的距离尽量的近,但簇与簇之间的点尽量的远。 开发环境,我们选择:: Windows 系统 Python 3.6 Jupyter Notebook 本文继续沿用上篇文本分类中的语料来进行文本无监督聚类操作。 整个过程分为以下几个步骤: 语料加载 分词 去停用词 抽取词向量特征 实战 TF-IDF 的中文文本 K-means 聚类 实战 word2Vec 的中文文本 K-means 聚类 下面开始项目实战。 1. 首先进行语料加载,在这之前,引入所需要的 Python 依赖包,并将全部语料和停用词字典读入内存中。 第一步,引入依赖库,有随机数库、jieba 分词、pandas 库等: import random import jieba import pandas as pd import numpy as np from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature

8 HMM 和 CRF

自作多情 提交于 2019-12-06 10:20:30
近几年在自然语言处理领域中,HMM(隐马尔可夫模型)和 CRF(条件随机场)算法常常被用于分词、句法分析、命名实体识别、词性标注等。由于两者之间有很大的共同点,所以在很多应用上往往是重叠的,但在命名实体、句法分析等领域 CRF 似乎更胜一筹。通常来说如果做自然语言处理,这两个模型应该都要了解,下面我们来看看本文的内容。 从贝叶斯定义理解生成式模型和判别式模型 理解 HMM(隐马尔可夫模型)和 CRF(条件随机场)模型之前,我们先来看两个概念:生成式模型和判别式模型。 在机器学习中,生成式模型和判别式模型都用于有监督学习,有监督学习的任务就是从数据中学习一个模型(也叫分类器),应用这一模型,对给定的输入 X 预测相应的输出 Y。这个模型的一般形式为:决策函数 Y=f(X) 或者条件概率分布 P(Y|X)。 首先,简单从贝叶斯定理说起,若记 P(A)、P(B) 分别表示事件 A 和事件 B 发生的概率,则 P(A|B) 表示事件 B 发生的情况下事件 A 发生的概率;P(AB)表示事件 A 和事件 B 同时发生的概率。 根据贝叶斯公式可以得出: 生成式模型:估计的是联合概率分布,P(Y, X)=P(Y|X)*P(X),由联合概率密度分布 P(X,Y),然后求出条件概率分布 P(Y|X) 作为预测的模型,即生成模型公式为:P(Y|X)= P(X,Y)/ P(X)

Elastic Search中normalization和分词器

纵然是瞬间 提交于 2019-12-06 05:31:02
为key_words提供更加完整的倒排索引。 如:时态转化(like | liked),单复数转化(man | men),全写简写(china | cn),同义词(small | little)等。 如:china 搜索时,如果条件为cn是否可搜索到。 如:dogs,搜索时,条件为dog是否可搜索到数据。 如果可以使用简写(cn)或者单复数(dog&dogs)搜索到想要的结果,那么称为搜索引擎normalization人性化。 normalization是为了提升召回率的(recall),就是提升搜索能力的。 normalization是配合分词器(analyzer)完成其功能的。 分词器的功能就是处理Document中的field的。就是创建倒排索引过程中用于切分field数据的。 如:I think dogs is human’s best friend.在创建倒排索引的时候,使用分词器实现数据的切分。 上述的语句切分成若干的词条,分别是: think dog human best friend。 常见搜索条件有:think、 human、 best、 friend,很少使用is、a、the、i这些数据作为搜索条件。 1 ES默认提供的常见分词器 要切分的语句:Set the shape to semi-transparent by calling set_trans(5)

谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

混江龙づ霸主 提交于 2019-12-06 03:21:42
明天又双叒叕是一年一度的七夕恋爱节了! 又是一波绝好的机会!恩爱秀起来! 购物车清空!礼物送起来!朋友圈晒起来! 等等! 什么?! 你还没准备好七夕礼物么? 但其实你不知道要送啥? 原来又双叒叕要到了 全民不知道送什么礼物的系列日子了… 需要Python软件工具和学习资料的小伙伴可以点击下方链接自行获取 http://note.youdao.com/noteshare?id=7e3c432b74512d52b75aafc4609451b9 哎呦 你们这些 磨人的小(lao)妖(you)精(tiao)! Python倒是觉得你还可以抢救一下! 说到词云应该不陌生,不知道的童靴往下看 词云,就是把网络文本中出现频率较高的 "关键词"予以视觉上的突出 浏览者只要一眼扫过文本就可以领略其主旨 瞧 这是不是一个有声音、有画面的小爱心~ 今天 我们采集情侣们之间的聊天日常 用此制作一份只属于你们的小浪漫! 第一步,我们需要导出自己和对象的数据~ 微信的备份功能并不能直接给你导出文本格式,它导出来其实是一种叫sqlite的数据库。如果说用网上流传的方法提取文本数据,iOS则需要下载itunes备份整机,安卓则需要本机的root权限,无论是哪种都非常麻烦,在这里给大家介绍一种不需要整机备份和本机root权限,只导出和对象的聊天数据的方法。 那就是使用安卓模拟器导出,这样既能ios/安卓通用

jieba完整文档

廉价感情. 提交于 2019-12-05 22:02:55
jieba “结巴”中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module. Scroll down for English documentation. 特点 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 支持繁体分词 支持自定义词典 MIT 授权协议 在线演示 http://jiebademo.ap01.aws.af.cm/ (Powered by Appfog) 网站代码: https://github.com/fxsjy/jiebademo 安装说明 代码对 Python 2/3 均兼容 全自动安装: easy_install jieba 或者 pip install jieba / pip3 install jieba 半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup