[PYTHON] Fassen Sie Doc2Vec zusammen

Einführung

Dieses Mal habe ich ** Doc2Vec ** als Entwicklung von Word2Vec studiert. Es gibt "Dokumentklassifizierung" und "Dokumentgruppierung (Clustering)", die häufig bei der Verarbeitung natürlicher Sprache erforderlich sind. Um diese auszuführen, ist jedoch eine verteilte Darstellung des Dokuments selbst erforderlich. Sie können die verteilte Darstellung direkt mit Doc2Vec abrufen.

Referenz

Zum Verständnis von Doc2Vec habe ich Folgendes erwähnt.

Doc2Vec

Was ist Doc2Vec?

Doc2Vec ist eine Technologie, die Sätze beliebiger Länge in Vektoren fester Länge konvertiert. Während Word2Vec die verteilte Darstellung von Wörtern erwarb, erwarb Doc2Vec die verteilte Darstellung von Sätzen und Dokumenten. Es gibt klassische Methoden wie Bag-of-Words und TF-IDF als Methoden zum Erfassen verteilter Sätze, aber sie weisen die folgenden Schwächen auf.

Dies sind Methoden, die als zählbasiert bezeichnet werden, aber Doc2Vec versucht, verteilte Ausdrücke von Sätzen durch einen anderen Ansatz zu erfassen, um die oben genannten Schwachstellen zu überwinden.

Doc2Vec-Algorithmus

Doc2Vec ist ein allgemeiner Begriff für die folgenden zwei Algorithmen.

Das Folgende ist eine kurze Beschreibung jedes Algorithmus.

PV-DM PV-DM ist ein Algorithmus, der CBOW von Word2Vec unterstützt. Sie erhalten einen verteilten Ausdruck des Satzes, während Sie die Aufgabe lösen, die ID des Satzes und mehrerer Wörter zu übergeben und das nächste Wort vorherzusagen. Soweit ich das beurteilen kann, scheint das Lernen nach dem folgenden Verfahren durchgeführt zu werden.

  1. Bereiten Sie einen Satzvektor und einen Wortvektor vor, die aus dem Dokument entnommen wurden.
  2. Kombinieren Sie die in 1 hergestellten Vektoren in der Zwischenschicht (Mittelwert oder Verkettung, wählbar in Gensim).
  3. Sagen Sie das nächste Wort nach dem abgetasteten Wort voraus
  4. Aktualisieren Sie den Textvektor und die Zwischenebene → das Gewicht der Ausgabeebene

Das Bild ist unten dargestellt. (Zitiert aus dem in "Referenz" beschriebenen Originalpapier)

スクリーンショット 2020-02-12 20.41.34.png

PV-DBOW PV-DBOW ist ein Algorithmus, der dem Sprunggramm von Word2Vec entspricht. PV-DBOW kann schneller als PV-DM gelernt werden, da zum Lernen keine Wortvektoren verwendet werden müssen. PV-DBOW soll jedoch genauer sein als PV-DM, da es die Wortreihenfolge während des Lernens ignoriert.

Soweit ich das beurteilen kann, scheint das Lernen nach dem folgenden Verfahren durchgeführt zu werden.

  1. Probieren Sie eine beliebige Anzahl von Wörtern aus demselben Satz aus
  2. Optimieren Sie den Satzvektor und die Zwischenschicht → Ausgangsschichtgewichte, um die abgetasteten Wörter vorherzusagen

Das Bild ist unten dargestellt. (Zitiert aus dem in "Referenz" beschriebenen Originalpapier)

スクリーンショット 2020-02-13 21.16.01.png


Ich habe die beiden oben genannten Algorithmen kurz zusammengefasst, aber es gab einige Details, die ich nicht verstehen konnte. Wenn jemand weiß, lass es mich bitte in den Kommentaren wissen. .. ..

** Ich habe es auch nach dem Überprüfen nicht verstanden **

――Welches Format wird der Dokumentvektor zuerst als Eingabe angegeben, und gibt es ein Problem beim Erkennen, dass nur die ID des Satzes übergeben wird? ――Woher kommt die verteilte Darstellung (Absatzvektor) des Satzes, die als Ergebnis dieses Lernens endgültig erhalten werden kann? (In Word2Vec ist der Gewichtsvektor, der die Eingabe in die Zwischenschicht konvertiert, die verteilte Darstellung des Wortes.)

Erstellen eines Doc2vec-Modells mithilfe der Bibliothek

Im Folgenden erstellen wir mithilfe der Bibliothek ein Modell von Doc2Vec.

Bibliothek verwendet

