一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

JavaScript实现文本相似度对比代码示例

时间:2022-06-29 01:45:37 编辑:袖梨 来源:一聚教程网

本篇文章小编给大家分享一下JavaScript实现文本相似度对比代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

一、发现问题

在开发过程中,难免会使用到2个(多个)文本内容处理,一是便于宏观知道文本的重合度,而是更好的区分文本的创新度,也能更好的避免出现大篇幅复制。

为此,可以通过2个文本的相似度对比来实现业务需求。

二、解决问题

如果使用后端语言1来处理,就需要调取接口,对比少量的短文本可以实现,但是一旦遇到在界面实现多个文本对比,并且篇幅巨多,再通过接口可能就出现耗时特别长的情况。既然如此,但不如直接使用前端来处理。

使用算法:编辑距离。

1、编辑距离的概念

设A和B是两个字符串,使用最少的字符操作将字符串A转换为B。字符操作包括:(1)删除一个字符;(2)插入一个字符;(3)将一个字符改写为另一个字符。将字符串A变换为字符串B所需要的最少字符操作数称为字符串A到字符串B的编辑距离(Edit Distance)

2、测试文本

举例,文字来自网络。

文本1

北京商报讯(记者 魏蔚)1月21日,交通运输部官方微信公众号披露,1月20日上午,交通运输新业态协同监管部际联席会议办公室对满帮、货拉拉、滴滴货运、快狗打车等4家互联网道路货运平台公司进行约谈,对滴滴出行、曹操出行、T3出行、美团出行等4家网约车平台公司进行提醒。

文本2

智通财经APP获悉,1月20日,交通运输新业态协同监管部际联席会议办公室对满帮、货拉拉、滴滴货运、快狗打车等4家互联网道路货运平台公司进行约谈,对滴滴出行、曹操出行、T3出行、美团出行等4家网约车平台公司进行提醒。

3、代码实现

实现代码如下,最后返回的数据逻辑可以自行修改。

/**
 * 相似度对比
 * @param s 文本1
 * @param t 文本2
 * @param f 小数位精确度,默认2位
 * @returns {string|number|*} 百分数前的数值,最大100. 比如 :90.32
 */
function similar(s, t, f) {
  if (!s || !t) {
    return 0
  }
  if(s === t){
    return 100;
  }
  var l = s.length > t.length ? s.length : t.length
  var n = s.length
  var m = t.length
  var d = []
  f = f || 2
  var min = function (a, b, c) {
    return a 

4、相似度对比结果

根据测试文本对比,结果为:

75.00

热门栏目