[PYTHON] Ich habe versucht, den allgemeinen Kommentar des verdammten Spiels des Jahres morphologisch zu analysieren

Ich werde mit der morphologischen Analyse spielen.

Vorwort

Als ich neulich die Rezension von KOTY [^ 1] las, um die Zeit totzuschlagen ** Ich hatte die Idee, dass es Spaß machen würde, die bisherigen Gesamtbewertungen von KOTY zu analysieren. Ich habe noch nie eine morphologische Analyse durchgeführt, daher würde ich dies gerne als Studie durchführen.

Allgemeine Bewertung herunterladen

Holen Sie sich vorerst einen allgemeinen Überblick über Nokogiri von KOTY Deferred Wiki. Es ist von 2005 bis 2018, nicht wahr? Übrigens werden Handys und Eroge durchgehen. [^ 2] Die URL der allgemeinen Überprüfung eines jeden Jahres lautet

https://koty.wiki/(ANZEIGE)GC

Da es vereinheitlicht ist, können Sie es leicht bekommen. Besonders hervorzuheben ist

Da die Beschreibungsmethode in der HTML-Quelle des allgemeinen Kommentars in jeder der drei Perioden unterschiedlich ist, frage ich mich, ob diese drei Muster unterschiedlich verarbeitet wurden. Klicken Sie hier, um den Code für Nokogiri zu erhalten

KOTY_Scrape.rb


require 'nokogiri'
require 'open-uri'
if ! Dir::exist?("KOTY allgemeiner Kommentar") #Ordner zum Speichern erstellen
    Dir::mkdir("KOTY allgemeiner Kommentar")
end
for year in 2005..2018 do #Initialisieren Sie die Textdatei im Ordner
    File.open("KOTY allgemeiner Kommentar/#{year}Jahr.txt","w") do |text|
    end
end
for year in 2005..2009 do #Das p-Element im Körper ist der Körper, und br liegt nicht zwischen p und p
    sleep 1
    doc = Nokogiri::HTML(URI.open("https://koty.wiki/#{year}GC"))
    doc.xpath("//div[@id='body']//p").each do |paragraph|
        File.open("KOTY allgemeiner Kommentar/#{year}Jahr.txt","a") do |text|
            text.puts paragraph.inner_text
        end
    end
end
for year in 2010..2011 do #Es gibt keine Unterbrechung in der HTML-Quelle, nur die Unterbrechung des br-Tags
    sleep 1
    doc = Nokogiri::HTML(URI.open("https://koty.wiki/#{year}GC"))
    comment = doc.xpath("//p[@class='aapro']")
    comment.search('br').each do |br|
        br.replace("\n")
    end
    File.open("KOTY allgemeiner Kommentar/#{year}Jahr.txt","a") do |text|
        text.puts comment.inner_text
    end
end
for year in 2011..2018 do #Beschrieben im blockquote-Element
    sleep 1
    doc = Nokogiri::HTML(URI.open("https://koty.wiki/#{year}GC"))
    File.open("KOTY allgemeiner Kommentar/#{year}Jahr.txt","a") do |text|
        text.puts doc.xpath("//blockquote").inner_text
    end
end

Ich hab es jetzt. So was image.png

Wenn man es so betrachtet, scheint es, dass die Dateigröße mit jedem Jahr zunimmt.

Das Problem hier

Ah, ich hatte ursprünglich vor, die Morphologie unter Windows64 / Ruby / Mecab zu analysieren. ** "Win64" ** und ** "Ruby" ** und ** "Mecab" ** ist ... Es ist sehr mühsam, eine Umgebung aufzubauen.

Nein, ich habe es ungefähr zweimal versucht Ich habe verschiedene existierende Artikel gelesen, aber ... ** Die schlechten sind schlecht ** Deshalb ...

** Benutze Python **

Umgebung

Nun ja, bauen Sie die Umwelt Die Verwendung von Mecab unter Python / Win64 ist ziemlich einfach und schnell

  1. Laden Sie das Streu-Build-Installationsprogramm für Win64 von hier herunter und installieren Sie es mit UTF-8.
  2. Holen Sie sich die Mecab-Bibliothek unter Bezugnahme auf diesen Artikel.

nur das Sie müssen die DLL in der Hölle nicht neu schreiben, ich bin sogar beeindruckt, das ist destruktiv, es zerstört das Konzept, es ist ein Paradigmenwechsel.

