如何解决如何为相似文本语义相似性生成相同的哈希?
是否有任何算法可以为相似的标题生成相同的“签名”。所以当我想得到所有相似的标题时,我只会得到具有相同签名的文章。
类似标题的例子:
“COVID-19 是一种新兴的、快速发展的情况。”
“COVID-19 是一种新兴的、不断变化的情况。”
ps:我在去掉标题中的停用词后测试了 MD5,但效率不高。
解决方法
这是寻找相似性的解决方案,(不是“语义相似性”!):
假设我们有这样的表 covid
:
CREATE TABLE `covid` (
`c` varchar(500) DEFAULT NULL,`id` int DEFAULT NULL
)
INSERT INTO `covid` VALUES
('COVID-19 is an emerging,rapidly evolving situation.',1),('COVID-19 is an emerging,evolving situation.',2);
这样做时:
WITH RECURSIVE cte AS (
SELECT
1 as i
UNION ALL
SELECT
i+1
FROM cte
WHERE i<10)
SELECT w,count(*),GROUP_CONCAT(id) line
FROM (
SELECT
id,split(x.c,',i) as w
FROM
(select id,replace(c,' ',') as c from covid) x,cte) w1
WHERE NOT w is NULL and w<>''
GROUP BY w
ORDER BY 2 DESC;
你应该得到这样的结果:
+------------+----------+------+
| w | count(*) | line |
+------------+----------+------+
| an | 2 | 1,2 |
| COVID-19 | 2 | 1,2 |
| emerging | 2 | 1,2 |
| evolving | 2 | 2,1 |
| is | 2 | 1,2 |
| situation. | 2 | 2,1 |
| rapidly | 1 | 1 |
+------------+----------+------+
根据 count
,您现在知道表 line
中哪些 covid
具有相同的词。
如果您想将其扩展为“类似”,您可能应该:
- 跳过少于 x 个字符(即少于 3 个)的单词
- 对“.”做点什么在'情况'。 (和其他标点符号)
因此,要实现“符号相似性”确实是很长的路要走。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。