Pure Python で 2 つのテキスト文字列のコサイン類似度を計算するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-30 08:05:02
オリジナル
840 人が閲覧しました

How to Calculate Cosine Similarity of Two Text Strings in Pure Python?

外部ライブラリを使用せずに 2 つのテキスト文字列のコサイン類似度を計算する方法

テキスト分析では、コサイン類似度は 2 つのテキスト文字列間の類似性の尺度です。共通の語彙に基づいたテキスト。外部ライブラリを使用してこの尺度を計算できますが、単純な純粋な Python 関数を実装することもできます。

<code class="python">import math
import re
from collections import Counter

WORD = re.compile(r"\w+")

def get_cosine(vec1, vec2):
    intersection = set(vec1.keys()) & set(vec2.keys())
    numerator = sum([vec1[x] * vec2[x] for x in intersection])

    sum1 = sum([vec1[x] ** 2 for x in list(vec1.keys())])
    sum2 = sum([vec2[x] ** 2 for x in list(vec2.keys())])
    denominator = math.sqrt(sum1) * math.sqrt(sum2)

    if not denominator:
        return 0.0
    else:
        return float(numerator) / denominator

def text_to_vector(text):
    words = WORD.findall(text)
    return Counter(words)</code>
ログイン後にコピー

この関数は 2 つのベクトル vec1 と vec2 を入力として受け取り、それらのコサイン類似度を計算します。これを使用して 2 つのテキスト文字列 text1 と text2 を比較する方法は次のとおりです。

<code class="python">text1 = "This is a foo bar sentence ."
text2 = "This sentence is similar to a foo bar sentence ."

vector1 = text_to_vector(text1)
vector2 = text_to_vector(text2)

cosine = get_cosine(vector1, vector2)

print("Cosine:", cosine)</code>
ログイン後にコピー

出力:

Cosine: 0.861640436855
ログイン後にコピー

これは、2 つのテキスト文字列が非常に類似していることを示します。

以上がPure Python で 2 つのテキスト文字列のコサイン類似度を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!