以前に気に入った記事に基づいて、その記事が気に入るかどうかを予測できるアルゴリズムを構築しようとしています。
例:
- 私は 50 件の記事を読み、10 件の記事を気に入りました。気に入ったとプログラムに伝えます。
- それから20の新しい記事が来ています。私のプログラムは、私が以前に気に入った 10 件に基づいて、新しい記事ごとに「いいねの割合」を提供する必要があります。
ここでリードを見つけました: Python: tf-idf-cosine: to find document similarity
>>> from sklearn.feature_extraction.text import TfidfVectorizer
>>> from sklearn.datasets import fetch_20newsgroups
>>> twenty = fetch_20newsgroups()
>>> tfidf = TfidfVectorizer().fit_transform(twenty.data)
次に、データセットの最初のドキュメントをデータセット内の他のドキュメントと比較します。
>>> from sklearn.metrics.pairwise import linear_kernel
>>> cosine_similarities = linear_kernel(tfidf[0:1], tfidf).flatten()
>>> cosine_similarities
array([ 1. , 0.04405952, 0.11016969, ..., 0.04433602,
0.04457106, 0.03293218])
私の場合、10 個の記事のテキストを連結し、TfidfVectorizer を実行してから、新しい大きなベクトルを新しい記事ごとに比較します。
しかし、比較はどのように行われるのだろうか:
- 小さなベクトルと比較した大きなベクトル (10 記事) OR
- 大きいものに比べて小さいもの
あなたが私の主張を理解しているかどうかはわかりませんが、最初のケースでは、大きなベクトルの単語の 90% は小さなベクトルには含まれません。
私の質問は次のとおりです。コサイン類似度はどのように計算されますか? 私のプロジェクトのためのより良いアプローチが見えますか?