서던 vs TUBE 진정한 여름 노래 왕은 어느 쪽이다!? MeCab에서 가사 분석을 해 보았다
9859 단어 신인 프로그래머 응원Python3mecabHTML파이썬
소개
그런데, 알아차리면 올해도 8월 20일.
여름이 방금 시작되었다고 생각한다면 이제 끝을 말하려고합니다 ...
음, 직장인이기 때문에 여름 휴가와 상관 없습니다.
여름이라고 하면, 역시 여름 우타. 여름 노래를 듣고, 적어도 기분만으로도 여름방학 기분을 맛보고 싶네요…
도완고 씨의 이 기사에 의하면, 바다의 어울리는 아티스트의 투표로, 1위 서던 올 스타즈 2위 TUBE와, 3위를 크게 떼어내어 벌집의 데드히트를 펼치고 있는 모양입니다.
서던은 「TSUNAMI」 「한여름의 과실」, TUBE는 「시즌 인 더 선」 「아 여름 휴가」와 양자 모두 명곡 갖추어져, 이것은 둘 다 우열을 두기 어려운 느낌입니다.
그래서 이번에는 Python+Mecab에서 가사의 형태소 해석을 실시하고, 여름 워드 의 출현 횟수를 비교함으로써, 진정한 여름 노래 왕을 결정하고 싶습니다.
규칙
(TUBE가 약 450곡, 서던이 약 270곡으로 열림이 있기 때문에, 곡당 비교로 하고 있습니다.)
기법
(어떤 방법을 사용하여) 가사 텍스트 파일 수집
↓
모든 가사 파일을 결합하여 문자열로 만듭니다.
↓
Mecab에서 형태소 분석
↓
단어의 출현 횟수를 집계
↓
출현 횟수 비교
가사 파일의 취득에 대해서는, 센시티브인 부분이라고 생각하기 때문에, 이번은 자세한 것은 생략합니다.
MeCab로 형태소 해석을 하면, 단어의 나누기 및에 단어의 품사를 취득할 수 있으므로, 이번은 품사가 명사의 것에 짜서 집계하고 있습니다.
덧붙여 여름 워드에 대해서는, 완전히 나의 주관에 근거해 결정하고 있습니다.
결과
단어/가수
TUBE
남부
여름
462
118
바다
187
57
웨이브
124
66
summer
114
7
태양
110
38
beach
80
5
渚
43
20
한여름
42
17
모래
35
30
쇼난
32
8
웨이브
23
11
불꽃
22
6
surfin
21
0
썬샤인
18
15
해변
14
11
결과/가수
TUBE
남부
합계
1327년
409
노래 수
454
271
곡당
2.92
1.51
어떻게 봐도 TUBE가 더블 스코어로 압승입니다. 정말 고마워요.
서던은 「피스와 하이라이트」와 같이, 사회 문제 등 비교적 여러가지 테마를 거론하고 있는 인상입니다만, TUBE는 여름에 스테이터스 전 흔들고 있기 때문에, 그 근처가 영향해 이만큼의 차이가 붙었다 라고 생각합니다.
특징적인 부분으로서, TUBE는 「summer」 「beach」라고 하는 워드를 각각 100회 가까이 사용하고 있는 것에 대해, 서던은 10회도 사용하고 있지 않습니다. 서던은 직접적인 여름의 워드를 사용하지 않고, 여름의 정경이 떠오르는 가사를 쓰는 것이 좋을지도 모르겠네요.
Congratulations!
TUBE is king of summer.
코드
마지막으로 집계용 코드를 기재해 둡니다.
import csv
import MeCab
import glob
from collections import Counter
def make_word_list(all_lyric):
tagger = MeCab.Tagger('-Ochasen')
node = tagger.parseToNode(all_lyric)
word_list = []
while node:
if node.feature.split(",")[0] == "名詞":
word_list.append(node.surface.lower())
node = node.next
return word_list
def dict_to_csv(artist,histogram):
with open(artist + ".csv", "w") as csv_file:
writer = csv.writer(csv_file, lineterminator='\n')
header = ["単語", "回数"]
writer.writerow(header)
for key in histogram:
row = [key,histogram[key]]
writer.writerow(row)
csv_file.close()
if __name__ == "__main__":
# download_lyrics()
artists = ["サザン","TUBE"]
for artist in artists:
if artist == "サザン":
artist_folder_name = "southern_lyrics"
elif artist == "TUBE":
artist_folder_name = "tube_lyrics"
all_lyric = ""
for lyric_path in glob.glob(artist_folder_name + "/*"):
with open(lyric_path, "r",encoding="shift_jis") as f:
all_lyric += f.read()
word_list = make_word_list(all_lyric)
histogram = Counter(word_list)
dict_to_csv(artist,histogram)
Reference
이 문제에 관하여(서던 vs TUBE 진정한 여름 노래 왕은 어느 쪽이다!? MeCab에서 가사 분석을 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Sinhalite/items/f61a100e42496dc986a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
단어/가수
TUBE
남부
여름
462
118
바다
187
57
웨이브
124
66
summer
114
7
태양
110
38
beach
80
5
渚
43
20
한여름
42
17
모래
35
30
쇼난
32
8
웨이브
23
11
불꽃
22
6
surfin
21
0
썬샤인
18
15
해변
14
11
결과/가수
TUBE
남부
합계
1327년
409
노래 수
454
271
곡당
2.92
1.51
어떻게 봐도 TUBE가 더블 스코어로 압승입니다. 정말 고마워요.
서던은 「피스와 하이라이트」와 같이, 사회 문제 등 비교적 여러가지 테마를 거론하고 있는 인상입니다만, TUBE는 여름에 스테이터스 전 흔들고 있기 때문에, 그 근처가 영향해 이만큼의 차이가 붙었다 라고 생각합니다.
특징적인 부분으로서, TUBE는 「summer」 「beach」라고 하는 워드를 각각 100회 가까이 사용하고 있는 것에 대해, 서던은 10회도 사용하고 있지 않습니다. 서던은 직접적인 여름의 워드를 사용하지 않고, 여름의 정경이 떠오르는 가사를 쓰는 것이 좋을지도 모르겠네요.
Congratulations!
TUBE is king of summer.
코드
마지막으로 집계용 코드를 기재해 둡니다.
import csv
import MeCab
import glob
from collections import Counter
def make_word_list(all_lyric):
tagger = MeCab.Tagger('-Ochasen')
node = tagger.parseToNode(all_lyric)
word_list = []
while node:
if node.feature.split(",")[0] == "名詞":
word_list.append(node.surface.lower())
node = node.next
return word_list
def dict_to_csv(artist,histogram):
with open(artist + ".csv", "w") as csv_file:
writer = csv.writer(csv_file, lineterminator='\n')
header = ["単語", "回数"]
writer.writerow(header)
for key in histogram:
row = [key,histogram[key]]
writer.writerow(row)
csv_file.close()
if __name__ == "__main__":
# download_lyrics()
artists = ["サザン","TUBE"]
for artist in artists:
if artist == "サザン":
artist_folder_name = "southern_lyrics"
elif artist == "TUBE":
artist_folder_name = "tube_lyrics"
all_lyric = ""
for lyric_path in glob.glob(artist_folder_name + "/*"):
with open(lyric_path, "r",encoding="shift_jis") as f:
all_lyric += f.read()
word_list = make_word_list(all_lyric)
histogram = Counter(word_list)
dict_to_csv(artist,histogram)
Reference
이 문제에 관하여(서던 vs TUBE 진정한 여름 노래 왕은 어느 쪽이다!? MeCab에서 가사 분석을 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Sinhalite/items/f61a100e42496dc986a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import csv
import MeCab
import glob
from collections import Counter
def make_word_list(all_lyric):
tagger = MeCab.Tagger('-Ochasen')
node = tagger.parseToNode(all_lyric)
word_list = []
while node:
if node.feature.split(",")[0] == "名詞":
word_list.append(node.surface.lower())
node = node.next
return word_list
def dict_to_csv(artist,histogram):
with open(artist + ".csv", "w") as csv_file:
writer = csv.writer(csv_file, lineterminator='\n')
header = ["単語", "回数"]
writer.writerow(header)
for key in histogram:
row = [key,histogram[key]]
writer.writerow(row)
csv_file.close()
if __name__ == "__main__":
# download_lyrics()
artists = ["サザン","TUBE"]
for artist in artists:
if artist == "サザン":
artist_folder_name = "southern_lyrics"
elif artist == "TUBE":
artist_folder_name = "tube_lyrics"
all_lyric = ""
for lyric_path in glob.glob(artist_folder_name + "/*"):
with open(lyric_path, "r",encoding="shift_jis") as f:
all_lyric += f.read()
word_list = make_word_list(all_lyric)
histogram = Counter(word_list)
dict_to_csv(artist,histogram)
Reference
이 문제에 관하여(서던 vs TUBE 진정한 여름 노래 왕은 어느 쪽이다!? MeCab에서 가사 분석을 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Sinhalite/items/f61a100e42496dc986a6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)