Ho un file CSV con il seguente formato:Come posso creare un TF-IDF per la classificazione del testo utilizzando Spark?
product_id1,product_title1
product_id2,product_title2
product_id3,product_title3
product_id4,product_title4
product_id5,product_title5
[...]
Il product_idX è un intero e l'product_titleX è una stringa, ad esempio:
453478692, Apple iPhone 4 8Go
Sto cercando di creare il TF-IDF dal mio file quindi posso usarlo per un classificatore Naive Bayes in MLlib.
Sto utilizzando Spark per Scala finora e utilizzando i tutorial che ho trovato sulla pagina ufficiale e il Berkley AmpCamp 3 e 4.
Così sto leggendo il file:
val file = sc.textFile("offers.csv")
Poi ho mappatura in tuple RDD[Array[String]]
val tuples = file.map(line => line.split(",")).cache
e dopo sto trasformando le tuple in coppie RDD[(Int, String)]
val pairs = tuples.(line => (line(0),line(1)))
Ma io sono bloccato qui e non so come creare il Vector fro m per trasformarlo in TFIDF.
Grazie
Se capisco bene il problema, ogni prodotto può essere presente più volte. Questo numero di occorrenza di ciascun prodotto è la frequenza (TF), non riesco a capire quale sarebbe l'IDF nel tuo caso. Potresti per favore approfondire su questo? – fxm
tf-idf, abbreviazione di frequenza di documento inversa frequenza-frequenza, è una statistica numerica che intende riflettere quanto è importante una parola per un documento in una raccolta o un corpus. Viene spesso utilizzato come fattore di ponderazione nel recupero delle informazioni e nel text mining. – eliasah
Quello che non capisco è che nel tuo esempio, non vedo alcuna menzione di * collezione o corpus *. – fxm