Gibt es Best Practices, um Features für die textbasierte Klassifizierung vorzubereiten?

8

Wir haben viele Rückmeldungen und Berichte von Kunden. Und sie sind einfache Texte. Wir versuchen, einen automatischen Klassifizierer für diese Dokumente zu erstellen, damit zukünftige Feedback / Probleme automatisch an das richtige Support-Team weitergeleitet werden können. Ich denke, neben dem eigentlichen Text sollten wir auch Dinge wie das Kundenprofil, die Region für die Einreichung von Fällen usw. in den Klassifikator einbeziehen. Ich denke, das könnte mehr Hinweise für den Klassifikator liefern, um bessere Vorhersagen zu treffen.

Derzeit basieren alle für das Training ausgewählten Funktionen auf dem Textinhalt. Wie kann man die oben genannten Meta-Funktionen einbinden?

(Übrigens bin ich neu. Entschuldigen Sie, wenn diese Frage eine triviale ist.)

ADD 1

Mein aktueller Ansatz besteht darin, zuerst eine typische Vorverarbeitung des Rohtextes (einschließlich Titel und Text) vorzunehmen, z. B. Entfernen der Stoppwörter, POS-Tagging und Extrahieren signifikanter Wörter. Dann konvertiere ich den Titel und den Körper in eine Liste von Wörtern und speichere sie in einem spärlichen Format wie folgt:

  

Instanz 1: Wort1: Wort1 zählen, Wort2: Wort2 zählen, ....

     

Instanz 2: WortX: Wort1 zählen, WortY: Wort2 zählen, ....

Und für die anderen Nicht-Text-Features plane ich, sie als neue Spalten hinter den Wortspalten hinzuzufügen. So wird eine letzte Instanz aussehen:

  

Instanz 1: word1: word1 count, ..., Merkmal X: Wert, Merkmal Y: Wert

    
smwikipedia 28.02.2014, 05:57
quelle

2 Antworten

5
  1. Wenn die Kundenprofildaten einen binären Wert haben (z. B. Geschlecht des Kunden), kann das Merkmal als 0,1 definiert werden, wobei 0 männlich, 1 weiblich darstellen. wenn die Funktion mehrere Werte hat, wie die Submit-Region (angenommen, wir haben hier fünf Regionen). wir sollten es als einen Merkmalsvektor mit fünf Dimensionen wie [0 0 1 0 0] entwerfen, jede Dimension aus dem Vektor gibt an, ob dieser Beitrag aus dieser spezifischen Region stammt. Dieser Weg ist in der Praxis besser, anstatt ein Feature mit mehreren Werten zu verwenden, wenn man eine Klassifizierer wie die logistische Regression verwendet.

  2. Sie verwenden eine Funktion, die "Tasche der Wörter" genannt wird. Da ein Beutel mit Worten das Wort des Wortes im Dokument ist, sollte ein Wort mit einem höheren tf wichtiger sein als ein Wort mit einem niedrigeren tf. Ich denke es ist nicht. in der Praxis zeigen tf * idf eine bessere Leistung.

    idf (inverse Dokumenthäufigkeit) ist eine Möglichkeit abzuschätzen, wie wichtig das Wort ist, Normalerweise ist die Dokumenthäufigkeit (df) ein guter Weg, abzuschätzen, wie wichtig ein Wort in der Klassifikation ist, denn wenn ein Wort in weniger Dokument erscheint (nba taucht immer in Dokumenten auf, die zum Sport gehören), zeigt es eine bessere Beschreibung, also ist idf positiv korreliert um die Bedeutung des Wortes.

michaeltang 04.03.2014 05:37
quelle
4

Verknüpfen Sie einfach neue Funktionen mit dem Vektor, um alles andere darzustellen, was Sie für wichtig halten. Kategoriale Variablen (diejenigen, die "a" oder "b" oder "c" sind) können in n binäre Merkmale für eine n-Wege-Variable umgewandelt werden. Binäre oder kontinuierliche können gelassen werden wie sie sind.

Dann müssen Sie nur noch Ihre Features standardisieren, um sicherzustellen, dass einige nicht mehr gewichtet werden als andere und sie einem Klassifikator zugeführt werden. Ein diskriminierendes Modell wäre am besten geeignet, da Sie eine Menge potentiell korrelierter Merkmale hinzufügen würden: Logistische Regression oder eine SVM würden wahrscheinlich gut funktionieren.

    
Ben Allison 07.03.2014 10:03
quelle