Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在MS SQL Server中,如何将mdq.相似性分数转换为MDS中的编辑操作数?_Sql Server_Tsql_Clr_Distance_Levenshtein Distance - Fatal编程技术网

Sql server 在MS SQL Server中,如何将mdq.相似性分数转换为MDS中的编辑操作数?

Sql server 在MS SQL Server中,如何将mdq.相似性分数转换为MDS中的编辑操作数?,sql-server,tsql,clr,distance,levenshtein-distance,Sql Server,Tsql,Clr,Distance,Levenshtein Distance,如何将mdq.Similarity的结果转换为两个单词匹配所需的结果。此功能是Microsoft SQL Server中主数据服务(MDS)的一部分,定义为: USE [mds] ALTER FUNCTION [mdq].[Similarity](@input1 [nvarchar](4000), @input2 [nvarchar](4000), @method [tinyint], @containmentBias [float], @minScoreHint [float]) RETURN

如何将
mdq.Similarity
的结果转换为两个单词匹配所需的结果。此功能是Microsoft SQL Server中主数据服务(MDS)的一部分,定义为:

USE [mds]
ALTER FUNCTION [mdq].[Similarity](@input1 [nvarchar](4000), @input2 [nvarchar](4000), @method [tinyint], @containmentBias [float], @minScoreHint [float])
RETURNS [float] WITH EXECUTE AS CALLER, RETURNS NULL ON NULL INPUT
AS EXTERNAL NAME [Microsoft.MasterDataServices.DataQuality].[Microsoft.MasterDataServices.DataQuality.SqlClr].[Similarity]
这两个单词彼此相距1个编辑点,产生不同的Levenshtein距离,这似乎说明了它们的长度(单词中的字符数)


然而,我需要它在每种情况下返回1,因为每一对都有两个单词,通过一次编辑(插入、删除、替换)而有所不同。

您不能。

我还不能用这个函数做任何有用的事情。我发布这篇文章的主要原因是为了让人们可以访问,因为在做一个测试时它不会出现

根据msdn,mdq。相似性:

返回相似性分数。这个分数表示相似性 由指定的匹配算法比较的两个字符串之间

我理解Levenshtein、Jaro和LCSS,但是在使用这个函数很多小时后,很难用它做任何有用的事情。相似性是一条死胡同

这个

--Using Levenshtein edit distance algorithm.
SELECT Lev = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 0, 0.0, 0.0);
--Using Jaccard similarity coefficient algorithm.
SELECT Jacc = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 1, 0.0, 0.0);
--Using Jaro-Winkler distance algorithm.
SELECT jaro = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 2, 0.0, 0.0);
--Using longest common subsequence algorithm.
SELECT lcss = mdq.Similarity(N'12345', N'93459', 3, 0.0, 0.0);
Lev
----------------------
0.5625

Jacc
----------------------
0.269230769230769

jaro
----------------------
0.878846153846154

lcss
----------------------
0.6
返回

--Using Levenshtein edit distance algorithm.
SELECT Lev = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 0, 0.0, 0.0);
--Using Jaccard similarity coefficient algorithm.
SELECT Jacc = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 1, 0.0, 0.0);
--Using Jaro-Winkler distance algorithm.
SELECT jaro = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 2, 0.0, 0.0);
--Using longest common subsequence algorithm.
SELECT lcss = mdq.Similarity(N'12345', N'93459', 3, 0.0, 0.0);
Lev
----------------------
0.5625

Jacc
----------------------
0.269230769230769

jaro
----------------------
0.878846153846154

lcss
----------------------
0.6

你不能。

我还不能用这个函数做任何有用的事情。我发布这篇文章的主要原因是为了让人们可以访问,因为在做一个测试时它不会出现

根据msdn,mdq。相似性:

返回相似性分数。这个分数表示相似性 由指定的匹配算法比较的两个字符串之间

我理解Levenshtein、Jaro和LCSS,但是在使用这个函数很多小时后,很难用它做任何有用的事情。相似性是一条死胡同

这个

--Using Levenshtein edit distance algorithm.
SELECT Lev = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 0, 0.0, 0.0);
--Using Jaccard similarity coefficient algorithm.
SELECT Jacc = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 1, 0.0, 0.0);
--Using Jaro-Winkler distance algorithm.
SELECT jaro = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 2, 0.0, 0.0);
--Using longest common subsequence algorithm.
SELECT lcss = mdq.Similarity(N'12345', N'93459', 3, 0.0, 0.0);
Lev
----------------------
0.5625

Jacc
----------------------
0.269230769230769

jaro
----------------------
0.878846153846154

lcss
----------------------
0.6
返回

--Using Levenshtein edit distance algorithm.
SELECT Lev = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 0, 0.0, 0.0);
--Using Jaccard similarity coefficient algorithm.
SELECT Jacc = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 1, 0.0, 0.0);
--Using Jaro-Winkler distance algorithm.
SELECT jaro = mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 2, 0.0, 0.0);
--Using longest common subsequence algorithm.
SELECT lcss = mdq.Similarity(N'12345', N'93459', 3, 0.0, 0.0);
Lev
----------------------
0.5625

Jacc
----------------------
0.269230769230769

jaro
----------------------
0.878846153846154

lcss
----------------------
0.6

受艾伦回答的启发,我四处挖掘,寻找标准化的Levenshtein距离。发现了这一点,显然,它很有效:非规范化
mdq。相似性
输出编辑操作的数量。因此,MDS函数计算

1-距离(a,b)/最大距离(a.长度,b.长度)

因此,我们将原始Levenshtein距离反向工程为(注意舍入!!):

我在包装函数中保留了
@minScoreHint
参数,因为它可以极大地提高性能()。然后输出为:

a   b   Lev Lev_nmzd
a       1   0
ab  a   1   0.5
abc ab  1   0.667
ac  ab  1   0.5

所以,这毕竟不是那么糟糕。不过,我希望微软能引用他们构建机器学习工作的出版物。它已经是Python、R和其他软件(GPL或其他)中包文档的标准实践

受艾伦答案的启发,我四处挖掘,寻找标准化的Levenshtein距离。发现了这一点,显然,它很有效:非规范化
mdq。相似性
输出编辑操作的数量。因此,MDS函数计算

1-距离(a,b)/最大距离(a.长度,b.长度)

因此,我们将原始Levenshtein距离反向工程为(注意舍入!!):

我在包装函数中保留了
@minScoreHint
参数,因为它可以极大地提高性能()。然后输出为:

a   b   Lev Lev_nmzd
a       1   0
ab  a   1   0.5
abc ab  1   0.667
ac  ab  1   0.5

所以,这毕竟不是那么糟糕。不过,我希望微软能引用他们构建机器学习工作的出版物。它已经是Python、R和其他软件(GPL或其他)中包文档的标准实践

你好,艾伦。谢谢你的链接。事实上,我没有通过Bing、Google和Yahoo找到文档。关于如何在
相似性
中计算Levenshtein,没有精确的公式吗。然后,我可以返回我需要的原始编辑距离。或者,可能有一个作者在微软的联系人,他可以使计算结果更加清晰。嗨,艾伦。谢谢你的链接。事实上,我没有通过Bing、Google和Yahoo找到文档。关于如何在
相似性
中计算Levenshtein,没有精确的公式吗。然后,我可以返回我需要的原始编辑距离。或者,可能有一个作者在微软的联系人,他可以使计算结果更加清晰。我一直想玩这个,但还没有机会。尽管如此,你所做的看起来非常棒,奥列格。我一直想玩这个,但还没有机会。尽管如此,你所做的看起来绝对精彩。