Welche Art von Funktionen werden Sie versuchen, aus der Liste der Wörter für zukünftige Vorhersagen zu extrahieren? Ist es ein vorhandenes Wort oder nur ein Durcheinander von Zeichen?
Es gibt Beschreibung der Aufgabe , die ich fand es .
Sie müssen ein Programm schreiben, das antworten kann, ob ein bestimmtes Wort Englisch ist. Dies wäre einfach - Sie müssten nur das Wort im Wörterbuch nachschlagen -, aber es gibt eine wichtige Einschränkung: Ihr Programm darf nicht größer als 64 KB sein.
Daher dachte ich, es wäre möglich, die logistische Regression zur Lösung des Problems zu verwenden. Ich habe nicht viel Erfahrung mit Data Mining, aber die Aufgabe ist für mich interessant.
Vielen Dank.
machine-learning
nlp
text-mining
algorithms
Vitalii Mishchenko
quelle
quelle
Antworten:
Während der NLP- und Textanalyse können verschiedene Arten von Funktionen aus einem Wortdokument extrahiert werden, um sie für die Vorhersagemodellierung zu verwenden. Dazu gehören die folgenden.
ngrams
Nehmen Sie eine zufällige Auswahl von Wörtern aus words.txt . Extrahieren Sie für jedes Wort in der Stichprobe jedes mögliche Bi-Gramm Buchstaben. Zum Beispiel besteht die Wortstärke aus diesen Bi-Gramm: { st , tr , re , en , ng , gt , th }. Gruppieren Sie nach Bi-Gramm und berechnen Sie die Häufigkeit jedes Bi-Gramms in Ihrem Korpus. Machen Sie jetzt dasselbe für Tri-Gramm, ... bis hin zu n-Gramm. An diesem Punkt haben Sie eine ungefähre Vorstellung von der Häufigkeitsverteilung, wie römische Buchstaben zu englischen Wörtern kombiniert werden.
ngram + Wortgrenzen
Um eine ordnungsgemäße Analyse durchzuführen, sollten Sie wahrscheinlich Tags erstellen, die n-Gramm am Anfang und Ende eines Wortes angeben ( Hund -> { ^ d , do , og , g ^ }). Auf diese Weise können Sie phonologisch / orthografisch erfassen Einschränkungen, die sonst möglicherweise übersehen würden (z. B. kann die Sequenz ng niemals am Anfang eines englischen Muttersprachlers auftreten, daher ist die Sequenz ^ ng nicht zulässig - einer der Gründe, warum vietnamesische Namen wie Nguyễn für englischsprachige Personen schwer auszusprechen sind). .
Nennen Sie diese Grammsammlung das word_set . Wenn Sie die Sortierung nach Häufigkeit umkehren, stehen Ihre häufigsten Gramme ganz oben auf der Liste - diese spiegeln die häufigsten Sequenzen in englischen Wörtern wider. Unten zeige ich einen (hässlichen) Code mit dem Paket {ngram} , um den Buchstaben ngrams aus Wörtern zu extrahieren und dann die Grammfrequenzen zu berechnen:
Ihr Programm nimmt nur eine eingehende Zeichenfolge als Eingabe, teilt sie wie zuvor beschrieben in Gramm auf und vergleicht sie mit der Liste der Top-Gramm. Natürlich müssen Sie Ihre Top- N-Picks reduzieren , um die Anforderungen an die Programmgröße zu erfüllen .
Konsonanten & Vokale
Ein weiteres mögliches Merkmal oder ein möglicher Ansatz wäre die Betrachtung von Konsonantenvokalsequenzen. Konvertieren Sie grundsätzlich alle Wörter in Konsonanten-Vokalzeichenfolgen (z. B. Pfannkuchen -> CVCCVCV ) und folgen Sie der zuvor beschriebenen Strategie. Dieses Programm könnte wahrscheinlich viel kleiner sein, würde aber unter Genauigkeit leiden, da es Telefone in Einheiten höherer Ordnung abstrahiert.
nchar
Ein weiteres nützliches Merkmal ist die Länge der Zeichenfolge, da die Möglichkeit für legitime englische Wörter mit zunehmender Anzahl von Zeichen abnimmt.
Fehleranalyse
Die Art der Fehler, die von diesem Maschinentyp erzeugt werden, sollten unsinnige Wörter sein - Wörter, die so aussehen, als wären sie englische Wörter, die es aber nicht sind (z. B. würde ghjrtg korrekt zurückgewiesen (wahres Negativ), aber barkle würde fälschlicherweise als englisches Wort klassifiziert (falsch positiv)).
Interessanterweise würden Zyzzyvas fälschlicherweise abgelehnt (falsch negativ), da Zyzzyvas ein echtes englisches Wort ist (zumindest laut words.txt ), aber seine Grammsequenzen sind äußerst selten und tragen daher wahrscheinlich nicht viel Diskriminierungskraft bei.
quelle