タグ

algorithmに関するkaz_gotoのブックマーク (9)

  • MySQLでTF-IDFの計算、あと2つのベクトルの内積の計算 (2006-12-19)

    文を形態素分解し、必要な品詞をtfテーブルとdfテーブルに入れる。分析対象となる文書群すべてについてこの処理を行い、各形態素のTF-IDF値を求めて文書をベクトル化する。他の文書ベクトルと内積を比較し、小さい順に「似ている記事」を求めたい (クラスタリングとかは別途)。 HarmanによるTF値の正規化とSparok JonesによるDF値の正規化をする場合のTF-IDF値の計算式は以下のようになる (参考文献): tfidf(i,j) = log2(freq(i,j) + 1) / log2(NoT) * (log2(N / Dfreq(i)) + 1)

  • 編集距離(レーベンシュタイン距離)の計算 - Ceekz Logs (Move to y.ceek.jp)

    文字列間の類似度を求める方法の一つとして、編集距離が挙げられます。編集距離は、考案者にちなみレーベンシュタイン距離とも呼ばれますが、具体的には、挿入や削除、置換によって、一方の文字列から他方の文字列に変換するために必要な作業の最小回数です。 use List::Util; sub levenshtein_distance { my ($list_1, $list_2) = @_; my $len_1 = scalar(@{$list_1}); my $len_2 = scalar(@{$list_2}); my @d; foreach my $i (0 .. $len_1) { $d[$i][0] = $i; } foreach my $j (0 .. $len_2) { $d[0][$j] = $j; } foreach my $i (1 .. $len_1) { foreach my

  • コサイン尺度(コサイン類似度)の計算 - Ceekz Logs (Move to y.ceek.jp)

    文書間の類似度を求める方法の一つとして、コサイン尺度が挙げられます。コサイン尺度とは、2つのベクトルのなす角度であり、文書をベクトル化することにより、文書間の類似度を求めることが出来ます。 sub cosine_similarity { my ($vector_1, $vector_2) = @_; my $inner_product = 0.0; map { if ($vector_2->{$_}) { $inner_product += $vector_1->{$_} * $vector_2->{$_}; } } keys %{$vector_1}; my $norm_1 = 0.0; map { $norm_1 += $_ ** 2 } values %{$vector_1}; $norm_1 = sqrt($norm_1); my $norm_2 = 0.0; map { $nor

  • ほぼ日刊イトイ新聞 - がんばれ森川くんの遺伝子くん

    <群れの知能> 前回まで考えない知能の代表として、 ゴキブリを紹介してきましたが、 昆虫には、彼のように 1匹オオカミ(ゴキブリ)として生活するものと、 アリやハチのように集団を作って生活するものがいます。 今回は、この「群れの知能」がテーマです。 アリやハチの「社会」を見ていると、 なんだか、とても複雑なルールがあるように見え、 私たち人間の社会と似ている!同じだ!おれは働き蜂だ!! と感じてしまうことも多いです。 そして、つい、社会を構成するものたちも、 私たちと同じように 「考える知能」の持ち主じゃないかと 思ってしまいがちです。 ところが、ところが、 この一見複雑で高度で知的に見える「群れの動き」が、 実はすっごく簡単なルールで作れてしまうとしたら、 どーしましょう。 上の3段論法 1:アリやハチの群れの動きは、とても複雑である。 2:複雑な群れの動きは、 複雑で高度な知性(ルール

    ほぼ日刊イトイ新聞 - がんばれ森川くんの遺伝子くん
    kaz_goto
    kaz_goto 2008/10/22
    鳥の群れが飛んでいる様子を再現するルール
  • 著名ソーシャルメディアが使っているアルゴリズムを大公開! | Moz - SEOとインバウンドマーケティングの実践情報

    “アルゴリズム”は、もっとも非人間的なものの代表だともいえる。ソーシャルメディアにとって、そのアルゴリズムが不可欠だというのは、実に皮肉めいている。 僕はこの間、グーグルがどうやってユーザーデータを集めているかについて書いた記事を掲載した(前編、後編)。今回は、著名なソーシャルメディアサイトが、ユーザーデータを活用する上でどのようにアルゴリズムを用いているのか、白日の下にさらそう。 ソーシャルメディアを成り立たせているのは人間の力だが、ユーザーが入力したデータを利用できる状態にする仕組みは、アルゴリズムによって作られている。現在活動している無数のソーシャルメディアサイトで実証済みのことだが、ユーザーの関与とアルゴリズムによる処理ルールの上手いバランスを見出すことは、とても難しくなりがちだ。これから紹介するアルゴリズムは、悪意のないユーザーと結びついて初めてうまくいくものだ。 人気ソーシャル

    著名ソーシャルメディアが使っているアルゴリズムを大公開! | Moz - SEOとインバウンドマーケティングの実践情報
  • カイ二乗値で単語間の関連の強さを調べる

    カイ二乗値で単語間の関連の強さを調べる 2007-09-19-1 [Algorithm][Programming] カイ2乗値を使って単語間の関連度を調べる方法。 つまり、関連語を探すときに、χ二乗値を関連度として使う。 perl によるサンプルコード (chiword.pl)。昔、勉強がてら作ったコード。 #!/usr/bin/perl use strict; use warnings; my %cnt; my $pair_num; while (<>) { chomp; next if /^\s*$/; my @list = sort split(/,/, $_); for (my $i = 0; $i < @list; $i++) { for (my $j = $i + 1; $j < @list; $j++) { next if $list[$i] eq $list[$j]; $c

    カイ二乗値で単語間の関連の強さを調べる
  • リコメンドの裏側 : LINE Corporation ディレクターブログ

    『livedoor グルメ』の根岸です。今日はlivedoor グルメにも実装されている「リコメンド(=お勧め)」機能の話です。 マクドナルドの「ご一緒にポテトもいかがですか?」という店員の接客コメントは、誰もが知っている典型的な決まり文句ですよね。でも、誰にでもポテトをオススメするのは、芸がない。「俺はイモが嫌いなんだ!」っていう人だって絶対にいます。 インターネットでOne-to-Oneマーケティングの時代になると、ユーザーの動向を分析し、各ユーザーごとに興味を持ちそうな商品を予想して、お勧めするようになりました。たとえば、『Amazon』にログインして「マイストア」を選ぶと、それまでの購買履歴をもとにお勧め商品がリストアップされます。 僕のマイストアだと、 『笑う大天使(ミカエル)』 『ウォーターボーイズ』 『リンダリンダリンダ』 などのDVDが、リストアップされています。上記はいず

    リコメンドの裏側 : LINE Corporation ディレクターブログ
    kaz_goto
    kaz_goto 2007/08/28
    協調フィルタリング
  • 本棚演算

    「増井の棚」と「svslabの棚」は似ているにもかかわらず 「アカギ」「掌の中の小鳥」は「svslabの棚」に含まれていないため、 これらのは「svslab」への推薦候補と考えることができる。 このような計算を棚行列の行や列に対して行なうことにより、 様々な有用な情報を取得することができる。 棚演算のプログラミング 棚データを扱うRubyライブラリを使って様々な棚演算を実行できる。 増井への推薦を計算 「増井の棚」に含まれるの傾向を判断して推薦を行なう演算を考える。 「増井の棚」に内容が近い棚の中には、 私が興味を持ちそうなが含まれている可能性が高いと思われるので、 まず「増井の棚」に近い棚のリストを計算してみる。 require 'enzan' # 「増井の棚」に近いを持つ棚のリストを取得 BookList.new('増井').similar.dum

    kaz_goto
    kaz_goto 2007/06/29
    強調フィルタリング?
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 こんなことやって意味あるのかどうか正直言って迷いました。プログラマはたいてい知っているような内容だし見る人もいないんじゃないかと思いましたが、これからプログラミングを始めてみようという方にとっては参考になるかもしれないし、何よりも自分にとって頭の中を整理できたりするので、これから定期的にやっていこうかと考えてます。 ところで、紹介する内容はほとんど過去に出版された書物関係から抜粋しています。一応下の方に参考文献として挙げておきますので興味を持たれた方は書店などで探してみてはいかがでしょうか? ということで、まずはライン・ルーチン(画面に直線を描画する)についての紹介です。

    kaz_goto
    kaz_goto 2006/01/09
    基礎的なアルゴリズムの紹介
  • 1