我是靠谱客的博主 暴躁金毛,最近开发中收集的这篇文章主要介绍Spark:基于莱文斯坦(Levenshtein)距离计算字符串相似度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

以下程序代码基于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)距离计算字符串相似度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部