このあいだ
で WordCloudで遊ぶひな形を作ってみたので、今日はあいみょん。
マリーゴールド
「マリーゴールド」の歌詞をテキストにしておいて、
import wordcloud
import matplotlib.pyplot as plt
import MeCab
bun = ""
with open('あいみょん_マリーゴールド.txt') as f:
for line in f.readlines():
bun = bun + line.strip()
wc = wordcloud.WordCloud(width=1000, height=600, background_color="white",
font_path=r"C:\windows\Fonts\meiryo.ttc")
tagger = MeCab.Tagger()
word_kaiseki = tagger.parse(bun)
lines = word_kaiseki.split('\n')
selected = []
for line in lines:
feature = line.split('\t')
if len(feature) == 2:
info = feature[1].split(',')
hinshi = info[0]
if hinshi in ('名詞', '形容詞', '動詞'):
selected.append(info[6])
wc.generate(" ".join(selected))
plt.imshow(wc)
plt.axis("off")
「マリーゴールド」が「マリー」と「ゴールド」に分かれてしまっているのでそれは別の工夫が必要そうです。
サビのところをもう少し大きくするためのチューニングも考えたいけれど、まずは歌詞の言葉を大切にしたいので
原型を使っていた
selected.append(info[6])
のところを
selected.append(feature[0])
にしてみます。
import wordcloud
import matplotlib.pyplot as plt
import MeCab
bun = ""
with open('あいみょん_マリーゴールド.txt') as f:
for line in f.readlines():
bun = bun + line.strip()
wc = wordcloud.WordCloud(width=1000, height=600, background_color="white",
font_path=r"C:\windows\Fonts\meiryo.ttc")
tagger = MeCab.Tagger()
word_kaiseki = tagger.parse(bun)
lines = word_kaiseki.split('\n')
selected = []
for line in lines:
feature = line.split('\t')
if len(feature) == 2:
info = feature[1].split(',')
hinshi = info[0]
if hinshi in ('名詞', '形容詞', '動詞'):
selected.append(feature[0])
wc.generate(" ".join(selected))
plt.imshow(wc)
plt.axis("off")
wc = wordcloud.WordCloud(width=1000, height=600, background_color="white",
font_path=r"C:\windows\Fonts\meiryo.ttc")
のところを
wc = wordcloud.WordCloud(width=1000, height=600, background_color="white",
font_path=r"C:\windows\Fonts\meiryo.ttc",
stopwords=["いつ", "し", "さ", "よう"])
としてストップワードを設定してみます。
if hinshi in ('名詞', '形容詞', '動詞'):
それぞれ別に抽出してみます。
if hinshi in ('名詞',):
if hinshi in ('形容詞',):
if hinshi in ('動詞',):
裸の心
ここまでのソースを関数化してファイル名、ストップワード、使用する品詞などを外からパラメータで渡すようにすればもっと遊びやすくなりそうですが、まぁそのままファイル名のところだけを変えてやってみます。
import wordcloud
import matplotlib.pyplot as plt
import MeCab
bun = ""
with open('あいみょん_裸の心.txt') as f:
for line in f.readlines():
bun = bun + line.strip()
wc = wordcloud.WordCloud(width=1000, height=600, background_color="white",
font_path=r"C:\windows\Fonts\meiryo.ttc")
tagger = MeCab.Tagger()
word_kaiseki = tagger.parse(bun)
lines = word_kaiseki.split('\n')
selected = []
for line in lines:
feature = line.split('\t')
if len(feature) == 2:
info = feature[1].split(',')
hinshi = info[0]
if hinshi in ('名詞', '形容詞', '動詞'):
selected.append(feature[0])
wc.generate(" ".join(selected))
plt.imshow(wc)
plt.axis("off")
愛を知るまでは
import wordcloud
import matplotlib.pyplot as plt
import MeCab
bun = ""
with open('あいみょん_愛を知るまでは.txt') as f:
for line in f.readlines():
bun = bun + line.strip()
wc = wordcloud.WordCloud(width=1000, height=600, background_color="white",
font_path=r"C:\windows\Fonts\meiryo.ttc",
stopwords=["の", "ない"])
tagger = MeCab.Tagger()
word_kaiseki = tagger.parse(bun)
lines = word_kaiseki.split('\n')
selected = []
for line in lines:
feature = line.split('\t')
if len(feature) == 2:
info = feature[1].split(',')
hinshi = info[0]
if hinshi in ('名詞', '形容詞', '動詞'):
selected.append(feature[0])
wc.generate(" ".join(selected))
plt.imshow(wc)
plt.axis("off")
君はロックを聴かない
with open('あいみょん_君はロックを聴かない.txt') as f:
にして、stopwordsの設定無しでやってみました。
やってみて
ここから、短い歌詞の場合はなにをどのように改善すればいいのかを考えてゆきたい。
最近の歌詞の場合は新語への対応を考えたほうがいいのかな。