我正在嘗試構建一個算法,能夠根據我喜歡的以前的文章來預測我是否會喜歡一篇文章。用scikit-learn預測有趣的文章
例子:
- 我讀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篇),比自己大一個
我不知道你是否明白我的觀點,但在第一種情況下,大矢量中90%的單詞不在小單詞中。
所以我的問題是:如何計算餘弦相似度?你看到我的項目更好的方法嗎?
謝謝你,這是一個答案。現在我只需要與python建立聯繫。當你談論一個詞的概率時,它是「真正的」概率,還是我可以使用tf-idf?如果是tf-idf,很容易得到p(wordn | like)的概率。 – Rififi 2014-10-19 09:07:57
沒有tf-idf,每個文檔中的每個單詞都計爲1;用tf-idf,文件中的單詞被計爲TF-IDF的權重。然後你使用相同的公式得到樸素貝葉斯的概率。 – greeness 2014-10-19 09:32:36