文字列距離関数 in Impala

昨日 SQLite と Impala のUDFについて書きました。今日社内のSlackを見て最近 Impala での C++ 実装文字列距離関数 Levenshtein が話題に上がったことを知りました。

以前Oracle社員時代にもレーベンシュタインについて書きました。

ATOKでは尾根ギア問題は発生しない

Oracle DB の文字列編集距離関数で日本語誤変換を計算させてみる

Cloudera の比較的最近のバージョンで Hue で試した結果です。

image

SQLはこれです。

select levenshtein('onegaishimasu','onegiashimasu') as edit_distance
union all
select levenshtein('おねがいします','おねぎあします') as edit_distance
union all
select levenshtein('お願いします','尾根ギアします') as edit_distance

Apache JIRA です。

new built-in functions to calculate Levenshtein edit
distance.

[IMPALA-7759] Add Levenshtein edit distance built-in function – ASF JIRA

最後にGithubレポジトリーです。手順も書いてあります。

create function levenshtein(string, string) returns int
location ‘/tmp/libudf-levenshtein.so’ symbol=’Levenshtein’;

gregrahn/impala-levenshtein

中国語で”必要十分条件”

日本で中国語習うと割と早目の段階で “只有” , “只要“の2つの語彙を覚えることになります。NHK講座でもそうです。

この2つは理系の人であれば必要十分条件を思い出すのではないかと思います。つまり、、、

  1. 只有 :   必要条件, only if
  2. 只要 :   十分条件, if

ですが日本語でGoogleっても”必要条件”、”十分条件”ではヒットしません。以下のように只有、只要の意味に関する質問とか説明はありますがすっきりしない説明のものが多そう。

「只要」は「~しさえすれば」

中国語についてです。 – “只有”と”只要”ってあります… – Yahoo!知恵袋

んじゃ、中国語の情報見つけてみようと思ってまたGoogleったら中国版 Quora と言われてるらしい 知乎 でのトピックを見つけました。

逻辑上的 a => b && b => a

「当且仅当」 – 知乎

中国では論理学、数学上の用語は if and only if(iff) は”当且仅当”らしいす。ただ上で zhihu.com で意見が出てるのは実際のところ

  1. 「只要……就……」== if
  2. 「只有……才……」== only if

の2つも同じ意味でしかも “就”, “才” の2文字を使うのがキー(肝)であると言ってるように読めます。

と、まあこれ書くためにGoogleっていろいろ読んできたわけですが ”必要十分条件” って概念って日常生活に必要なの??って疑問が湧いてきました.w