ToB企服应用市场:ToB评测及商务社交产业平台
标题:
文本相似度 HanPL汉语言处理
[打印本页]
作者:
八卦阵
时间:
2024-8-5 09:12
标题:
文本相似度 HanPL汉语言处理
@
目次
媒介
需求
简介
实操开始
1. 添加pom.xml依赖
2. 文本相似度工具类
3. 案例验证
4. 验证效果
总结
媒介
请各大网友尊重本人原创知识分享,谨记本人博客:
南国以南i
、
分词后为 “ 美国(4) 51区(5) 雇员(3) 称(1) 内部(2) 有(1) 9架(3) 飞碟(5) 曾(1) 瞥见(3) 灰色(4) 外星人(5)”, 括号里是代表单词在 整个句子里紧张程度,数字越大越紧张。 2、hash,通过hash算法把每个词酿成hash值, 比如“美国”通过hash算法计算为 100101, “51区”通过hash算法计算为 101011。 这样我们的字符串就酿成了一串串数字,还记得文章开头说过的吗,要把文章变为数字计算才能进步相似度计算性能,现在是降维过程进行时。 3、加权,通过 2步调的hash天生效果, 需要按照单词的权重形成加权数字串, 比如“美国”的hash值为“100101”,通过加权计算为“4 -4 -4 4 -4 4”;“51区”的hash值为“101011”,通过加权计算为 “ 5 -5 5 -5 5 5”。 4、合并, 把上面各个单词算出来的序列值累加,酿成只有一个序列串。 比如 “美国”的 “4 -4 -4 4 -4 4”,“51区”的 “ 5 -5 5 -5 5 5”, 把每一位进行累加, “4+5 -4+-5 -4+5 4+-5 -4+5 4+5” ==》 “9 -9 1 -1 1 9”。 这里作为示例只算了两个单词的,真实计算需要把所有单词的序列串累加。 5、降维,把4步算出来的 “9 -9 1 -1 1 9” 酿成 0 1 串,形成我们最终的simhash署名。 假如每一位大于0 记为 1,小于0 是统优先公司"; /*--------------------------------------敏感哈希说明-------------------------------------- 算法找出可以hash的key值,由于我们利用的simhash是局部敏感哈希,这个算法的特点是只要相似的字 把需要判断文本分词形成这个文章的特征单词。 最后形成去掉噪音词的只要相似的字符串只有个别的位数是有差别变化。那这样我们可以推断两个相似的文本,单词序分词是代表单词在整个句子里紧张程度,数字越大越紧张。 2、hash,通过hash算法把每个词酿成hash值, 比如“美国”通过hash算法计算为 100101, “51区”通过hash算法计算为 101011。 这样我们的字符串就酿成了一串串数字, 还记得文章开头说过的吗,要把文章变为数字加权,通过 家大概会有疑问,经过这么多步调搞这么麻烦,不就是为了得到个 0 1 字符串吗?我直接把这个文本作为字符串输入v较, 前面16位酿成了hash查找。反面的顺序比较的个数是多,用hd5是用于天生唯一签来相差甚远;hashmap也是用于键值对查找,便于快速插入和查找的数据布局。不外我们紧张解决的 是文本相似度计算,要比较的是两个文章是否相识,当然我们降维天生了hashcode也是用于这个目的。看到这里估计各人就明白了,我们利用的sim是这样的,传统hash函数解决的是 天生唯一值,比如 md5、hashmap等。md5是用于天生唯一署名串,只要稍微多加一个字符md5的两个数字看起来相差甚远;hashmap也是用于键值对查找,便于快速插入和查找的数 据布局。不外我们紧张解决的是文本相似度计算,要比较的是两个文章是否相识,当然我们降维天生了hashcode也是用于这个目的。看到这里估计各人就明白了,我们利用的simhash 就算把文章中的字符串酿成 01 串也照旧可以用于计算相似度的,而传统的hashcode却不可。我们可以来做个测试,两个相差只有一个字符的文本串,“你妈妈喊你回家吃饭哦,回家 罗回家罗” 和 “你妈妈叫你回家吃饭啦,回家罗回家罗”。短文本大量重复信息不会被过滤,是不是"; */ /*--------------------------------------过滤说明-------------------------------------- 最后形成去掉噪音词的单词序分词是代表单词在整个句子里紧张程度,数字越大越紧张。 最后形成去掉噪音词的单词序列并为每个词加上权重 2、hash,通过hash算法把每个词酿成hash值, 比如“美国”通过hash算法计算为 100101, “51区”通过hash算法计算为 101011。 这样我们的字符串就酿成了一串串数字,还记得文章开头说过的吗,分为4个16位段的存储空间是单独simhash 存储空间的4倍。之前算出5000w数据是 382 Mb,扩大4倍1.5G左右,还可以接受:) 要把文章变为数字加权,通过 家大概会有疑问,经过这么多步调搞这么麻烦,不就是为了得到个 0 1 字符串吗? 我直接把这个文本作为字符串输入,用hd5是用于天生唯一签来相差甚远;hashmap也是用于键值对查找,便于快速插入和查找的数据布局。不外我们紧张解决的是文本相似度计算,要比较的是两个文章是否相识, 当然我们降维天生了hashcode也是用于这个目的。看到这里估计各人就明白了,我们利用的sim是这样的,传统hash函数解决的是天生唯一值,比如 md5、hashmap等。md5是用于天生唯一署名串,只要稍微多加 一个字符md5的两个数字看起来相差甚远;hashmap也是用于键值对查找,便于快速插入和查找的数据布局。不外我们紧张解决的是文本相似度计算,要比较的是两个文章是否相识,当然我们降维天生了hashcode也 是用于这个目的。看到这里估计各人就明白了,我们利用的simhash就算把文章中的字符串酿成 01 串也照旧可以用于计算相似度的,而传统的hashcode却不可。我们可以来做个测试,两个相差只有一个字符的文本 串,“你妈妈喊你回家吃饭哦,回家罗回家罗” 和 “你妈妈叫你回家吃饭啦,回家罗回家罗”。短文本大量重复信息不会被过滤,"; */[/code]
3. 案例验证
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.7.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.3</version>
</dependency>
复制代码
4. 验证效果
总结
我是
南国以南i
记录点滴每天发展一点点,学习是永无止境的!转载请附原文链接!!!
参考链接
、
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4