文字列の距離 仕事で文字列の類似度を計算する必要があったのでちょっとだけ頑張ってみた。 要件として、2つの文字列が与えられ、その類似度を実数与える、類似度は0から1の間に収まる、である。 Cosine Similarity まず、最初に類似度と聞いて思い浮かべたのは余弦である。 文字列を何らかのベクトルで表して、そのベクトルがなす角の余弦を計算すれば類似度が計算できる。 文字列のベクトルとして、比較する文字で使われている文字からなるベクトルを採用した。 例えば、docとcatを比較するならばベクトルは[a, c, d, o, t]とする。 使われている成分は1を、使われていない成分を0とするとdocは[0, 1, 1, 1, 0]、catは[1, 1, 0, 0, 1]となる。 あとはこのベクトルのなす角(5次元空間!)の余弦を計算すればよい。 import math import ope