Ich werde mit der morphologischen Analyse spielen.
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.
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
Wenn man es so betrachtet, scheint es, dass die Dateigröße mit jedem Jahr zunimmt.
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 **
Nun ja, bauen Sie die Umwelt Die Verwendung von Mecab unter Python / Win64 ist ziemlich einfach und schnell
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.
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')
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 ** "Szenario" ** fällt so auf,
Wenn es von 2014 war ** "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. 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')
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.
** "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 ")
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" **.
!?!?!??!??!? 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.
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