Ich habe eine CSV-Datei mit folgendem Format:Wie kann ich eine TF-IDF für die Textklassifikation mit Spark erstellen?
product_id1,product_title1
product_id2,product_title2
product_id3,product_title3
product_id4,product_title4
product_id5,product_title5
[...]
Die product_idX ist eine ganze Zahl und die product_titleX ist ein String, Beispiel:
453478692, Apple iPhone 4 8Go
Ich versuche, den TF-IDF zu erstellen aus meiner Datei, damit ich sie für einen Naive Bayes Classifier in MLlib verwenden kann.
Ich benutze bisher Spark für Scala und benutze die Tutorials, die ich auf der offiziellen Seite und dem Berkley AmpCamp 3 und 4 gefunden habe.
So lese ich die Datei:
val file = sc.textFile("offers.csv")
Dann Mapping ich es in Tupeln RDD[Array[String]]
val tuples = file.map(line => line.split(",")).cache
und nachdem ich die Umwandlung der Tupel in Paare RDD[(Int, String)]
val pairs = tuples.(line => (line(0),line(1)))
Aber ich stecke hier fest und ich weiß nicht, wie man den Vector her schafft m es, um es in TFIDF umzuwandeln.
Dank
Wenn ich Ihr Problem gut verstehe, kann jedes Produkt mehrere Male vorhanden sein. Diese Anzahl von jedem Produkt ist Ihre Häufigkeit (TF), ich verstehe nicht, was die IDF in Ihrem Fall wäre. Können Sie das bitte näher ausführen? – fxm
tf-idf, kurz für Begriff Häufigkeit-inverse Dokumenthäufigkeit, ist eine numerische Statistik, die widerspiegeln soll, wie wichtig ein Wort für ein Dokument in einer Sammlung oder einem Korpus ist. Es wird oft als Gewichtungsfaktor beim Information Retrieval und Text Mining verwendet. – eliasah
Was ich nicht verstehe ist, dass ich in Ihrem Beispiel keine Erwähnung von * Sammlung oder Korpus * sehe. – fxm