2017-06-07 3 views
0

Ich arbeite an einem Projekt, um die Nationalität der Person basierend auf der Art zu identifizieren, in der sie auf Englisch kommunizieren. Ich habe 10 Nationalitäten & 1000 Dateien, 100 für jede Nationalität. Ich benutze N-Gramme als Funktionen & auf der Suche nach meinem Ansatz zu validieren. Meine Datenstruktur haben würde, verschiedene n-Gramm (Zeichen n-Gramm, Bi-Gramm, die als Spalten) als Merkmale & Nationalität als Etiketten (als Zeilen) Meine Schritte sind:Wie N-Gramme für Multi-Label-Klassifizierung verwenden?

  1. Pick-up alle Dateien für einen bestimmten Nationalität (FEIN). 1.1. Kombinieren Sie sie zu einem Textkorpus (z. B. 100 Dateien zu einer großen Datei kombinieren). Ich dachte ursprünglich, dass ich eine Datei zu einer Zeit & die Zahl der N-Gramme basierend auf ihrem Vorkommen aktualisieren sollte. Aber dann müsste ich für jedes neue N-Gramm nachsehen, ob es schon passiert ist & und dann seine Häufigkeit für ein bestimmtes Label aktualisieren. Wäre das ein besserer Ansatz?
  2. Extrakt Bi-Gramm/Tri-Gramm & erhalten Häufigkeit von jedem Gramm. (NLTK hat FreqDist, die für jede Zählung gibt)
  3. Speichern Sie diese Informationen, also würde ich es verwenden, um mein Testset zu klassifizieren. (Wie speichere ich diese Informationen. Weitere Informationen Unten)

Frage ist, soll ich speichere die n-gram & Frequenzinformation in einer Matrix (eine einzelne Matrix alle n-Gramm & Etikett oder separate Matrix für jedes Etikett aufweist,) oder sollte ich es als eine Karte (eine Karte für jedes Etikett, mit N-Gram & seine Häufigkeitszählung) speichern. Ich hätte gerne eine Datenstruktur (zum Speichern der extrahierten Informationen), die für Klassifizierer leicht als Eingabe & verarbeitet werden könnte. Ich kann nicht vorhersehen, welche Datenstruktur eine bessere Option wäre.

Antwort

1

1) sollte es egal sein. Wenn Sie eine Möglichkeit haben, es separat auszuführen und dann zusammenzuführen, wird es hilfreich sein, wenn Sie in Zukunft auf ein verteiltes System skalieren möchten (das wird üblicherweise Map-Reduced-Ansatz genannt).

2) ok.

3) N-Gram- und Frequenzzählungen sind normalerweise für die Merkmalsklassifizierung nicht geeignet. Sie möchten wahrscheinlich separate Matrizen/Karten für jedes Etikett haben und dann etwas wie TF-IDF (https://en.wikipedia.org/wiki/Tf%E2%80%93idf) verwenden, um N-Gramme zu identifizieren, die für ein bestimmtes Etikett charakteristisch sind.

4) Wenn es um Klassifizierung geht, würden Sie dann einen Vektor mit fester Länge erstellen, in dem Sie eine Teilmenge der im vorherigen Schritt für jedes Etikett identifizierten NGRs auswählen und diese dann für Training und Klassifizierung verwenden. Sie würden wahrscheinlich auch eine Art Normalisierung für die Zählungen benötigen.

Verwandte Themen