gensim 3.8.1

Datensatz

Mit gensim, einer Python-Bibliothek, können Sie ganz einfach ein Modell von Doc2Vec erstellen. Dieses Mal verwenden wir "Livedoor News Corpus" für den Datensatz. Einzelheiten zum Datensatz und zur Methode der morphologischen Analyse finden Sie unter Veröffentlicht im zuvor veröffentlichten Artikel. Ich werde.

Im Fall von Japanisch ist eine Vorverarbeitung erforderlich, bei der Sätze in morphologische Elemente zerlegt werden, sodass alle Sätze in morphologische Elemente zerlegt und dann in den folgenden Datenrahmen verschoben werden.

スクリーンショット 2020-01-13 21.07.38.png

Die Spalte ganz rechts ist die morphologische Analyse aller Sätze und durch Leerzeichen halber Breite getrennt. Verwenden Sie diese Option, um ein Doc2Vec-Modell zu erstellen.

Modelllernen

Erstellen Sie mit gensim ein Word2vec-Modell. Nachfolgend finden Sie die wichtigsten Parameter zum Erstellen eines Modells.

Parametername Bedeutung der Parameter
dm PV wenn 1=PV wenn DM 0 ist-Lernen Sie mit DBOW
vector_size Geben Sie an, in wie viele Dimensionen der verteilten Darstellung der Text konvertiert werden soll
window Wie viele Wörter müssen verwendet werden, um das nächste Wort vorherzusagen?(PV-Für DM)Oder wie viele Wörter aus der Dokument-ID vorhergesagt werden sollen(PV-Für DBOW)
min_count Ignorieren Sie Wörter, die kleiner als die angegebene Anzahl sind
wokers Anzahl der zum Lernen verwendeten Threads

Unten finden Sie den Code zum Erstellen eines Doc2Vec-Modells. Solange Sie den einzugebenden Text erstellen können, können Sie ein Modell in einer Zeile erstellen.


sentences = []
for text in df[3]:
    text_list = text.split(' ')
    sentences.append(text_list)

from gensim.models.doc2vec import Doc2Vec, TaggedDocument
documents = [TaggedDocument(doc, [i]) for i, doc in enumerate(sentences)]
model = Doc2Vec(documents, vector_size=2, window=5, min_count=1, workers=4)

Was Sie mit Doc2Vec tun können

Ich konnte einen verteilten Ausdruck von Sätzen nach dem Modell von Doc2Vec erhalten. Sie können den semantischen Abstand zwischen Sätzen quantitativ ausdrücken, indem Sie den verteilten Ausdruck von Sätzen verwenden.

Lassen Sie uns herausfinden, welche Art von Artikeln den folgenden Nachrichtenartikeln in dem zuvor erstellten Modell ähnlich sind.

'19. (Sa / Japan-Zeit) Südafrika-Weltmeisterschaft / Japan x Holland-Spiel ist ein guter Kampf für die japanische Nationalmannschaft
In der zweiten Hälfte, als Sneijder die Führung mit einem Tor zuließ, konnte er sich nicht umdrehen und war 0.-Verloren um 1.
Nach dem Spiel war Hidetoshi Nakata, ein ehemaliger Vertreter Japans, der für die Kommentierung der Fernsehsendung Asahi verantwortlich war,
"Nun, 0-Obwohl ich in 1 verloren habe, war das Team ein viel besserer Kampf als im ersten Rennen, und vor allem in der zweiten Hälfte war Japan auch eine gute Offensive, und ich denke, es war das nächste Rennen, das verbunden wurde. Ich denke ", sagte er.
"(Obwohl es Fälle gibt, in denen wir beim Schlürfen Punkte verlieren), werden wir unsere Angriffe verbinden, nachdem wir sie richtig verteidigt haben.
Vor allem am Ende setzt Regisseur Okada den angreifenden Spieler frühzeitig ein, und diese Einstellung wird zum nächsten Spiel führen.
Es ist nicht in Ordnung, dieses Spiel zu verlieren, und es ist großartig, die Einstellung des Gewinnens zu sehen. "'

Sie können ein Dokument ausgeben, das dem unten angegebenen Dokument ähnelt.


#Übergeben Sie die ID des Dokuments und geben Sie das Dokument in der Nähe aus(In diesem Fall ist 5792 die ID des obigen Artikels)
model.docvecs.most_similar(5792)

Klicken Sie hier für die Ausgabe. Gibt eine Reihe von Dokument-IDs und deren Cosinus-Ähnlichkeit zurück.

