概述
以下程序代码基于spark,使用scala语言,测试时间:2018-08-03
str1和str2相似度 = 1 - Levenshtein距离 / max(length(str1), length(str2))
val df = spark.createDataset(Seq(
(1, "ab", "abc"),
(2, "bc", "abc"),
(3, "ab1", "ab2"),
(4, "kitten", "sitting"),
(5, "中国山东服务区", "山东中国服务区"),
(6, "", "abc"))).toDF("id", "s1", "s2")
df.show
+---+-------------+--------------+
| id|
s1|
s2|
+---+-------------+--------------+
|
1|
ab|
abc|
|
2|
bc|
abc|
|
3|
ab1|
ab2|
|
4|
kitten|
sitting|
|
5|中国山东服务区|
山东中国服务区|
|
6|
|
abc|
+---+-------------+--------------+
df.withColumn(
"d",
lit(1) -
levenshtein(col("s1"), col("s2")) /
greatest(length(col("s1")), length(col("s2")))).show
+---+-------------+--------------+------------------+
| id|
s1|
s2|
d|
+---+-------------+--------------+------------------+
|
1|
ab|
abc|0.6666666666666667|
|
2|
bc|
abc|0.6666666666666667|
|
3|
ab1|
ab2|0.6666666666666667|
|
4|
kitten|
sitting|0.5714285714285714|
|
5|中国山东服务区|
山东中国服务区|0.4285714285714286|
|
6|
|
abc|
0.0|
+---+-------------+--------------+------------------+
最后
以上就是暴躁金毛为你收集整理的Spark:基于莱文斯坦(Levenshtein)距离计算字符串相似度的全部内容,希望文章能够帮你解决Spark:基于莱文斯坦(Levenshtein)距离计算字符串相似度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复