なんかメモ

いろいろメモ

pythonで文字列の類似度計算

文字列の類似度のアルゴリズムを調べた時のメモ

TF-IDF コサイン類似度

TF-IDFで重み付けをしたベクトル同士の内積をとり、角度の近さから類似度を測る

  • TF(単語の出現頻度)n/N n=文書内でのある単語の出現回数 N=文書内の全単語数
  • IDF(逆文書頻度) log(D/d) D=文書数 d=ある単語が出てくる文書数
  • TF-IDF TF * IDF

Jaccard係数(重み付き)

共通要素の割合

レーベンシュタイン距離

置換、挿入、削除を使って一つの文字列を別の文字列に変形するのに必要な手順の最小回数

Soundex

発音をある数値コードにマップするアルゴリズム
数値化した後はレーベンシュタイン距離等で類似度を測る

Soundexの手順

  1. 文字列を大文字化
  2. 先頭の文字を保存
  3. 先頭の文字を抜いた文字列から[HW]を削除
  4. 発音が似た文字に同じ数値を与えグループ化
  5. 同じ数値が連続した場合一つにまとめる
  6. 先頭の数値を2.で保存した文字と入れ替える
  7. 0を削除する
  8. 変換した文字列を4文字になるように詰める、足りない場合は0を追加する

コード

文字列の類似度の計算

参考リンク

Python,NLTKで自然言語処理 - haya14busa

集合とかベクトルの類似度の計算のメモ - 唯物是真 @Scaled_Wurm

編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー

http://blog.takuti.me/2014/01/tf-idf/

Jazzyに勝るものはありません