[PYTHON] Ähnlichkeitsberechnung zwischen präzisen Episoden unter Verwendung der Live-Timeline und des Themenmodells

Dieser Artikel ist der 18. Tagesartikel von Precure Advent Calendar 2015. Heute ist der 19. Dezember, aber ich glaube, dass jeder, der Precure liebt, mir mit einem größeren Herzen vergeben wird als das Meer!

Dieser Artikel und dieses Experiment sollen WIP sein.

Introduction Ich möchte die Ähnlichkeit zwischen dieser Geschichte und dieser Geschichte in diesem Anime berechnen, oder ich möchte zwischen ähnlichen Geschichten gruppieren. Welche Mittel gibt es in einem solchen Fall? Eine Möglichkeit, dies zu tun, besteht darin, die Live-Timeline von Twitter zu verwenden. Da der Betrachter in der Live-Zeitleiste die Situation und die Eindrücke während des Betrachtens der Animation twittern kann, kann sie als Dokument angesehen werden, das die Animation in einer Eins-zu-Eins-Korrespondenz mit der Episode der Animation erklärt. Dieses Dokument = Die Ähnlichkeit zwischen Zeitleisten für Live-Animationen kann als Index für die Ähnlichkeit zwischen Episoden verwendet werden.

Dieses Mal möchte ich die Ähnlichkeit zwischen jeder Episode von Go! Princess Precure mit dieser Richtlinie berechnen. Lassen Sie uns insbesondere die Ähnlichkeit zwischen den Live-Zeitleisten jeder Geschichte mithilfe von LDA (Latent Dirichlet Allocation) berechnen, einem der Themenmodelle.

Zu verwendende Werkzeuge usw.

Daten

--2015 / 2/1 (Episode 1) ~ 13.12.2015 (Episode 44) Go! Princess Precure Live-Timeline auf Twitter (insgesamt 37 Folgen, da die Timeline-Aufnahme manchmal fehlgeschlagen ist )

Die in diesen Fällen am häufigsten vorkommenden 20 Wörter lauten wie folgt.

Kirara 31344
Guten Morgen 25404
Person 21358
Gut 19218
Herr 19092
Traum 17395
Minami 17061
Haruharu 15956
Zeit 15824
Towa 14579
Kanata 14426
Yui 13961
Schließen Sie 13844
Süß 13311
13049 schließen
Puff 11786
Werden Sie 11757
Verjüngungskur 10679
Siehe 10342
Twinkle 9483

Glitzer stark. Die beiden Wörter "Precure" und "Princess" stehen ursprünglich über Kirara.

Experiment

Über LDA

Die richtige Erklärung von LDA ist für mich jetzt unmöglich. Sie haben jedoch Google.

LDA erklärt LDA im Umfang der Erläuterung von Begriffen und leitet potenzielle Themen aus der Dokumentation ab. Beispielsweise entspricht dieses Thema bei Nachrichtenartikeln intuitiv Kategorien wie "Politik", "Sport" und "Kunst". Die LDA geht davon aus, dass ein Dokument möglicherweise einen bestimmten Prozentsatz jedes Themas enthält und das Dokument als stochastische Verteilung von Themen darstellt. Das heißt, ein Dokument hat eine 80% ige Chance, über Politik zu sprechen, 15% über Kunst, 3% über Sport und so weiter. Ich werde. Außerdem entspricht in LDA jedes Thema der Verteilung der Wortvorkommenswahrscheinlichkeiten. Mit anderen Worten, im Thema "Politik" erscheint "Obama" mit einer Wahrscheinlichkeit von 7%, "Trump" mit einer Wahrscheinlichkeit von 5%, "Abe" mit einer Wahrscheinlichkeit von 3% und so weiter.

Ich werde den Ablauf von hier aus erklären, indem ich ihn durch die präzise Live-Timeline ersetze. Eine genaue Live-Zeitleiste für eine Episode ist ein langes Dokument, das diese Episode beschreibt. In Precure gibt es Zeiten, die sich auf einen bestimmten Charakter konzentrieren, wie beispielsweise Haruno Harukas Nahaufnahmen und Zeiten, sogenannte "Haruka-Zeiten". Von nun an gehen wir davon aus, dass diese "Haruka-Zeiten" und "Kirara-Zeiten" potenzielle Themen sind, die in der präzisen Live-Zeitleiste existieren. Ich schrieb, dass ein Thema die Wahrscheinlichkeit ist, dass ein Wort erscheint. Im Fall von Go! Princess Pretty Cure wird das Thema "Kirara" mit hoher Wahrscheinlichkeit in Wörtern wie "Twinkle", "Donut" und "Mode" vorkommen.

