Python-Dateiformat für E-Mail-Klassifizierung mit svm-light

Ich arbeite mit E-Mail-Thema, also habe ich 20 E-Mails, die ich klassifizieren möchte, und eine Datei mit 20 Zeilen – eine Zeile hat eine E-Mail-Betreff. Ich habe daran gearbeitet, aber ich kann nicht herausfinden, was die Features beziehen Und das Format der Eingabedatei für svmlight. Alle Tipps, die weitergehen sollen, sind hilfreich. Danke im Voraus!

Edit: Ich habe die tf-idf der ersten 500 Betreffzeilen als Prozeß genommen. Allerdings benötigen wir nach svm-light-Format:

  • Wie man einen tkinter Eintrag Standardwert dauerhaft macht
  • Wie liest man Daten in csv-Datei und druckt bestimmte?
  • Auf Wiederholung prüfen (Python)
  • Verwenden von% r mit input () in python 3
  • Wie man Maus und Tastatur Inaktivität in Linux zu erkennen
  • Holen Sie sich die Amplitude zu einer bestimmten Zeit in einer Sound-Datei?
  • <line> .=. <target> <feature>:<value> <feature>:<value> ... <feature>:<value> # <info> 

    Ich habe nur die tf-idf Features für 500 Zeilen. Leider ist das nicht von der svm-light gelesen, da es Features / Wert-Paar braucht. Irgendwelche Ideen auf dem, was der Wert sein könnte oder wie kann ich die Datei ändern, um gelesen zu werden?

    Eine Idee der Datei habe ich (erste 5 E-Mail-Features):

     1 201 1.0 2 280 0.123165672613 2 313 0.343915400191 2 515 0.157569797284 2 588 0.343915400191 2 652 0.343915400191 2 657 0.343915400191 2 774 0.23622904941 2 921 0.283118375032 2 1158 0.254849368195 2 1240 0.343915400191 2 1348 0.343915400191 2 1362 0.222321349873 3 57 0.342220321154 3 185 0.391349077827 3 244 0.391349077827 3 300 0.391349077827 3 693 0.391349077827 3 730 0.342220321154 3 1391 0.391349077827 4 57 0.342220321154 4 185 0.391349077827 4 244 0.391349077827 4 300 0.391349077827 4 693 0.391349077827 4 730 0.342220321154 4 1391 0.391349077827 5 32 0.323558487577 5 102 0.323558487577 5 157 0.364177022553 5 160 0.364177022553 5 718 0.151013895297 5 1171 0.364177022553 5 1277 0.323558487577 5 1308 0.364177022553 5 1336 0.364177022553 

    Bitte helfen Sie!

  • Flatten (eine unregelmäßige) Liste der Listen
  • One Solution collect form web for “Python-Dateiformat für E-Mail-Klassifizierung mit svm-light”

    Wenn du ein Feature aus jedem Wort herausbringst, erstelle eine Liste aller eindeutigen Wörter w (1) .. w (n) . Jetzt Feature (i) bekommt den Wert 1, wenn w (i) existiert in der Probe, die Sie untersuchen. (Du könntest auch den Wert gleich der Anzahl der Vorkommnisse machen, so dass ein Merkmal, das mehrmals auftritt, mehr Gewicht erhält.)

    Angenommen, die folgenden Proben;

     1 My hovercraft is full of eels 2 Your account is suspended 3 This is it! 

    … Sie konnten das folgende Wörterbuch extrahieren

     001 My 002 hovercraft 003 is : : 009 suspended 010 This 011 it! 

    (Die führenden Nullen sind nur, um die Features anders aussehen als die anderen Zahlen in dieser Ausstellung. Normalerweise sollte es wohl keine führenden Nullen geben.)

    Die Merkmale für Probe 1 sind 001 bis 006; Für Probe 3 sind sie 010, 003 und 011. Die anderen Features erhalten den Wert 0. So würde die volle Darstellung von Beispiel 3 aussehen

     3 001:0 002:0 003:1 004:0 005:0 ... 

    (Obwohl ich glaube nicht, dass Sie die Null, dh fehlende Features angeben müssen).

    Allerdings, angesichts der kleinen Stichprobengröße (nur Themen), ist es unwahrscheinlich, dass Sie sehr gute Ergebnisse erhalten. Vielleicht wärst du es besser, zB mit Bigram- oder Trigramm-Features zu spielen (jedes Wort mit einem Schiebefenster, Tri , Rig , Migr , Gra , Ram ) zu teilen .

    Ich glaube nicht, dass es sinnvoll ist, zu versuchen, tf-idf mit SVM zu mischen, sie sind unterschiedliche Ansätze zu demselben Grundproblem.

    Python ist die beste Programmiersprache der Welt.