面试遇到的问题
2015-03-27 15:24
148 查看
1.朴素贝叶斯为什么叫朴素?
2.朴素贝叶斯如何聚类?
3.simhash为什么结果能让相似文本hash值差不多
simhash作为locality sensitive hash(局部敏感哈希)
simhash算法分为5个步骤:分词、hash、加权、合并、降维,具体过程如下所述:
分词
给定一段语句,进行分词,得到有效的特征向量,然后为每一个特征向量设置1-5等5个级别的权重(如果是给定一个文本,那么特征向量可以是文本中 的词,其权重可以是这个词出现的次数)。例如给定一段语句:“CSDN博客结构之法算法之道的作者July”,分词后为:“CSDN 博客 结构 之 法 算法 之 道 的 作者 July”,然后为每个特征向量赋予权值:CSDN(4) 博客(5) 结构(3) 之(1) 法(2) 算法(3) 之(1) 道(2)
的(1) 作者(5) July(5),其中括号里的数字代表这个单词在整条语句中的重要程度,数字越大代表越重要。
hash
通过hash函数计算各个特征向量的hash值,hash值为二进制数01组成的n-bit签名。比如“CSDN”的hash值Hash(CSDN)为100101,“博客”的hash值Hash(博客)为“101011”。就这样,字符串就变成了一系列数字。
加权
在hash值的基础上,给所有特征向量进行加权,即W = Hash * weight,且遇到1则hash值和权值正相乘,遇到0则hash值和权值负相乘。例如给“CSDN”的hash值“100101”加权得 到:W(CSDN) = 100101*4 = 4 -4 -4 4 -4 4,给“博客”的hash值“101011”加权得到:W(博客)=101011*5 = 5 -5 5 -5 5 5,其余特征向量类似此般操作。
合并
将上述各个特征向量的加权结果累加,变成只有一个序列串。拿前两个特征向量举例,例如“CSDN”的“4 -4 -4 4 -4 4”和“博客”的“5 -5 5 -5 5 5”进行累加,得到“4+5 -4+-5 -4+5 4+-5 -4+5 4+5”,得到“9 -9 1 -1 1”。
降维
对于n-bit签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值,最后我们便可以根据不同语句simhash的海 明距离来判断它们的相似度。例如把上面计算出来的“9 -9 1 -1 1 9”降维(某位大于0记为1,小于0记为0),得到的01串为:“1 0 1 0 1 1”,从而形成它们的simhash签名。
其流程如下图所示:
4.二叉树的删除
2.朴素贝叶斯如何聚类?
3.simhash为什么结果能让相似文本hash值差不多
simhash作为locality sensitive hash(局部敏感哈希)
流程
simhash算法分为5个步骤:分词、hash、加权、合并、降维,具体过程如下所述:分词
给定一段语句,进行分词,得到有效的特征向量,然后为每一个特征向量设置1-5等5个级别的权重(如果是给定一个文本,那么特征向量可以是文本中 的词,其权重可以是这个词出现的次数)。例如给定一段语句:“CSDN博客结构之法算法之道的作者July”,分词后为:“CSDN 博客 结构 之 法 算法 之 道 的 作者 July”,然后为每个特征向量赋予权值:CSDN(4) 博客(5) 结构(3) 之(1) 法(2) 算法(3) 之(1) 道(2)
的(1) 作者(5) July(5),其中括号里的数字代表这个单词在整条语句中的重要程度,数字越大代表越重要。
hash
通过hash函数计算各个特征向量的hash值,hash值为二进制数01组成的n-bit签名。比如“CSDN”的hash值Hash(CSDN)为100101,“博客”的hash值Hash(博客)为“101011”。就这样,字符串就变成了一系列数字。
加权
在hash值的基础上,给所有特征向量进行加权,即W = Hash * weight,且遇到1则hash值和权值正相乘,遇到0则hash值和权值负相乘。例如给“CSDN”的hash值“100101”加权得 到:W(CSDN) = 100101*4 = 4 -4 -4 4 -4 4,给“博客”的hash值“101011”加权得到:W(博客)=101011*5 = 5 -5 5 -5 5 5,其余特征向量类似此般操作。
合并
将上述各个特征向量的加权结果累加,变成只有一个序列串。拿前两个特征向量举例,例如“CSDN”的“4 -4 -4 4 -4 4”和“博客”的“5 -5 5 -5 5 5”进行累加,得到“4+5 -4+-5 -4+5 4+-5 -4+5 4+5”,得到“9 -9 1 -1 1”。
降维
对于n-bit签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值,最后我们便可以根据不同语句simhash的海 明距离来判断它们的相似度。例如把上面计算出来的“9 -9 1 -1 1 9”降维(某位大于0记为1,小于0记为0),得到的01串为:“1 0 1 0 1 1”,从而形成它们的simhash签名。
其流程如下图所示:
4.二叉树的删除
相关文章推荐
- 遇到的面试问题?都来解下
- (面试)遇到的一些智力问题的题目
- iOS 面试中遇到的部分问题及简单答案(1)->(陆续更新)
- 面试遇到的问题 记录下来
- java/golang开发面试中遇到的问题集锦--持续更新
- Laravel、PHPer 面试可能会遇到的问题
- 一些面试时候可能遇到的问题
- 面试遇到的问题
- [置顶] 面试中遇到的期权问题
- 上海面试经常遇到的事务安全问题
- 产品经理反型记 | 解答新人面试中遇到的问题
- 面试问题(有没有遇到过同名的类加载错误的情况)
- Java面试常遇到的问题(二)
- 面试遇到的一个小问题,集合学了这么久,除了常用的基本上都忘了
- 【最近面试遇到的一些问题】Java中取小数点后两位(四种方法)
- 遇到的面试问题总结
- 遇到的面试问题?都来解下
- Android面试遇到的问题(1)
- 【转】JAVA中的多线程问题(高级面试中经常遇到)
- 面试常遇到的通配符匹配的两个小问题总结