Lassen Sie uns zunächst die gesamte Live-Zeitleiste von 37 Go! Princess Precure analysieren und berechnen, welche Themen vorhanden sind. Dann habe ich in dem gefundenen Thema berechnet, wie viel jedes Mal "Kirara-Zeiten", "Haruka-Zeiten" oder "Zeiten, die niemandem gehören" waren. Ich werde fortsetzen.

Ich habe es lange geschrieben, aber der Punkt ist, dass bei der Berechnung der Ähnlichkeit zwischen Live-Timelines "Haruka-Zeiten", "Minami-Zeiten", "Kirara-Zeiten", "Towa-Zeiten", "Wer ist" Es wird als Technologie für die Dimensionskomprimierung verwendet. Hierbei handelt es sich um einen intuitiven und kleinen Index, der als "Zeit, die keine Sache ist" bezeichnet wird.

Die LDA-Implementierung verwendet eine Python-Bibliothek namens gensim.

Themen extrahieren

Wie bereits erwähnt, werden bei der Bereitstellung einer Reihe von Dokumenten durch die LDA auf die in der Reihe der Dokumente vorhandenen Themen geschlossen. Sie müssen die Anzahl der Themen selbst festlegen. Wir setzen die Anzahl der Themen auf 5, wobei für jedes der vier Go! Princess Precure ein Thema und für jedes andere Precure-Thema ein Thema angenommen wird. (Haruka-Zeiten, Minami-Zeiten, Kirara-Zeiten, Towa-Zeiten, vorausgesetzt, Zeiten, die niemandem gehören)

Die daraus abgeleiteten Themen sind wie folgt. "Zahl * Wort" ist die Wahrscheinlichkeit, dass ein Wort in dem oben genannten Thema erscheint.

topic #0 (0.200): 0.009*Einen schönen Tag noch+ 0.007*Towa+ 0.007*Mann+ 0.006*Herr+ 0.006*Yui+ 0.005*Gut+ 0.005*Schlüssel+ 0.005*Verwandeln+ 0.005*Traum+ 0.005*Scharlachrot
topic #1 (0.200): 0.009*Yui+ 0.008*Schließen+ 0.007*Kanata+ 0.007*Haruharu+ 0.007*Traum+ 0.006*Mal+ 0.006*Gut+ 0.005*Süden+ 0.005*Mann+ 0.005*Verzweiflung
topic #2 (0.200): 0.020*Kirara+ 0.010*Einen schönen Tag noch+ 0.006*Mann+ 0.006*Gut+ 0.006*Haruharu+ 0.005*Traum+ 0.005*funkeln+ 0.005*Schließen+ 0.005*Mal+ 0.005*süß
topic #3 (0.200): 0.014*Süden+ 0.007*Haruharu+ 0.007*Einen schönen Tag noch+ 0.006*Gut+ 0.006*Kirara+ 0.005*Schließen+ 0.005*Mann+ 0.005*Kanata+ 0.005*かわGut+ 0.004*Herr
topic #4 (0.200): 0.010*Herr+ 0.009*Kanata+ 0.008*Towa+ 0.008*geschlossen+ 0.007*Mann+ 0.006*Mal+ 0.006*Einen schönen Tag noch+ 0.005*Gut+ 0.005*Traum+ 0.005*Süden

Es ist mehr so als ich erwartet hatte. Es ist überraschend, dass Yui-chan stark auftrat, aber je mehr ich mir die Live-Timeline ansah, desto mehr fühlte ich mich. "Haruka", "Minami", "Kirara" und "Towa" waren nicht die maximalen Zutaten, aber es gab keine Schande.

Ähnlichkeitsgrad

