import numpy as np
import scipy.sparse as sp
from pprint import pprint
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
newsgroups_train = fetch_20newsgroups(subset='train',remove=('headers', 'footers', 'quotes'))
newsgroups_train.filenames
newsgroups_train.filenames.shape
print newsgroups_train.filenames[0]
print newsgroups_train.data[0]
print newsgroups_train.target[0]
print newsgroups_train.target_names[7]
print newsgroups_train.target_names
corpus = newsgroups_train.data
len(corpus)
vectoriseur = CountVectorizer()
vectoriseur.fit(corpus)
indice = vectoriseur.vocabulary_
indice['car']
terme = vectoriseur.get_feature_names()
terme[25775]
texte = [corpus[0]]
print texte
vect = vectoriseur.transform(texte)
print vect
vue = sp.find(vect)
print vue
Trouvez à partir du vecteur vue :
X_comptage = vectoriseur.transform(corpus)
print X_comptage
X est une matrice creuse contenant 11314 lignes, chaque ligne correspondant à un vecteur texte
transformeur = TfidfTransformer(norm=None, smooth_idf=False)
transformeur.fit(X_comptage)
idf = transformeur.idf_
print idf
vecteur_comptage = X_comptage[0,:]
vecteur_tfidf = transformeur.transform(vecteur_comptage)
print vecteur_tfidf
np.linalg.norm(vecteur_tfidf.toarray())
X = transformeur.transform(X_comptage)
print X[0]
def prod(x,y):
return x.dot(y.T).toarray()[0][0]
def sim(x,y):
num = prod(x,y)
den1 = np.sqrt(prod(x,x))
den2 = np.sqrt(prod(y,y))
return num / (den1 * den2)
sim(X[0,:],X[1,:])