[PYTHON] Wrap-Analyse Teil1 (Datenaufbereitung)

Zweck

Durch die Analyse der Texte des eigentlichen Rapper gibt es kein bestimmtes Endziel, um etwas zu finden. Ich werde mich darauf konzentrieren, welche Art von Vokalsequenz der Text hat, was ich in "Ich möchte mit dem Reim umgehen" gemacht habe. Die vorbereiteten Daten beziehen sich auf 8 Songs (ca. 90 Songs) einer Gruppe mit zwei kontrastierenden Rapper. Es gibt einen Unterschied zwischen ausgeflipptem Flow (gut im Anlegen von Sound ?!) Und hartem Reim (schwer zu erklären), aber ich hoffe herauszufinden, wie man auf den Reim tritt, die Anzahl der Auftritte und die Vokale, die Sie mögen. .. ~~ "123" wird als "Hi-Fumi" oder "Andu Troyes" gelesen, daher habe ich die Daten in diesem Sinne von Hand vorbereitet ~~

__ Textdaten an DataFrame __

from pykakasi import kakasi
import re
import pandas as pd
import itertools

with open("./data/yoshi.txt","r", encoding="utf-8") as f:
    data = f.read()

#Wortliste. Ein 2- bis 4-stelliges Wort, das nur mit Vokalen erstellt werden kann. 775 Typen
word_list2 = [i[0]+i[1] for i in itertools.product("aiueo", repeat=2)]
word_list3 = [i[0]+i[1]+i[2] for i in itertools.product("aiueo", repeat=3)]
word_list4 = [i[0]+i[1]+i[2]+i[3] for i in itertools.product("aiueo", repeat=4)]
word_list = word_list2 + word_list3 + word_list4
#Nacheinander in Songs unterteilt.{Nummer:Liste der Texte, die durch Leerzeichen und Zeilenumbrüche in voller Breite getrennt sind}
text_data = data.split("!")
text_data_dic = {k:re.split("\u3000|\n", v) for k,v in enumerate(text_data)}

kakasi = kakasi()
kakasi.setMode('J', 'a')
kakasi.setMode('H', 'a')
kakasi.setMode('K', 'a')
conv = kakasi.getConverter()

#{Nummer:Liste in Vokale konvertiert}
vowel_text_dic = {}
for k,v in text_data_dic.items(): 
    vowel_text_dic[k] = [conv.do(d) for d in v]
for k,v in vowel_text_dic.items():
    vowel_text_dic[k] = [re.sub(r"[^aeiou]+","",d) for d in v]

#Spaltenname"aa"Der Wert ist die Anzahl der Auftritte. Zähle den Ausdruck für ein Lied
count_dic = {}
temp1 = []
temp2 = 0
for word in word_list:
    for k,v in vowel_text_dic.items():
        for vowel in v:
            temp2 += vowel.count(word)
        temp1.append(temp2)
        temp2 = 0
        vowel_text_len = 0
    count_dic[word] = temp1
    temp1 = []
    
df = pd.DataFrame(count_dic)
df["label"] = 0
df.to_csv("./data/yoshi.csv", index=False)
aa ai au ooou oooe oooo label
0 4 9 7 1 1 0 0
1 21 18 7 1 1 2 0
2 8 18 18 1 0 0 0
3 19 26 23 0 0 0 0
88 12 14 2 0 0 0 0
89 17 17 10 1 0 1 0

Für jeden Wrapper gibt es zwei vorbereitete Textdateien. Im Text gibt "!" Den Teil an, in dem sich das Lied ändert, und im Text gibt es gemäß der Textkarte "Leerzeichen in voller Breite, Zeilenumbruch". Ich versuche, die Vokale nicht durchgehend zu machen. Die andere Textdatei wurde zur leichteren Identifizierung als df ["label"] = 1 gespeichert.

__ Sehen Sie sich den Inhalt der Daten an __

import pandas as pd

df1 = pd.read_csv("./data/pochomkin.csv")
df2 = pd.read_csv("./data/yoshi.csv")

#Konzentrieren Sie sich auf den Durchschnittswert des zweistelligen Teils
df1_2vowel = df1.describe().iloc[:, :25]
df1_2vowel = df1_2vowel.loc["mean", :]
print(df1_2vowel.sort_values(ascending=False))
df2_2vowel = df2.describe().iloc[:, :25]
df2_2vowel = df2_2vowel.loc["mean", :]
print(df2_2vowel.sort_values(ascending=False))

Es gibt 776 Spalten, also schauen wir sie uns separat an. Ich habe überprüft, was mit dem mit dem höchsten Durchschnittswert für jede Anzahl von Zeichen in der Spalte passiert ist (iloc [:, 25: 150] für 3 Zeichen, 125 Typen von 5 × 5 × 5 und iloc [:, 150: 775] für 4 Zeichen. ]). Bei 2 Zeichen stimmten die oberen 4 von df1 und df2 mit "ai, ia, ou, aa" überein, und bei 3 Zeichen stimmten die oberen 2 "aia, aai" überein. In allen Fällen war der Durchschnittswert von df2 höher.