[(6084, 0.8220762014389038),
 (5838, 0.8150338530540466),
 (6910, 0.8055128455162048),
 (351, 0.8003012537956238),
 (6223, 0.7960485816001892),
 (5826, 0.7933120131492615),
 (6246, 0.7902486324310303),
 (6332, 0.7871333360671997),
 (6447, 0.7836691737174988),
 (6067, 0.7836177349090576)]

Schauen wir uns den Inhalt von Artikeln mit hoher Ähnlichkeit an.

##Artikelinhalt von 6084

'Soccer U will an den Olympischen Spielen in London teilnehmen-22 Vertreter Japans.
Die zweite Qualifikationsrunde ist ein Heim- und Auswärtsspiel gegen ein Land in Kuwait.
Es ist U, das Aufmerksamkeit erregt-Kensuke Nagai (Nagoya Grand Pass), ein japanisches Ass, das in 11 Spielen in 22 Nationalmannschaften 8 Tore erzielt.
18. Mitternachtssendung, TBS "S.-1 "ist 50m 5.Wir näherten uns der erwarteten schnellen FW, die in 8 Sekunden durchlief.
Nagai sagte: »Yoi Don wird nicht verlieren.« »Ich weiß es nicht selbst, aber es scheint schnell zu gehen.
"Es war ungefähr mein zweites Jahr in der High School (ich wurde schneller)", sagte er, aber als "Nagais Geschwindigkeitslegende" sagte ein Freund, der über seine Highschool-Tage Bescheid wusste: "Holen Sie sich ein Auto, ungefähr 40 Kilometer." ..
"Führen Sie diesen Kerl", sagte Koichi Sugiyama, ein Highschool-Lehrer an der Kyushu International University. Das war oft der Fall. "
Auch wenn man von schnelllebigen Fußballspielern spricht, ist "Wildnis" Masayuki Okano zu berühmt, aber Nagai, der nach Okano gefragt wurde, lachte bitter: "Es ist nicht so schnell."
Als er in die High School kam, sagte Nagai, er sei klein und nicht schnell. "Ich bin oft gestürzt und zurückgekehrt". "Es war an der Zeit, sein Wachstum war gut für körperliches Wachstum und Training Es könnte gewesen sein ", sagt Sugiyama, der sich daran erinnert, dass seine Fähigkeiten durch das Höllentraining unter Verwendung der Spezialität, der Hänge und der Treppen der High School gewachsen sind.'
##Artikelinhalt von 5838

'In der TBS-Sportsendung "S1", die am 29. um Mitternacht ausgestrahlt wurde, zeigte der Gastkommentar Ramos Rui seine Wut über die aktuelle Situation, in der der Direktor der japanischen Nationalmannschaft noch nicht entschieden wurde.
Die einzigen Länder, die sich nicht für einen repräsentativen Trainer bei der Weltmeisterschaft entschieden haben, sind Japan und Nordkorea. "Nein, das ist zu erbärmlich. Insbesondere die Motivation der ausgewählten Spieler ist geringer.
Als Ramos diesmal die Mitglieder ansieht, beginnt er mit einem offensichtlich gedämpften Ausdruck zu sprechen: "Warum werden Inamoto und Tamada nicht ausgewählt?"
Auf die Frage "Mr. Ramos, soll ich das tun?" Sagte er: "Nein, ich möchte es tun. Das ist definitiv wahr." Er sagte auch: "Ich kann nicht ausgewählt werden. Ich bin aktiv. Zu dieser Zeit. Es ist zu spät. Es tut mir wirklich leid. Ich bin einsam. "'

Sie können sehen, dass die beiden besten Fußballthemen sind. Der Korpus, den ich lernte, bestand aus Artikeln von neun Nachrichtenseiten, aber acht der zehn größten Ähnlichkeiten waren Artikel von Sportnachrichtenseiten.

Wenn Sätze auf diese Weise in Vektordarstellungen fester Länge konvertiert werden können, können sie auf verschiedene Algorithmen für maschinelles Lernen wie Clustering und Klassifizierung angewendet werden. In der Welt der Verarbeitung natürlicher Sprache ist es sehr wichtig, hochausdrucksstarke Vektorausdrücke zu erhalten, und verschiedene Algorithmen wie Doc2Vec, die dieses Mal eingeführt wurden, wurden entwickelt.

Next Ich werde verschiedene Aufgaben zur Verarbeitung natürlicher Sprache mit diesem Doc2Vec-Modell ausprobieren.

Recommended Posts

Fassen Sie Doc2Vec zusammen
Fassen wir Apache zusammen
Fassen Sie den Python-Import zusammen