Es gibt viele Lieder von Herrn Masashi Sada (Massan), die einen bestimmten Bereich oder Ort abdecken.
Alle sind wundervolle Lieder (^ o ^) Insbesondere ist Hiume ein Super-Meisterwerk, das jedes Mal, wenn Sie zum Taishofu Tenmangu-Schrein gehen, im Gehirn regeneriert wird.
Welche Region wird oft in Ma-sans Liedern erwähnt, die diese enthalten? Immerhin Nagasaki? Tokio? Oder ...? Um das Rätsel zu lösen, nahm ich die Tastatur und schrieb den Code.
Übrigens ist "From the North Country" ein sehr berühmter Ort, aber da er bisher schon oft im Adventskalender erwähnt wurde, gibt es keine Texte, so dass er diesmal nicht in den Rahmen der Umfrage fällt.
Ich habe die Lyrics-Site abgekratzt. Aus urheberrechtlichen Gründen wird es hier nicht aufgeführt.
Ich habe Pythons morphologische Analysebibliothek janome für die Teilwortzerlegung verwendet.
tokenize_sample.py
#!/usr/bin/env python
# -* encoding: utf-8 -*
from janome.tokenizer import Tokenizer
def main():
for token in Tokenizer().tokenize('Drei rote Brücken über den Shinji-Teich'):
print(token)
if __name__ == '__main__':
main()
Wenn Sie Code wie oben schreiben und ausführen ...
Shinjiike Substantiv,Allgemeines,*,*,*,*,Shinji-Teich,Shinjiike,Shinjiike
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.
Ein solches Verb,Unabhängigkeit,*,*,Fünf Schritte, La Linie,Grundform,Nehmen,Kakar,Kakar
Drei Nomenklatur,Allgemeines,*,*,*,*,drei,Mitz,Mitz
Hilfswörter,Fallassistent,Allgemeines,*,*,*,von,Nein,Nein
Rotes Adjektiv,Unabhängigkeit,*,*,Apokalypse,Grundform,rot,Akai,Akai
Brückennomen,Allgemeines,*,*,*,*,Brücke,Hashi,Hashi
Oh! Shinji Pond wird richtig erkannt! !! Und die Spannung steigt.
Den detaillierten Mechanismus und die Geschichte von Janome finden Sie auf der Folie "Pyconjp2015 - Morphologische Analyse, die mit Python erstellt wurde". Bitte gib mir. (Du wurdest 2015 geboren! Danke!)
Janome analysiert die vorgekratzte Textgruppe und greift das Wort auf, das "Region" entspricht. Da ich die Anzahl der Erscheinungen von Wörtern in der Dichte der Wärmekarte widerspiegeln möchte, habe ich auch die Wörter gleichzeitig gezählt.
def count_place():
place_count_dict = {}
with open('sada_lyrics.csv','r') as lyrics:
reader = csv.reader(lyrics)
for row in reader:
t = Tokenizer(udic='sada_dict.csv', udic_enc='utf8')
for token in t.tokenize(row[1]):
if 'Substantiv,固有Substantiv,Bereich' in token.part_of_speech:
place_name = token.surface
if place_name in place_count_dict:
place_count_dict[place_name] = place_count_dict[place_name]+1
else:
place_count_dict[place_name] = 1
return place_count_dict
Sie können auch benutzerdefinierte Wörterbücher lesen. Gemäß der Janome-Dokumentation entspricht das Wörterbuchformat dem von Mecab.
sada_dict.csv
Yushima Basilika,1288,1288,5000,Substantiv,固有Substantiv,Allgemeines,*,*,*,Yushima Basilika,Yushima Seidou,Yushima Seidou
Himmelsbaum,1288,1288,5001,Substantiv,固有Substantiv,Allgemeines,*,*,*,Himmelsbaum,Himmelsbaum,Himmelsbaum
Ein Beispiel für das Janome-Dokument ist "Tokyo Sky Tree". Es wird jedoch empfohlen, sich bei "Sky Tree" zu registrieren, da es in "Kasutira" als "Sky Tree" gesungen wird, was jeder kennt.
Eigentlich wollte ich das Ergebnis der Identifizierung des Ortes der richtigen Nomenklatur in der Wärmekarte widerspiegeln, aber ich gab aus Zeitgründen auf. Ich benutze also nicht einmal ein Wörterbuch. Es tut mir leid, das zu erwähnen.
Für die Geokodierung habe ich auch die Python-Bibliothek googlemaps verwendet.
Da Sie die Google Maps-API verwenden, müssen Sie den API-Schlüssel angeben. Die Erfassungsmethode ist in googlemaps GitHub beschrieben.
import googlemaps
def geocode(place_name):
gmaps = googlemaps.Client(key='write your API key')
geocode_result = gmaps.geocode(place_name)
coord = geocode_result[0]['geometry']['viewport']['northeast']
return coord['lat'], coord['lng']
Das Folgende ist der Code, der die Arbeit bis zu diesem Punkt verbindet (Zerlegen der Texte in Teile - Extrahieren der Bereichsnamen-Geokodierung).
sada_place_geocoder.py
#!/usr/bin/env python
# -* encoding: utf-8 -*
from janome.tokenizer import Tokenizer
import csv
import googlemaps
def main():
writer = csv.writer(open('sada_places.csv','w'), delimiter=',')
place_count_dict = count_place()
gmaps = googlemaps.Client(key='write your API key')
for place_name, place_count in place_count_dict.items():
lat, lon = geocode(gmaps, place_name)
writer.writerow([place_name, place_count, lat, lon])
def count_place():
place_count_dict = {}
with open('sada_lyrics.csv','r') as lyrics:
reader = csv.reader(lyrics)
for row in reader:
t = Tokenizer()
for token in t.tokenize(row[1]):
if 'Substantiv,固有Substantiv,Bereich' in token.part_of_speech:
place_name = token.surface
if place_name in place_count_dict:
place_count_dict[place_name] = place_count_dict[place_name]+1
else:
place_count_dict[place_name] = 1
return place_count_dict
def geocode(gmaps, place_name):
geocode_result = gmaps.geocode(place_name)
coord = geocode_result[0]['geometry']['viewport']['northeast']
return coord['lat'], coord['lng']
if __name__ == '__main__':
main()
Infolgedessen werden der Bereichsname, die Anzahl der Auftritte in den Texten, der Breitengrad und der Längengrad ausgegeben. Da ich kein benutzerdefiniertes Wörterbuch verwende, kann ich einige Mülldatensätze sehen, aber dieses Mal werde ich es ignorieren.
sada_places.csv
Amerika,1,49.38,-66.94
Bermuda,1,14.5192371802915,121.0361231302915
Akita,1,39.86527460000001,140.5154199
Kasugayama,1,37.1489639802915,138.2363259802915
Victoria,1,48.450518,-123.322346
Mimiya,1,36.4073904302915,136.4570957
Minase,1,34.8791869802915,135.6691649802915
Kyo,3,30.5403905,120.3877692
Frühling,1,33.8689809,130.8083576
Asuka,3,38.8972965,139.9375578
Tag,2,50.68819,5.675110099999999
Kamakura,2,35.3682478,139.5933376
Badehaus,1,34.93531738029149,135.7610285302915
Yamami,1,36.5698502,136.9701007
Jerusalem,1,31.8829601,35.2652869
West Kyo,1,34.67190798029149,135.7844679802915
Zusatz,1,36.5431863,-6.255334599999999
Berlin,1,52.6754542,13.7611176
Kiraku,1,35.1904253,136.7319704
Mitsuke,3,37.5933274,139.0009869
Nagasaki,5,35.7377658,139.6976565
Urashima,1,35.4839466,139.6447166
Atago,1,35.9737504,139.6042941
glücklich,1,34.4654479,135.5854033
Akishino,1,34.7155978,135.7837222
Heiankyo,1,44.5883529,127.1930004
Hongkong,1,14.4904672802915,121.0242180302915
Karuizawa,2,36.4240846,138.6571307
Han,2,32.555258,114.2922103
Inasa,1,32.7592694,129.8647033
Kyoto,1,35.0542,135.8236
Musashi Koganei,1,35.70241118029149,139.5080892802915
Hakuhagi,1,38.2529733,140.9109412
Chino,3,34.047811,-117.5995851
Unter dem Hang,1,35.3120498,139.5356368
Yukon,1,69.646498,-123.8009179
Zuhause,1,34.0886418,132.9547384
Nanjing,1,32.3940135,119.050169
Frankreich,3,51.0891658,9.5597934
Echtes Reisfeld,1,35.6882069802915,140.0695889802915
Herzlich willkommen,1,37.9205189,112.7839926
Gutes Geld,1,37.2102144,139.9250478
Yabu,1,35.3875492,140.1588221
Kano,1,35.2016331,135.4969237
Ebi Name,1,35.4774536,139.4364727
Renge,5,48.02912,8.027220699999999
Magellan,1,31.8199301,76.95342
Michinoku,1,35.5030142302915,139.6870448302915
Pearl Harbor,1,21.3885713,-157.9335744
Kai,1,34.6863148,135.1933421
Harumi,1,35.6634906,139.7897775
Japan,2,34.6687571,135.5100311
Sofia,2,42.7877752,23.4569049
Alaska,4,71.3868712,-129.9945562
yangtze Fluss,1,36.4361024802915,139.8532846302915
Kitamae,1,26.3027021,127.7615069
Tsugaru,1,35.0117177302915,135.7573022302915
Ginza,1,35.6760255,139.7724941
Tau,1,51.2964846,22.6735312
Vereinigte Staaten,1,49.38,-66.94
Casablanca,2,33.6486015,-7.4582757
Tokio,31,35.817813,139.910202
Apotheke,1,35.0155830302915,135.7545184802915
Weit im Norden,1,12.9797045,15.683687
Buddha Lan West,1,35.17525588029149,139.6558066802915
Gojo,1,39.5593820302915,115.7611693
Bagdad,2,33.4350586,44.5558261
Kanzeonji-Tempel,1,33.5222913,130.5254343
Akasaka,1,35.6782744,139.7459391
Buddha,4,34.9489952,136.9632495
New York,1,40.91525559999999,-73.70027209999999
Nishiki,1,32.2516958,130.9134777
Tigris,1,-15.4044999,-42.8735213
Kukata,1,35.10910000000001,136.9854947
Wellen,1,33.9145777,130.8043569
Yushima,2,35.711327,139.7724702
Hirajoyama,1,34.71184798029149,135.8116589802915
Koshien,1,34.7234607,135.3633836
Shinjuku,2,35.7298963,139.7451654
Kasumi,1,24.0234098,82.02101979999999
Fuji,1,35.3539032,138.8118555
Curry,1,50.9818821,1.9320691
Nagasaki,24,32.9686469,129.9938174
Minamiyamat,2,32.7361422,129.8708733
Kuchiyasu,1,43.015163,140.9243102
Gasse,1,36.1243706,139.5655411
Sakamoto,1,37.9298369802915,140.9141139802915
Shijo,1,35.0044451802915,135.7580809302915
Mittelmeer-,1,45.7927967,36.215244
Akebono,1,26.2435843,127.6904124
Kagura,1,34.6626033,135.1513682
Azumi,2,36.3649943,137.8106765
Hiroshima,1,31.9163645,131.4305945
Mt.,1,29.7169085,103.6231299
Yokohama,1,35.5113,139.674
Ueno,1,36.1325774,138.8291853
Chile,6,-17.4983293,-66.4169643
Yoga,1,35.62797998029149,139.6354899802915
Kirimanjaro,2,-3.0562826,37.3716347
Gebratene Federn,1,35.1848028,136.9673238
Hiroshima,6,34.4426,132.4865
Nairobi,1,-1.164744,37.0493746
Tanifu,1,35.5452879,136.6135764
Nerima,2,35.779946,139.6811359
Namba,1,43.648665,-116.48121
Asakusa,1,35.7233639,139.8055923
Hochdrücken,2,35.71155898029149,139.8137769802915
Shinsaibashi,2,30.6801709802915,114.2062109802915
Japan,9,45.5227719,145.8175503
Hauptstadt,1,36.0447089,139.3743599
Rokuto,1,36.0028345,140.1105419
Baumwurzel,2,36.9430004,137.4747414
Tateyama,1,36.5847934,137.6343407
Arakawa,1,36.1415564,139.8589857
Deutschland,5,41.2296285,141.0143767
Kimikage,1,34.7205324,135.1428907
Nara,3,34.70489999999999,135.8384
Shanghai,2,31.6688967,122.1137989
Yunnan,4,29.2233272,106.1977228
Ja,1,36.7995957,138.4063989
Gion,1,34.4529231,132.4693298
Shinano,2,36.8707572,138.2803909
Higashiyama,1,35.010837,135.7914226
Yotsuya,2,35.6726745,139.4551008
Nagano,1,36.835842,138.3190722
Pflanzen,1,33.6152803,130.5166492
Da die Koordinaten und die Anzahl der Auftritte für jede Region in sada_places.csv aufgezeichnet sind, verwenden Sie diese Informationen, um sie in der Heatmap wiederzugeben.
Da ich die Google Maps-API für die Geokodierung verwendet habe, habe ich auch versucht, die Google Maps-API für Heatmaps zu verwenden.
Ich habe sowohl den Stil als auch das Skript in HTML geschrieben, aber die Menge an Code ist so.
<!DOCTYPE html>
<html>
<head>
<style>
#map {
width: 1200px;
height: 600px;
}
</style>
<script
src="https://maps.googleapis.com/maps/api/js?key='write your API key'&libraries=geometry,visualization">
</script>
<script>
function initialize() {
var mapCanvas = document.getElementById('map');
var mapOptions = {
center: new google.maps.LatLng(36.83566824724438,138.372802734375),
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(mapCanvas, mapOptions)
var heatmapData = [
//Objekte werden so oft wie die Anzahl der Koordinaten aufgereiht. Weggelassen, weil es lang ist.
//Es ist definitiv besser, eine externe Datei erstellen zu können
{ weight : 2 , location : new google.maps.LatLng(32.7361422,129.8708733) },
{ weight : 4 , location : new google.maps.LatLng(71.3868712,-129.9945562) },
{ weight : 3 , location : new google.maps.LatLng(37.5933274,139.0009869) }
]
var heatmap = new google.maps.visualization.HeatmapLayer({
data: heatmapData,
radius: 50,
map: map
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map"></div>
</body>
</html>
Referenzierte Seite
Wenn man die erwarteten Ergebnisse betrachtet, sind Tokio und Nagasaki, die mit Masan verwandt sind, die hellsten. Hiroshima in "Hiroshima no Sora" und Kyoto / Nara in "Yesterday / Kyo / Nara, Asuka / Tomorrow" und "Shujikai" werden ebenfalls heller.
Als ich mich fragte: "Warum ist die obere rechte Ecke von Hokkaido heller?", War das Geokodierungsergebnis von "Japan" hier ...
Wenn Sie den Zoom ziehen und auf die Weltkarte schauen, können Sie sehen, dass viele andere Gebiete als Japan gesungen werden. Herr Masa, der ein großer Veteran mit 42 Jahren Sängergeschichte sein sollte, eine schreckliche globale Humanressource ...
Der weiße Schnee von Kirimanjaro in "Lion Standing in the Wind" bringt mich jedes Mal zum Weinen, wenn ich einen Live-Song höre Das Alaska, das in "Aurora" und "Twilight of the White Nights" mit dem Thema eines echten Fotografen zu sehen ist, ist ebenfalls schwach gefärbt.
Es ist ein bisschen abseits des Themas, aber wenn Sie "Aurora" und "Twilight of the White Nights" hören, während Sie im Winter den Nachthimmel beobachten, werden Sie sehr weinen. Wenn Sie noch nie davon gehört haben, nutzen Sie diese Gelegenheit, um es zu meistern. "Aurora" und "Twilight of the White Nights" - Masashi Sada, Mitsuho Agishi und Michio Hoshino
In Frankreich und Deutschland ist es heller, aber es scheint heller als erwartet. Dies lag daran, dass die Wörter "Buddha" und "Deutschland" als Regionen interpretiert wurden, als die Teile zerlegt wurden. Ich denke, wir können Verbesserungen in der Genauigkeit erwarten, indem wir Wörterbücher hinzufügen.
Sadamasashi x IT-Adventskalender Der Veranstalter schrieb am 4. Tag von "Einfache Zerlegung von Sadamasashi mit Kuromoji" Es ist peinlich, weil einige der Inhalte und das Ergebnis der Heatmap dünn sind.
Ich möchte es tatsächlich versuchen und den Himmelsbaum und Shinjiike auf dem Display wiedergeben. Einige Geokodierungsergebnisse mit der Google Maps-API sind "?". Nehmen Sie sich also Zeit, um sich vorzubereiten und erneut zu studieren. Ich wollte noch einmal versuchen, eine Heatmap zu erstellen.
Wenn Sie ein interessantes Ergebnis erhalten, möchte ich es als Rohstoff veröffentlichen ...