#Fassen Sie jede Spaltenrichtung zusammen und erhalten Sie den Wert.(Zähle die Nummer in ungefähr 90 Songs)
value_count_1 = df1.sum(axis=0).values
value_count_2 = df2.sum(axis=0).values
#Ein Bool-Wert, der weniger als zehnmal zählt. Weniger als 10 ist wahr
bool_1 = value_count_1 < 10
bool_2 = value_count_2 < 10
#Drucken Sie eine Folge von Vokalen, die auf beiden weniger als zehnmal zählen
print(df1.columns[bool_1 * bool_2])

Bei der Untersuchung der Reihenfolge seltener Vokale in beiden Daten waren 37 anwendbar, von denen die meisten 4-stellige Vokale einschließlich "ee" waren.

__ Zusammenfassung und zukünftige Richtlinien __

Das Ergebnis der Suche nach einer Übereinstimmung oben kann sein, dass es auf Japanisch viele Vokalsequenzen gibt oder dass es dem Rapper gefällt. Aufgrund des Gruppennamens "Ai Ranger" kann er auch häufig in den vorbereiteten Daten vorkommen. Ich habe erwartet, dass "aa" am häufigsten vorkommt, da es viele Wörter von "aaaa" gibt, wie "schlampige, unterschiedliche Körper" in der Reihenfolge "aa", aber unterschiedliche Ergebnisse erhalten werden. Es ist interessant. Unabhängig davon, wie oft die Texte des Rapper als Daten verwendet werden, beziehen sich nicht alle Vokale auf den Reim, daher kann ich nichts sagen. Eine andere Sache, die ich erwartet hatte, war, dass "jeder Rapper eine Lieblingsfolge von Vokalen hat", aber der Unterschied in den Eigenschaften ist nicht so bemerkenswert wie ich erwartet hatte. Warum also nicht darauf konzentrieren? Es ist wie es ist. Was ich diesmal sagen kann ist, dass der Wrapper auf der df2-Seite (harter Reim) häufiger dieselbe Vokalsequenz zu haben scheint als der Wrapper auf der df1. Dies ist wie erwartet. Es ist auch eine neue Entdeckung, dass die Häufigkeit von "ee" niedrig ist. Es kann einen Grund für den Wrapper geben, dies zu vermeiden, z. B. Schwierigkeiten beim Aufnehmen des Tons. Wenn Sie die Daten in zwei Teile teilen, können Sie sie möglicherweise klassifizieren. Es war ein Gefühl, aber es scheint nicht so einfach zu sein. Ich werde mir die Daten in Zukunft etwas genauer ansehen, um festzustellen, ob es einen Unterschied zwischen den beiden gibt.

Recommended Posts

Wrap-Analyse Teil1 (Datenaufbereitung)
Mehrdimensionale Datenanalysebibliothek xarray Teil 2
Datenanalyse Titanic 2
Datenanalyse Titanic 1
Datenanalyse Titanic 3
Vorbereitung auf die von Python 3 Engineer zertifizierte Datenanalyseprüfung
Verarbeitung und Beurteilung des Datenanalyseplans (Teil 1)
Verarbeitung und Beurteilung des Datenanalyseplans (Teil 2)
Datenanalyse mit Python 2
Kaggle ~ Gehäuseanalyse Part ~ Teil1
Datenanalyse Übersicht Python
Python-Datenanalysevorlage
Datenanalyse mit Python
Mein Python-Datenanalyse-Container
Mehrdimensionale Datenanalysebibliothek xarray
Python für die Datenanalyse Kapitel 4
[Python] Hinweise zur Datenanalyse
Zeitreihenanalyse Teil 4 VAR
Zeitreihenanalyse Teil 3 Prognose
Python für die Datenanalyse Kapitel 2
Zeitreihenanalyse Teil 1 Autokorrelation
Datenanalyse mit Python-Pandas
Tipps und Vorsichtsmaßnahmen bei der Datenanalyse
Python für die Datenanalyse Kapitel 3
Twitter-Daten analysieren | Trendanalyse
Erste Satellitendatenanalyse von Tellus
Anwendung von Python: Datenbereinigung Teil 1: Python-Notation
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Python-Anwendung: Datenverarbeitung # 3: Datenformat
Vorverarbeitungsvorlage für die Datenanalyse (Python)
November 2020 Version Datenanalyse Test bestanden Erfahrung
Datenanalyse zur Verbesserung von POG 3 ~ Regressionsanalyse ~
Japanische Analyseverarbeitung mit Janome Teil1
Empfehlung zur Datenanalyse mit MessagePack
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Python-Anwendung: Datenvisualisierung Teil 1: Grundlegend
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Datenverarbeitung 2 Analyse verschiedener Datenformate