Berechnen Sie die Kosinusähnlichkeit zwischen Dokumenten, indem Sie jedes Dokument als Merkmal jedes Dokuments behandeln (dh jedes Dokument als 5-dimensionalen Vektor behandeln, der aus den oben genannten 5 Themen besteht). Dann können die folgenden Ähnlichkeiten erhalten werden.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 19 21 22 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
1 0.315802 0.0 0.0 0.0 0.148118 0.0 0.0 0.0 0.997047 0.108117 0.0 0.0 0.0 0.0 0.0 0.0 0.998236 0.0 1.0 1.0 1.0 0.345272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 0.116513 0.116513 0.116513 0.854927 0.151135 0.116513 0.472356 0.323976 0.149502 0.116513 0.141464 0.116513 0.116513 0.819519 0.814538 0.363768 0.814538 0.315962 0.315962 0.315962 0.109093 0.245021 0.0 0.814538 0.820534 0.814478 0.544964 0.472356 0.0 0.00903815 0.814489 0.0 0.143125 0.154445 0.816244
3 1.0 1.0 0.024152 0.0881911 1.0 0.0 0.0767926 0.989938 1.0 0.999529 1.0 1.0 0.0523216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.671438 0.0 0.0 0.214036 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.99927 0.998638 0.0154795
4 1.0 0.024152 0.0881911 1.0 0.0 0.0767926 0.989938 1.0 0.999529 1.0 1.0 0.0523216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.671438 0.0 0.0 0.214036 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.99927 0.998638 0.0154795
5 0.024152 0.0881911 1.0 0.0 0.0767926 0.989938 1.0 0.999529 1.0 1.0 0.0523216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.671438 0.0 0.0 0.214036 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.99927 0.998638 0.0154795
6 0.00218089 0.0247291 0.0 0.147387 0.0402567 0.0247291 0.055079 0.0247291 0.0247291 0.988927 0.988987 0.204383 0.988987 0.145919 0.145919 0.145919 0.0503817 0.219115 0.0 0.988987 0.971281 0.988914 0.0905681 0.0 0.0 0.0109738 0.988928 0.0 0.0571255 0.0709432 0.989252
7 0.0877574 0.299502 0.00673912 0.1736 0.0877574 0.0877161 0.0877574 0.0877574 0.00459161 0.0 0.0 0.0 0.0 0.0 0.0 0.891625 0.735559 0.950051 0.0 0.0307165 0.0115478 0.298243 0.299502 0.950051 0.949993 0.0104241 0.950051 0.106319 0.109628 0.00135845
8 0.0 0.0767926 0.989938 1.0 0.999529 1.0 1.0 0.0523216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.671438 0.0 0.0 0.214036 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.99927 0.998638 0.0154795
9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.995798 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
10 0.182712 0.0756657 0.07563 0.0756657 0.0756657 0.00395895 0.0 0.995374 0.0 0.997133 0.997133 0.997133 0.344283 0.0508048 0.0 0.0 0.0161952 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0756105 0.0755626 0.00117127
11 0.989787 0.98932 0.989787 0.989787 0.0517872 0.0 0.112216 0.0 0.112415 0.112415 0.112415 0.121087 0.727015 0.087664 0.0 0.212951 0.00106555 0.0 0.0 0.087664 0.0876586 0.00096186 0.087664 0.990783 0.990468 0.0153215
12 0.999529 1.0 1.0 0.0523216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.671438 0.0 0.0 0.214036 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.99927 0.998638 0.0154795
13 0.999397 0.999397 0.0869591 0.0347166 0.00206131 0.0347166 0.0 0.0 0.0 0.0 0.678142 0.0 0.0347166 0.247816 0.034714 0.00317923 0.0 0.0 0.000385217 0.0347145 0.0 0.999806 0.999659 0.0501827
14 1.0 0.0523216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.671438 0.0 0.0 0.214036 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.99927 0.998638 0.0154795
17 0.0523216 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.671438 0.0 0.0 0.214036 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.99927 0.998638 0.0154795
19 0.998682 0.059297 0.998682 0.0 0.0 0.0 0.0 0.238963 0.0 0.998682 0.986444 0.998608 0.0914558 0.0 0.0 0.0110814 0.998621 0.0 0.0840274 0.0979639 0.999357
21 0.0593753 1.0 0.0 0.0 0.0 0.0 0.204766 0.0 1.0 0.976745 0.999926 0.0915765 0.0 0.0 0.011096 0.99994 0.0 0.0327753 0.0467628 0.99988
22 0.0611948 0.998126 0.998126 0.998126 0.344625 0.0125306 0.0 0.0611948 0.0597717 0.0611903 0.00560401 0.0 0.0 0.000679021 0.0611911 0.0 0.00200568 0.00286164 0.0611875
26 0.0 0.0 0.0 0.0 0.204766 0.0 1.0 0.976745 0.999926 0.0915765 0.0 0.0 0.011096 0.99994 0.0 0.0327753 0.0467628 0.99988
27 1.0 1.0 0.345272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
28 1.0 0.345272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
29 0.345272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
30 0.668285 0.938327 0.0 0.0117859 0.0114053 0.0 0.0 0.938327 0.938269 0.0102954 0.938327 0.0183955 0.0217185 0.0
31 0.711055 0.208365 0.356187 0.216992 0.0190813 0.0 0.711055 0.713323 0.216154 0.711055 0.691833 0.696841 0.218735
32 0.0 0.0125606 0.012155 0.0 0.0 1.0 0.999938 0.0109721 1.0 0.0196045 0.023146 0.0
33 0.976745 0.999926 0.0915765 0.0 0.0 0.011096 0.99994 0.0 0.0327753 0.0467628 0.99988
34 0.976811 0.0894461 0.0 0.0120418 0.0228789 0.97681 0.0120418 0.246198 0.259767 0.979934
35 0.0915719 0.0 0.0101176 0.0212125 1.0 0.0101176 0.032972 0.0469946 0.999829
36 0.995697 0.0 0.0010282 0.0926584 0.0 0.00303709 0.00433322 0.0926529
37 0.0 0.0 0.0 0.0 0.0 0.0 0.0
38 0.999938 0.0109721 1.0 0.0196045 0.023146 0.0
39 0.0226113 0.999932 0.0199847 0.0236888 0.0116392
40 0.0120332 0.0330089 0.0470379 0.999808
41 0.0196045 0.023146 0.0
42 0.999905 0.0490662
43 0.0620762

