Voglio calcolare tf-idf dai documenti sottostanti. Sto usando Python e Panda.Qual è il modo più semplice per ottenere tfidf con dataframe panda?
import pandas as pd
df = pd.DataFrame({'docId': [1,2,3],
'sent': ['This is the first sentence','This is the second sentence', 'This is the third sentence']})
In primo luogo, ho pensato che avrei bisogno di ottenere word_count per ogni riga. Così ho scritto una semplice funzione:
def word_count(sent):
word2cnt = dict()
for word in sent.split():
if word in word2cnt: word2cnt[word] += 1
else: word2cnt[word] = 1
return word2cnt
E poi l'ho applicato a ogni riga.
df['word_count'] = df['sent'].apply(word_count)
Ma ora mi sono perso. So che c'è un metodo semplice per calcolare tf-idf se uso Graphlab, ma voglio rimanere con un'opzione open source. Sia Sklearn che Gensim sembrano travolgenti. Qual è la soluzione più semplice per ottenere tf-idf?
Diciamo che ho passato da 100 a 'parametro max_features' e il vocabolario originale del corpus è 1000. Come ottengo i nomi delle funzionalità selezionate e le associamo alla matrice prodotta? –
'v.get_feature_names()' ti darà l'elenco dei nomi delle funzionalità. 'v.vocabulary_' ti darà un' dict' con i nomi delle feature come chiavi e il loro indice nella matrice prodotta come valori. – arthur
ja, ma attenzione alla stampa di feature_names(). se il numero di funzionalità aumenta, avrai problemi di memoria. –