Ich habe viel gespielt

Lassen Sie uns vorerst den Gesamtüberblick über 2018 nach Morphologie analysieren und mit WordCloud ausgeben. Ich werde mit dem Gefühl gehen, nur "Substantive" zu extrahieren.

MecabKOTY.py


import MeCab
from wordcloud import WordCloud
t = MeCab.Tagger()

with open('KOTY allgemeiner Kommentar/2018.txt',encoding="UTF-8") as txt_file:
    text = txt_file.read()

nodes = t.parseToNode(text)
s = []

while nodes:
    if nodes.feature[:2] in ['Substantiv']:
        s.append(nodes.surface)
    nodes = nodes.next

wc = WordCloud(width=720, height=480, background_color="black",stopwords=
    {"Dies", "Zum", "Es", "Yo", "Ding", "Ding"}
    , font_path="C:\Windows\Fonts\HGRGE.TTC")
wc.generate(" ".join(s))
wc.to_file('KOTY_wc.png')

image.png Ahh, es fühlt sich gut an, es fühlt sich gut an Es ist wie eine morphologische Analyse! !! !! Wenn dies zum Beispiel für 2007 war image.png ** "Szenario" ** fällt so auf,

Wenn es von 2014 war image.png ** "Fahrer" ** Wörter fallen auf. Der allgemeine Kommentar von KOTY hat auch jedes Jahr seine eigene Individualität.

Lassen Sie uns als Nächstes alle Gesamtbewertungen zusammen analysieren.

MecabKOTY.py


import MeCab
from wordcloud import WordCloud
t = MeCab.Tagger()
s = []

for y in range(2005,2018):
    with open(f'KOTY allgemeiner Kommentar/{y}Jahr.txt',encoding="UTF-8") as txt_file:
        text = txt_file.read()
    nodes = t.parseToNode(text)
    while nodes:
        if nodes.feature[:2] == "Substantiv":
            s.append(nodes.surface)
        nodes = nodes.next

wc = WordCloud(width=720, height=480, background_color="black",stopwords=
    {"Dies", "Zum", "Es", "Yo", "Ding", "Ding"}
    , font_path="C:\Windows\Fonts\HGRGE.TTC")
wc.generate(" ".join(s))
wc.to_file('KOTY_wc.png')

Es wird so sein. image.png Es ist ein Meisterwerk. ** "Spieler" **, ** "Spiel" **, ** "Fickspiel" ** Es fühlt sich an wie ein Symbol von KOTY ~~~~~

Was ist nun, wenn wir dies weiter eingrenzen und versuchen, nur die richtige Nomenklatur zu extrahieren?

MecabKOTY.py


import MeCab
from wordcloud import WordCloud
t = MeCab.Tagger()
s = []

for y in range(2005,2018):
    with open(f'KOTY allgemeiner Kommentar/{y}Jahr.txt',encoding="UTF-8") as txt_file:
        text = txt_file.read()
    nodes = t.parseToNode(text)
    while nodes:
        if nodes.feature[:7] == "Substantiv,固有Substantiv":
            s.append(nodes.surface)
        nodes = nodes.next

wc = WordCloud(width=720, height=480, background_color="black"
    , font_path="C:\Windows\Fonts\HGRGE.TTC")
wc.generate(" ".join(s))
wc.to_file('KOTY_wc.png')

image.png Es ist Geschichte. ** Sie können die Geschichte fühlen. ** ** **

Übrigens habe ich mich gefragt, ob ich ** "Fucking Game Maker" ** extrahieren könnte, indem ich es weiter eingrenze und auf ** "Organisationsname" ** beschränke.

image.png ** "Es ist keine Organisation" ** Ich hörte auf, weil viele Dinge gemischt waren. Es könnte cool sein, wenn Sie das Wörterbuch ändern.

Als nächstes ändern wir den Geschmack ein wenig. ** Aktivieren Sie "Änderungen in der Häufigkeit bestimmter Wörter pro Jahr" **. Das erste, wonach man suchen muss, ist ... nun, machen wir es zu einem ** "Bug" **. Ich werde mit matplotlib ein Liniendiagramm zeichnen.

KOTYPlot.py


