gpt4 book ai didi

javascript - 有没有一种方法可以衡量 Google BigQuery 中的字符串相似性

转载 作者:数据小太阳 更新时间:2023-10-29 05:51:52 26 4
gpt4 key购买 nike

我想知道是否有人知道在 BigQuery 中衡量字符串相似性的方法。

似乎是一个很好的功能。

我的情况是我需要比较两个 url 的相似性,因为我想相当确定它们指的是同一篇文章。

我可以找到 examples using javascript所以也许 UDF 是可行的方法,但我根本没有使用 UDF(或 javascript 就此而言:))

只是想知道是否可以使用现有的正则表达式函数,或者是否有人可以帮助我开始将 javascript 示例移植到 UDF 中。

非常感谢任何帮助,谢谢

编辑:添加一些示例代码

所以如果我有一个 UDF 定义为:

// distance function

function levenshteinDistance (row, emit) {

//if (row.inputA.length <= 0 ) {var myresult = row.inputB.length};
if (typeof row.inputA === 'undefined') {var myresult = 1};
if (typeof row.inputB === 'undefined') {var myresult = 1};
//if (row.inputB.length <= 0 ) {var myresult = row.inputA.length};

var myresult = Math.min(
levenshteinDistance(row.inputA.substr(1), row.inputB) + 1,
levenshteinDistance(row.inputB.substr(1), row.inputA) + 1,
levenshteinDistance(row.inputA.substr(1), row.inputB.substr(1)) + (row.inputA[0] !== row.inputB[0] ? 1 : 0)
) + 1;

emit({outputA: myresult})

}

bigquery.defineFunction(
'levenshteinDistance', // Name of the function exported to SQL
['inputA', 'inputB'], // Names of input columns
[{'name': 'outputA', 'type': 'integer'}], // Output schema
levenshteinDistance // Reference to JavaScript UDF
);

// make a test function to test individual parts

function test(row, emit) {
if (row.inputA.length <= 0) { var x = row.inputB.length} else { var x = row.inputA.length};
emit({outputA: x});
}

bigquery.defineFunction(
'test', // Name of the function exported to SQL
['inputA', 'inputB'], // Names of input columns
[{'name': 'outputA', 'type': 'integer'}], // Output schema
test // Reference to JavaScript UDF
);

我尝试使用以下查询进行测试:

SELECT outputA FROM (levenshteinDistance(SELECT "abc" AS inputA, "abd" AS inputB))

我得到错误:

错误:TypeError:无法读取第 11 行第 38-39 列未定义的属性“substr”错误位置:用户自定义函数

似乎 row.inputA 可能不是字符串,或者由于某种原因字符串函数无法处理它。不确定这是类型问题还是关于 UDF 默认能够使用的实用程序的有趣问题。

再次感谢您的帮助,谢谢。

最佳答案

准备好使用共享 UDF - Levenshtein 距离:

SELECT fhoffa.x.levenshtein('felipe', 'hoffa')
, fhoffa.x.levenshtein('googgle', 'goggles')
, fhoffa.x.levenshtein('is this the', 'Is This The')

6 2 0

声标:

SELECT fhoffa.x.soundex('felipe')
, fhoffa.x.soundex('googgle')
, fhoffa.x.soundex('guugle')

F410 G240 G240

模糊选其一:

SELECT fhoffa.x.fuzzy_extract_one('jony' 
, (SELECT ARRAY_AGG(name)
FROM `fh-bigquery.popular_names.gender_probabilities`)
#, ['john', 'johnny', 'jonathan', 'jonas']
)

johnny

操作方法:

关于javascript - 有没有一种方法可以衡量 Google BigQuery 中的字符串相似性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33433925/

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