Es kann subtil sein. Ist es nicht zu spitz wie 0,0 oder 0,99?

Versuchen Sie, ein Netzwerk zu zeichnen

Zeichnen wir ein Netzwerk zwischen Dokumenten unter Verwendung der obigen Ähnlichkeit. Hier erstellen wir eine Kante in einem dynamischen Diagramm, indem wir eine Kante zwischen Dokumenten mit einer Ähnlichkeit von 0,99 oder mehr erstellen. Außerdem trägt jeder Knoten nach meinem Ermessen die Bezeichnung "Haruka-Zeiten", "Minami-Zeiten", "Kirara-Zeiten", "Towa-Zeiten" und "Andere Zeiten" und ist jeweils pink, blau, gelb, rot und weiß. Ich habe es gefärbt. Es wäre schön, wenn die Zeiten der gleichen Leute in Bezug auf das Netzwerk nahe beieinander wären.

Die Python-Bibliothek igraph wird zum Erstellen und Zeichnen des Netzwerks verwendet.

graph_kk.png

Ich bin froh, dass der gelb-weiße Zusammenhalt stark zu sein scheint. Die anderen sind jedoch nicht klar und subtil. "Kirara" erscheint häufig, und das Kirara-Thema erscheint möglicherweise stärker als andere.

Fazit

** Subtile Ergebnisse. ~ Beende ~ ** Die folgenden Gründe sind möglich, warum die Ergebnisse nicht gut sind.

Dieses Experiment selbst ist kein gutes Ergebnis, aber ich persönlich denke, dass die Politik, "Anime-Episoden aus der Live-Animations-Timeline zu erraten", interessant ist (dies liegt daran, dass bereits über Sport geforscht wird). Es ist nicht neu). Während ich die Ergebnisse dieser Zeit überprüfe, werde ich hier weiterhin etwas unternehmen.

Recommended Posts

Ähnlichkeitsberechnung zwischen präzisen Episoden unter Verwendung der Live-Timeline und des Themenmodells
Berechnung der Ähnlichkeit zwischen Sätzen mit Word2Vec (vereinfachte Version)
Berechnung der Kilometerzähler mit CNN und Tiefenschätzung Teil 2 (CNN SLAM # 2)
Berechnung der Ähnlichkeit durch MinHash
Schätzung / Vorhersage des verallgemeinerten linearen Modells bei Lasso und Ridge