import MeCab
from wordcloud import WordCloud
import matplotlib.pyplot as plt
t = MeCab.Tagger()
c = []
for y in range(2005, 2018):
    c.append(0)
    with open(f'KOTY allgemeiner Kommentar/{y}Jahr.txt',encoding="UTF-8") as txt_file:
        text = txt_file.read()
    nodes = t.parseToNode(text)
    while nodes:
        if nodes.surface == "Fehler":
            c[-1] += 1
        nodes = nodes.next

plt.plot(range(2005, 2018), c, linewidth=4)
plt.xlabel("Year", fontsize = 24)
plt.ylabel("Occurrence:Bug", fontsize=24)
plt.grid(True)
plt.savefig("KOTYgraph.png ")

image.png zu gruselig. 2015 wird großartig. Wahrscheinlich das Ergebnis der Kollision der beiden großen Käfertürme "Ajinoko" und "Tetaru". Es ist auch in den Auswirkungen verborgen, aber der Zustand von 2013 ohne ** "Bugs" ist erstaunlich. Sicherlich gab es 2013 einen Wettbewerb um Scheiße in eine andere Richtung als Bugs.

Das nächste Wort, um ein Diagramm zu erstellen, ist ... ** "Jahresende" **.

image.png

!?!?!??!??!? Ich fühle viel Regelmäßigkeit! ?? !! ?? Es ist ein Jet-Coaster-Typ, nicht wahr? Es ist ein wenig, sofort aufzusteigen Das Gefühl, dass es Zeit braucht Ich frage mich, ob das Auftreten von "Monstern zum Jahresende" eine gewisse Periodizität aufweist.

Zusammenfassung

es hat Spaß gemacht

[^ 1]: 2/5 Channel Abkürzung für "Fucking Game of the Year", der Thread, der "das verdammteste Spiel des Jahres" entscheidet. [^ 2]: Der Grund für die Verwendung mehrerer Sätze für ein Jahr ist, dass es ein wenig falsch ist und dass wir minderjährig sind.

Recommended Posts

Ich habe versucht, den allgemeinen Kommentar des verdammten Spiels des Jahres morphologisch zu analysieren
Ich habe versucht, die Wetterkarte einer Clusteranalyse zu unterziehen
Ich habe versucht, morphologische Analyse und Wortvektorisierung
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Ich habe die Pivot-Table-Funktion von Pandas ausprobiert
Ich habe zuerst die SARS-Analyse vor dem Corona-Virus versucht
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, die Werbung für die Raubkopien-Website zu kratzen
Ich habe die einfachste Methode zur Klassifizierung von Dokumenten mit mehreren Etiketten ausprobiert
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ich habe versucht, das Lachproblem mit Keras zu erkennen.
Verwenden Sie die Swagger-Benutzeroberfläche. Wenn Sie einen Swagger-UI-ähnlichen Stil wünschen, kopieren Sie einfach die gesamte Datei unter / dist unter https://github.com/swagger-api/swagger-ui. Danach schreiben Sie einfach hier in index.html die URL der yml-Datei um. Wenn Sie der Meinung sind, dass Sie @ApiModel oder @ApiModelProperty nicht finden können, wurden übrigens anscheinend alle Anmerkungen zur Schemadefinition in @Schema integriert. Emotionsanalyse mit Java, Swagger, OpenAPI, Micronaut Natural Language Processing! Ich habe versucht, die Bewertung anhand des Überprüfungstextes vorherzusagen
Ich habe die Changefinder-Bibliothek ausprobiert!
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich habe ein wenig versucht, das Verhalten der Zip-Funktion
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Ich habe den Chat von YouTube Live angezeigt und versucht zu spielen
[Linux] Ich habe versucht, die Ressourcenbestätigungsbefehle zusammenzufassen
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich habe versucht, das SD-Boot-Image von LicheePi Nano zu erstellen
Ich habe mir die Metainformationen von BigQuery angesehen und versucht, sie zu verwenden
Ich habe versucht, in 3 Jahren 5 Muster der Analysebasis zu erstellen
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich habe versucht, den DNN-Teil von OpenPose mit Chainer-CPU auszuführen
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Ich habe versucht, die häufig verwendete Implementierungsmethode von pytest-mock zusammenzufassen
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe versucht, den allgemeinen Zustand der VTuber-Kanalbetrachter zu visualisieren
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe die Naro-Roman-API 2 ausprobiert
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Überprüfung der Grundlagen von Python (FizzBuzz)
Ich habe die neuartige API von Naruro ausprobiert
Ich habe mit Mecab gespielt (morphologische Analyse)!
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren