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

以下程序代码基于spark,使用scala语言,测试时间:2018-08-03

str1和str2相似度 = 1 - Levenshtein距离 / max(length(str1), length(str2))

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部