Da dies ein Adventskalender-Artikel ist, der den Namen des Unternehmens entlehnt, werden wir uns mit dem Material befassen, das sich auf das Unternehmen bezieht.
Livesense betreibt eine Jobwechselkonferenz, eine Website, auf der die Reputationsprüfungen von Unternehmen durch Jobwechsler und tägliche Bewertungen von Unternehmen veröffentlicht werden.
Bisher wurden beim Jobwechsel-Meeting die Textdaten der Mundpropaganda und die aus 5 Stufen bestehenden Score-Daten als separate Daten erfasst. Bei der kürzlich erfolgten Erneuerung können jedoch die Score- und Textdaten gleichzeitig veröffentlicht werden, wodurch die Mundpropaganda leichter lesbar wird Es ist jetzt möglich, bereitzustellen.
Bewertungen vor der Erneuerung veröffentlicht | Bewertungen nach der Erneuerung veröffentlicht |
---|---|
<img src="https://qiita-image-store.s3.amazonaws.com/0/7307/680fd65f-5b4f-6919-0ab7-b53163d3d0eb.png "before.png " width="400"> |
Obwohl neu veröffentlichte Bewertungen aufgrund ihrer Punktzahl leichter zu lesen sind, enthält die große Anzahl der in der Vergangenheit gesammelten Beiträge natürlich keine fünfstufigen Bewertungsdaten, und es ist nicht möglich, ein Gesichtssymbol so anzuzeigen, wie es ist.
Wenn dieses Problem jedoch behoben ist und ** frühere Bewertungen auch leichter zu lesen sind, sollte es eine bessere Website sein! ** **.
Ich beschloss, das Problem zu lösen.
Bei der Untersuchung scheint dieses Problem als Emotionsanalyse bezeichnet zu werden (außer Reputationsanalyse, Stimmungsanalyse oder Stimmungsklassifizierung).
Darüber hinaus kann das Verfahren grob in das Folgende unterteilt werden.
Die Methode, die das Emotionswörterbuch verwendet, ist eine einfache Logik. Wenn beispielsweise "Überstunden" negativ sind und "keine Überstunden" abgebrochen werden, wird dies als positiv bewertet. Es wurde jedoch bald schwierig.
Es gab nicht viel Überstunden
Im obigen Fall scheint es beispielsweise nicht möglich zu sein, das Problem nur durch die Zusammenarbeit mit Chochoi zu lösen, und es war notwendig, verschiedene Muster zu berücksichtigen. Darüber hinaus scheint es, dass ein solcher Ausdruck häufig verwendet wird, wahrscheinlich aufgrund der Art der Mundpropaganda für den Jobwechsel. .. ..
Ich kam auf den Punkt und gab diese Methode früh auf
Unbekannte Bereiche wie maschinelles Lernen und tiefes Lernen. Persönlich war ich völlig unwissend und es schien schwierig zu sein, aber ich war auch daran interessiert, also beschloss ich, diese Methode zu erforschen.
Von dem Punkt an, an dem ich nur lose Kenntnisse hatte, als ich mit weiteren Untersuchungen fortfuhr, indem ich mich auf das Wort "Stimmungsanalyse" stützte, fand ich die folgenden Dinge.
――Retroaktives neuronales Netzwerk (RNN) scheint gut für den Umgang mit Sätzen zu sein. ―― Unter ihnen neigt LSTM dazu, die Genauigkeit zu verbessern.
Der obige japanisch übersetzte Artikel
Ich habe einige Proben gefunden, die eine Stimmungsanalyse durchgeführt haben.
Probe mit Tensorflow (Github) --Japanisch wird eingegeben, indem es in Zeicheneinheiten unterteilt wird. »Es sah gut aus, aber es schien schwierig, es frei zu kontrollieren.
Chainer-Beispiel (Github) ――Ist es auf Englisch? Es sieht so aus, als wäre es geschafft. ――Es scheint, dass verschiedene Vorbereitungen erforderlich sind, um es zu verwenden.
Beispiel für eine zeichenbasierte RNN mit Chaniner (github) ――Dies scheint den nächsten Satz anstelle der Stimmungsanalyse zu generieren. Das sieht auch lustig aus
Beispiel mit Theano ――Es scheint, dass Sie eine Filmkritik auf Englisch beurteilen. ――Ich kann verstehen, wo und was ich tue.
** Wenn Sie Daten erstellen können, können Sie etwas verschieben ** »Ich sehe Hoffnung.
Dieses Mal verwenden wir Beispiel mit Theano, um mit der Überprüfung fortzufahren.
(Zur Verwendung ist Hinweise zum Lesen des Codes ein separater Artikel. Wenn Sie interessiert sind, lesen Sie bitte diesen Artikel.)
Die Mundpropaganda-Daten des Karrierewechsel-Meetings, die dieses Mal als Lerndaten verwendet werden sollen, weisen die folgenden Merkmale für eine Mundpropaganda auf.
--Score Daten
Stellen Sie das Problem basierend auf den bisherigen Ergebnissen erneut wie folgt ein.
Erstellen Sie ein Modell, das beurteilen kann, ob der geschriebene Mundpropaganda-Text positiv oder negativ ist
Ursprünglich würde ich gerne eine 5-Grad-Bewertung gemäß den Daten anstreben, aber es scheint, dass der Schwierigkeitsgrad immer noch hoch ist, also werde ich es diesmal nicht tun.
Auch dieses Mal werde ich versuchen, basierend auf einem groben Gefühl, also Annahmen und Annahmen, dass Sätze mit niedrigen Punktzahlen "negativ" und Sätze mit hohen Punktzahlen "positiv" sind. Und weiter.
Zur Datenaufbereitung werden wir mit solchen Vorbereitungen fortfahren
[1,1,2,3]
Bewegen Sie sich, wenn die Daten bereit sind. Standardmäßig dauert es sehr lange, daher schien es besser, die Anzahl der ausgeblendeten Ebenen entsprechend anzupassen.
Nachdem Sie eine Weile gewartet haben und das Modell gebaut ist, werfen Sie vorerst ein einfaches Wort und versuchen Sie, es zum Laufen zu bringen.
Wenn Sie sich "pred_probs ()" in Zeile 400 von Learning Script ansehen, können Sie sich darauf beziehen, wenn Sie mit einem trainierten Modell überprüfen möchten. Da so etwas wie "Yo" geschrieben ist, überprüfen Sie es mit einem kleinen Skript, das darauf verweist.
negaposi.py
model = numpy.load("lstm_model.npz")
tparams = lstm.init_tparams(model)
(use_noise, x, mask, y, f_pred_prob, f_pred, cost) = lstm.build_model(tparams,
#Wenn Sie diese Option nicht aktivieren, erhalten Sie einen KeyError.
'encoder': 'lstm',
'dim_proj': 128,
'use_dropout': True,
})
#Minimale Vereinfachung
def pred_probs(f_pred_prob, sentence):
probs = numpy.zeros((1, 2)).astype(config.floatX)
x, mask, _y = imdb.prepare_data([sentence],
1, #Dummy. Geeignet, weil es nicht verwendet wird.
maxlen=None)
return f_pred_prob(x, mask)[0]
#Eingabe, die jede Zeichenfolge digitalisiert
sentences = [
{
"data": [27, 72, 104, 150, 19, 8, 106, 23],
"text": "Es ist eine sehr gute Firma"
},
{
"data": [27, 72, 104, 402, 121, 73, 8, 106, 23],
"text": "Es ist eine sehr schlechte Gesellschaft."
}
]
for sentence in sentences:
result = pred_probs(f_pred_prob, sentence["data"])
print "==="
print result
print sentence["text"], ("is positive" if (result[0] < result[1]) else "is negative")
% python sample.py
===
input:Es ist eine sehr gute Firma=> [27, 72, 104, 150, 19, 8, 106, 23]
output: [ 0.06803907 0.93196093]
Sehr gute Gesellschaft ist positiv
===
input:Es ist eine sehr schlechte Gesellschaft.=> [27, 72, 104, 402, 121, 73, 8, 106, 23]
output: [ 0.73581125 0.26418875]
Das schlimmste Unternehmen ist negativ
Irgendwie kam es so heraus. Es ist wunderbar. Die Ausgabe ist das Ergebnis des Durchlaufens von LSTM, und es scheint, dass die Wahrscheinlichkeit jeder Klasse zurückgegeben wird.
Ich hatte das Gefühl, ich könnte gehen, also werde ich mit der weiteren Überprüfung fortfahren.
Schauen wir uns das Ausführungsergebnis genauer an, während wir mit verschiedenen Parametern spielen. Vorläufig schienen die Ergebnisse von dim_proj = 8 (versteckte Schicht) und validFreq = 30 (Überprüfungshäufigkeit) diesmal als solche gut zu sein.
Das diesmal ausgeführte Skript zeichnet den Fehlerübergang zwischen den Verifizierungsdaten und den Testdaten auf. Es scheint, dass dies der Übergang ist.
Da eine Epoche um das 2600-Update abgeschlossen ist, wodurch die Überprüfungsdaten abgeschlossen sind, scheint der Fehler danach zu schrumpfen.
Außerdem wird im Trainingsskript das frühe Anhalten ausgeführt, sodass Sie sehen können, dass es mäßig angehalten wird, bevor eine Überanpassung auftritt.
Bei der Überprüfung beträgt die Fehlerrate der Testdaten am Ende etwa 0,2 bis 0,3, sodass wir eine korrekte Antwortrate von etwa 70 bis 80% erwarten können.
Werfen wir einen Blick auf die als Test verwendeten Daten, um festzustellen, ob dies wirklich der Fall ist.
Wenn Sie die zuvor verwendete negaposi.py
erweitern, die Testproben nach negativ / positiv klassifizieren und die Verteilung der einzelnen Proben erhalten, sieht es so aus
Ergebnis | negative(%) | positive(%) |
---|---|---|
★ 1 Bewertung | 84.34 | 15.66 |
★ 2 Bewertungen | 66.53 | 33.47 |
★ 3 Bewertungen | 45.07 | 54.93 |
★ 4 Bewertungen | 25.77 | 74.23 |
★ 5 Bewertungen | 27.59 | 72.41 |
Sie können so etwas sehen
――Ergebnis: Es fühlt sich nach Erfolg an
――Wenn Sie darüber nachdenken, die Genauigkeit etwas weiter zu verbessern, scheint dies möglich zu sein. ――Wird die Genauigkeit verbessert, wenn Sie Informationen wie Alter und Branche eingrenzen?
»Während ich nachforschte, war es" Ich verstehe überhaupt nicht ... ", aber wenn ich es versuchte, während ich es bewegte, fand ich es oft heraus. ――Es ist wichtig, es vorerst zu versuchen ――Wenn ich Deep Learning zu dem Zeitpunkt las, als alle Dinge, die ich nicht verstand, erschöpft waren, fühlte ich, dass mein Gehirn voll war und es eine große Hilfe war. Es war. »Ich hatte ein paar Tage lang Probleme, aber in vielerlei Hinsicht konnte ich die Lächerlichkeit der Welt des maschinellen Lernens spüren. ――Potential, dass es nicht seltsam sein wird, selbst wenn es in einigen Jahren ein Pflichtfach für Ingenieure wird
Recommended Posts