テキスト間のコサイン類似度を計算する
コサイン類似度はテキストベクトル間の角度を測り、意味的な類似度を示します。検索、クラスタリング、レコメンデーションに使われます。
- 1
コサイン類似度 = dot(A, B) / (|A| × |B|)。A と B は単語頻度(または TF-IDF)ベクトルです。値は 0(共通項目なし)から 1(同一方向)までの範囲をとります。ユークリッド距離と異なり文書長の影響を受けません。単語の割合が同じで長さが異なる 2 つの文書の類似度は 1 になります。テキストをベクトル(TF または TF-IDF)に変換してからコサインを計算します。
- 2 ワードカウント →
各テキストを単語頻度ベクトルに変換します。語彙は両テキストの全単語の和集合です。各テキストは単語カウントのベクトルになります。より良い結果を得るには生のカウントではなく TF-IDF 重みを使ってください。TF-IDF はありふれた単語の重みを下げます。
- 3 文字出現頻度統計 →
文字レベルの類似度(コード、DNA、非テキストに有用)には、単語ベクトルの代わりに文字頻度ベクトルを使います。これにより、より細かいパターンを捉えられ、単語境界のないテキスト(CJK 言語)にも対応できます。
よくある質問
- コサイン類似度はいつ使うべきですか?
- 文書長を問題にしないテキスト比較に使います。検索の関連性(クエリと文書)、文書クラスタリング、重複検出、レコメンドシステムなどです。テキストベクトルの標準的な類似度指標です。長さが重要なタスク(剽窃検出)には他の指標を使ってください。
- コサインと Jaccard とユークリッドの違いは?
- コサインはベクトル間の角度(長さ不変)で、テキストに最適です。Jaccard は集合の積集合/和集合で、存在/不在のバイナリデータに最適です。ユークリッドは直線距離で、長さに敏感です。テキストにはコサイン、集合には Jaccard、空間データにはユークリッドが標準です。
このタスクを解決するワークフロー
SQL フォーマットと単語統計によるドキュメント化
SQL クエリを整形し、その後フォーマットされた出力を単語統計で分析する。 パイプライン
Lorem Ipsum 生成と単語カウント
Lorem Ipsum テキストを生成し、その後単語をカウントする。 パイプライン
テキストのクリーンアップ後の単語統計分析
テキストをトリムして正規化し、その後単語/文字/行統計を計算する。 パイプライン
行の重複除去と単語カウント
行をソートして重複を除去し、その後残りの単語をカウントして簡単な在庫を得る。 パイプライン
テキストの小文字化と単語カウント
テキストのケースを正規化し、その後分析のために単語をカウントする。 パイプライン
URL 除去と単語カウント
テキストから URL を除去し、その後残りの単語をカウントする。 パイプライン
Title Case と単語カウント
Title Case に変換し、その後単語をカウントする。 パイプライン
テキストの折り返しと単語カウント
長いテキストを折り返し、その後結果の単語をカウントする。 パイプライン
関連ツール
ワードカウント
Count characters, words, lines, sentences, paragraphs, byte size, and estimate reading time。無料、プライベート、100%クライアントサイド。 ツール
文字出現頻度統計
Count character or word frequency in text。無料、プライベート、100%クライアントサイド。 ツール
テキスト差分比較ツール
Compare two text blocks line by line using the LCS algorithm. Supports ignoring whitespace and case。無料、プライベート、100%クライアントサイド。 ツール