gpt4 book ai didi

javascript - 删除 'complicated' 重复项

转载 作者:行者123 更新时间:2023-11-30 20:47:30 33 4
gpt4 key购买 nike

Test File

有时,我的电子邮件列表包含同一个人的重复地址。例如,Jane 的地址都是“jane.doe@email.com”和“doe.jane@email”。她的变体包括替换“。”用“-”或“_”。目前,我的重复脚本——由@Jordan Running 和 Ed Nelson 非常友好地升级——处理“严格”的重复,但无法检测到“doe.jane@email.com”是“jane”的“复杂”重复.doe@email.com”。有没有一种方法可以删除甚至这些 重复项,这样我就不会向 Jane 的多个地址发送电子邮件?他们都指向同一个收件箱,所以我只需要包括她的一个地址。

这是我当前的代码:

function removeDuplicates() {
const startTime = new Date();
const newData = [];
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
const numRows = data.length;
const seen = {};

for (var i = 0, row, key; i < numRows && (row = data[i]); i++) {
key = JSON.stringify(row);
if (key in seen) {
continue;
}
seen[key] = true;
newData.push(row);
};

sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);

// Show summary
const secs = (new Date() - startTime) / 1000;
SpreadsheetApp.getActiveSpreadsheet().toast(
Utilities.formatString('Processed %d rows in %.2f seconds (%.1f rows/sec); %d deleted',
numRows, secs, numRows / secs, numRows - newData.length),
'Remove duplicates', -1);
}

最佳答案

Sample File

模糊匹配测试

enter image description here

注意事项:

  • 不使用 @email.com 部分,它会扭曲结果
  • 使用自定义函数:=removeDuplicatesFuzzy(B2:B12,0.66)
  • 0.66 是模糊匹配的百分比。
  • 结果的右栏(D 栏)显示找到的匹配项的准确度 > 0.66。破折号 - 是未找到匹配项(“唯一”值)

背景

你可以试试这个库: https://github.com/Glench/fuzzyset.js

要安装它,请复制代码 from here .

用法很简单:

function similar_test(string1, string2)
{
string1 = string1 || 'jane.doe@email.com';
string2 = string2 || 'doe.jane@email.com'
a = FuzzySet();
a.add(string1);
var result = a.get(string2);

Logger.log(result); // [[0.6666666666666667, jane.doe@email.com]]

return result[0][0]; // 0.6666666666666667
}

这里还有更多信息:https://glench.github.io/fuzzyset.js/

注意事项:

  • 请谷歌更多信息,寻找javascript 模糊字符串匹配。这里有相关Q:Javascript fuzzy search that makes sense .注意:该解决方案应适用于 Google 表格(无 ECMA-6)
  • 这个算法不像人类那样聪明,它是按字符测试字符串。如果你有两个相似的字符串,比如 don.jeans@email.com,它与 doe.jane@email.com 的相似度为 84%,但人类检测到它完全是另一个人.

关于javascript - 删除 'complicated' 重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48546170/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com