2007-11-18
■[awk]Levenshtein 距離
以前も書いたものですが、再び登場します。
#! /usr/bin/gawk -f BEGIN { str1 = ARGV[1] ""; str2 = ARGV[2] ""; print levenshtein_distance(str1, str2); } ### 2 つの文字列のレーベンシュタイン距離を返す ### http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%83%99%E3%83%B3%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E8%B7%9D%E9%9B%A2 function levenshtein_distance(s1, s2) { len_s1 = length(s1); len_s2 = length(s2); split(str1, a_str1, ""); split(str2, a_str2, ""); for (i = 0; i <= len_s1; i++) { distance[i, 0] = i; } for (j = 0; j <= len_s2; j++) { distance[0, j] = j; } for (i = 1; i <= len_s1; i++) { for (j = 1; j <= len_s2; j++) { if (a_str1[i] == a_str2[j]) { cost = 0; } else { cost = 1; } distance[i, j] = min3(distance[i - 1, j ] + 1,\ distance[i , j - 1] + 1,\ distance[i - 1, j - 1] + cost); } } return distance[len_s1, len_s2]; } ### 3 つの最小値を返す function min3(a, b, c, min) { min = a; if (b <= min) { min = b; } if (c <= min) { min = c; } return min; }
飼育しているヘルマンリクガメが口から血を流していたので、急遽、御茶ノ水のレプタイルクリニック に連れて行ったのですが、その際に嫁が「高田馬場」と「御茶ノ水」って似てるよねと言ったので思い出しました。
$ gawk -f levenshtein_distance.awk たかたのばば おちゃのみず 5
要するに文字距離が 5 なので、というか要するに「の」しか合っていません。orz
結局ヘルマンリクガメの太郎丸は・・・
ヘルマンリクガメの太郎丸 (後からメスと分かったのですが命名が先でした) 方はかなりひどい口内炎で、注射をしてもらい、しばらく薬で様子を見ることにしました。実は近所の超有名爬虫類病院 (テレビでも紹介されたことあるくらい有名です) に行かないのにはわけがあります。
違いは「愛」なのですが、約 6 年前に目から泡を吹いていて、最初に近所で診てもらったときに「もうこりゃダメだね。すぐ死ぬよ」と言われたのに対し、「レプタイルクリニック」では「大丈夫でしょう。ひととおり検査しておきますね」と言って、診察が終わった後にすーっと「かわいいねぇ」を連呼しているあたりに愛の差があるんだと思います。(実際に「レプタイルクリニック」が正しい診断をしているわけですが、人間で前者のような診察をされたら大問題になると思います)
これは仕事も同じで、「ダメ」でスタートしたらダメなのです。何も見ないで判断したらダメだと思います。
そんな中、来週末は法事で田舎に戻らなければならず不安です。
トラックバック - http://d.hatena.ne.jp/Rocco/20071118/p2
リンク元
- 36 http://www.google.co.jp/search?q=awk+前の行&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:unofficial&client=firefox-a
- 35 http://www.google.co.jp/search?hl=ja&q=awk+前の行&lr=lang_ja
- 32 http://awk.freeshell.org/LevenshteinEditDistance
- 30 http://search.yahoo.co.jp/search?p=レプタイルクリニック&ei=UTF-8&qrw=0&pstart=1&fr=top_ga1&b=41
- 25 http://www.google.co.jp/search?hl=ja&source=hp&q=awk+前の行&btnG=Google+検索&lr=&aq=f&oq=
- 14 http://www.google.co.jp/search?q=レプタイルクリニック&hl=ja&lr=lang_ja&safe=off&start=20&sa=N
- 11 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=Lgg&q=awk+前の行&btnG=検索&lr=lang_ja
- 11 http://www.google.co.jp/url?sa=t&rct=j&q=awk 前の行&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/Rocco/20071118/p3&ei=PdbETqC0Na3EmQWMiPXxCg&usg=AFQjCNHRboTCRx1UilWzPCiMKhjHudMEAQ
- 10 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=DVXB,DVXB:2005-02,DVXB:ja&q=awk+uniqの使い方
- 9 http://www.google.co.jp/url?sa=t&rct=j&q=awk+前の行&source=web&cd=1&ved=0CCkQFjAA&url=http://d.hatena.ne.jp/Rocco/20071118/p3&ei=kSfKTsuBDdCKmQW8zu0N&usg=AFQjCNHRboTCRx1UilWzPCiMKhjHudMEAQ

