NodeJs文本相似度去重脚本
25-04-07 05:09
838
0
文本相似度去重,是指对一批文本进行去重,只保留相似度较高的文本。相似度的度量方法有很多种,这里以编辑距离(Edit Distance)作为衡量标准。 编辑距离是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。常见的编辑距离算法有Levenshtein距离、Damerau-Levenshtein距离、Jaro距离、Jaro-Winkler距离等。 编辑距离算法的实现,可以使用动态规划算法,也可以使用暴力搜索算法。
下面是用NodeJs实现的文本相似度去重脚本
安装依赖
pnpm add natural cosine-similarity
脚本代码
const fs = require("fs"); const natural = require("natural"); const cosineSimilarity = require("cosine-similarity"); const tokenizer = new natural.WordTokenizer(); // 计算文本的词袋模型 const getVector = text => { const tokens = tokenizer.tokenize(text.toLowerCase()); const frequency = tokens.reduce((acc, token) => { acc[token] = (acc[token] || 0) + 1; return acc; }, {}); return frequency; }; // 计算两个文本的相似度 // threshold 为重复率,范围 0-1,自由设置 const isSimilar = (text1, text2, threshold = 0.2) => { const vector1 = getVector(text1); const vector2 = getVector(text2); const similarity = cosineSimilarity(vector1, vector2); return similarity >= threshold; }; // 去重函数 const deduplicateArray = arr => { const result = []; for (const item of arr) { let isDuplicate = false; for (const uniqueItem of result) { if (isSimilar(item, uniqueItem)) { isDuplicate = true; break; } } if (!isDuplicate) { result.push(item); } } return result; }; const txt = ["文本1", "文本2", "文本......", "文本999999"]; const uniqueArray = deduplicateArray(txt); // 将去重后的数据写入文件 fs.writeFile("./dataRes.txt", uniqueArray.join("\n"), err => { if (err) throw err; console.log("数据已成功写入 ./data.txt"); });
-
1~6年级小学生古诗词阶梯阅读训练
977 0 24-07-13 -
金梅字体
1070 0 24-07-24 -
大数据时代,MC如何应对新的常见问题?
大数据时代 Memcached 经典问题随着互联网的快速发展和普及,人类进入了大数据时代。在大数据时代,移动设备全面融入了人们的工作和生活... 955 0 24-05-24 -
AI-Chat桌面版 windows端
AI-Chat桌面版专业的人工智能软件,该软件支持智能对话、论文写作、智能绘画以及语音合成等,本站提供的是这款软件的安装版本,这是一款非... 1050 0 24-12-14 -
怎样在淘宝买东西最便宜
打开商品的页面在 .com 前面加上三个V按下回车键,最近几个月的历史价格就出来了 396 0 21-11-22 -
天天快拍小程序
"天天快拍(微信小程序源码).zip" 涉及的主要知识点是微信小程序的开发和源码管理。微信小程序是一种轻量级的应用形式,它无需下载安装即... 792 0 24-09-19 -
WebStorm-2016.1.3
WebStorm2016是一款功能强大的编程工具,该软件拥有智能代码全、代码格式化、html提示以及代码检查和快速修复等编译功能,能够帮助编程人员... 379 0 21-07-06 -
熊猫签证小程序
熊猫签证是一款基于微信小程序开发的在线签证办理工具。用户可以通过小程序在线提交签证申请材料、查看签证进度,并收到签证办理的相关通知... 1260 0 24-09-12
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~