park1.5.0 - レーベンシュタイン距離を計測する


Spark 1.5.0 で追加された関数の中にレーベンシュタイン距離があったので簡単に確認してみました
半備忘です

レーベンシュタイン距離とは?

簡単に言うと「単語の類似度」を図るロジックです
単語Aを単語Bにするまで何回操作が必要かという回数を表します
似た単語なんかを探すときによく使うロジックですね

Sparkソースコード

詳しくは↓のPRを
SparkSQL関数で使うのが主になるのかなあと
https://issues.apache.org/jira/browse/SPARK-8270

Spark-shell上での確認

marioとmaro, sevrとserviceそれぞれの単語間距離を測りました
いい感じです

scala> Seq(("mario", "maro"), ("sevr", "service")).toDF("l", "r").selectExpr("levenshtein(l, r)").show()

+-----------------+
|'levenshtein(l,r)|
+-----------------+
|                1|
|                4|
+-----------------+