# Program Name: nlp_wordcloud_japanese.py
# Creation Date: 20250606
# Overview: Perform basic Japanese NLP with MeCab and visualize word frequency using WordCloud
# Usage: Run in Google Colab after installing IPA font
# -------------------- Install Required Libraries --------------------
!pip install fugashi[unidic-lite] wordcloud matplotlib --quiet
!apt-get -y install fonts-ipafont-gothic
# -------------------- Import Libraries --------------------
import re
import matplotlib.pyplot as plt
from collections import Counter
from wordcloud import WordCloud
import fugashi
# -------------------- Step 1: テキスト入力 / Input Lyrics --------------------
text = """
都会を走る猫に名前はいらない
公園で群れるハトにパンを投げる投げる投げる
池のコイは太い コウモリが飛んでいく
もうすぐ帰れるさって思うもうすぐ家まで
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
都会を走る猫に名前はいらない
校庭を走る友達に裏切られるように
僕は君みたいになりたいと思っていたんだ
見つからなかったボールのような とにかくそんなものに
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
都会を走る猫に名前はいらない
都会を走る猫に名前はいらない
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
都会を走る猫に名前はいらない
都会を走る猫に名前はいらない
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
"""
print("【原文 / Original Text】")
print(text)
# -------------------- Step 2: 前処理 / Text Cleaning --------------------
def clean_text(text):
text = re.sub(r'[「」『』、。!!??\n]', '', text)
return text.strip()
cleaned_text = clean_text(text)
print("\n【前処理後テキスト / Cleaned Text】")
print(cleaned_text)
# -------------------- Step 3: 形態素解析 / Morphological Analysis --------------------
tagger = fugashi.Tagger()
tokens = [(word.surface, word.feature[0]) for word in tagger(cleaned_text)]
print("\n【形態素解析結果 / Tokens with POS】")
for surface, pos in tokens:
print(f"{surface} ({pos})")
# -------------------- Step 4: 品詞フィルタ / Filter POS --------------------
target_pos = ["名詞", "動詞", "形容詞"]
words = [surface for surface, pos in tokens if pos in target_pos]
print("\n【抽出単語 / Extracted Words (Noun, Verb, Adj)】")
print(words)
# -------------------- Step 5: 頻度カウント / Count Word Frequencies --------------------
word_freq = Counter(words)
print("\n【単語頻度 / Word Frequencies】")
for word, freq in word_freq.items():
print(f"{word}: {freq}")
# -------------------- Step 6: ワードクラウド生成 / WordCloud --------------------
font_path = "/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf"
wc = WordCloud(font_path=font_path,
background_color="white",
width=800,
height=400).generate_from_frequencies(word_freq)
# -------------------- Step 7: 描画 / Show WordCloud --------------------
plt.figure(figsize=(10, 5))
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.title("Word Frequency in Japanese Text")
plt.show()
結果
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
fonts-ipafont-gothic is already the newest version (00303-21ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 35 not upgraded.
【原文 / Original Text】
都会を走る猫に名前はいらない
公園で群れるハトにパンを投げる投げる投げる
池のコイは太い コウモリが飛んでいく
もうすぐ帰れるさって思うもうすぐ家まで
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
都会を走る猫に名前はいらない
校庭を走る友達に裏切られるように
僕は君みたいになりたいと思っていたんだ
見つからなかったボールのような とにかくそんなものに
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
都会を走る猫に名前はいらない
都会を走る猫に名前はいらない
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
都会を走る猫に名前はいらない
都会を走る猫に名前はいらない
世界が歌っている世界が歌っている
もうすぐ帰れるさって思うもうすぐ家まで
【前処理後テキスト / Cleaned Text】
都会を走る猫に名前はいらない公園で群れるハトにパンを投げる投げる投げる池のコイは太い コウモリが飛んでいくもうすぐ帰れるさって思うもうすぐ家まで世界が歌っている世界が歌っているもうすぐ帰れるさって思うもうすぐ家まで都会を走る猫に名前はいらない校庭を走る友達に裏切られるように僕は君みたいになりたいと思っていたんだ見つからなかったボールのような とにかくそんなものに世界が歌っている世界が歌っているもうすぐ帰れるさって思うもうすぐ家まで世界が歌っている世界が歌っているもうすぐ帰れるさって思うもうすぐ家まで都会を走る猫に名前はいらない都会を走る猫に名前はいらない世界が歌っている世界が歌っているもうすぐ帰れるさって思うもうすぐ家まで世界が歌っている世界が歌っているもうすぐ帰れるさって思うもうすぐ家まで都会を走る猫に名前はいらない都会を走る猫に名前はいらない世界が歌っている世界が歌っているもうすぐ帰れるさって思うもうすぐ家まで
【形態素解析結果 / Tokens with POS】
都会 (名詞)
を (助詞)
走る (動詞)
猫 (名詞)
に (助詞)
名前 (名詞)
は (助詞)
いら (動詞)
ない (助動詞)
公園 (名詞)
で (助詞)
群れる (動詞)
ハト (名詞)
に (助詞)
パン (名詞)
を (助詞)
投げる (動詞)
投げる (動詞)
投げる (動詞)
池 (名詞)
の (助詞)
コイ (名詞)
は (助詞)
太い (形容詞)
コウモリ (名詞)
が (助詞)
飛ん (動詞)
で (助詞)
いく (動詞)
もう (副詞)
すぐ (副詞)
帰れる (動詞)
さ (助詞)
って (助詞)
思う (動詞)
もう (副詞)
すぐ (副詞)
家 (名詞)
まで (助詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
もう (副詞)
すぐ (副詞)
帰れる (動詞)
さ (助詞)
って (助詞)
思う (動詞)
もう (副詞)
すぐ (副詞)
家 (名詞)
まで (助詞)
都会 (名詞)
を (助詞)
走る (動詞)
猫 (名詞)
に (助詞)
名前 (名詞)
は (助詞)
いら (動詞)
ない (助動詞)
校庭 (名詞)
を (助詞)
走る (動詞)
友達 (名詞)
に (助詞)
裏切ら (動詞)
れる (助動詞)
よう (形状詞)
に (助動詞)
僕 (代名詞)
は (助詞)
君 (代名詞)
みたい (形状詞)
に (助動詞)
なり (動詞)
たい (助動詞)
と (助詞)
思っ (動詞)
て (助詞)
い (動詞)
た (助動詞)
ん (助詞)
だ (助動詞)
見つから (動詞)
なかっ (助動詞)
た (助動詞)
ボール (名詞)
の (助詞)
よう (形状詞)
な (助動詞)
とにかく (副詞)
そんな (連体詞)
もの (名詞)
に (助詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
もう (副詞)
すぐ (副詞)
帰れる (動詞)
さ (助詞)
って (助詞)
思う (動詞)
もう (副詞)
すぐ (副詞)
家 (名詞)
まで (助詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
もう (副詞)
すぐ (副詞)
帰れる (動詞)
さ (助詞)
って (助詞)
思う (動詞)
もう (副詞)
すぐ (副詞)
家 (名詞)
まで (助詞)
都会 (名詞)
を (助詞)
走る (動詞)
猫 (名詞)
に (助詞)
名前 (名詞)
は (助詞)
いら (動詞)
ない (助動詞)
都会 (名詞)
を (助詞)
走る (動詞)
猫 (名詞)
に (助詞)
名前 (名詞)
は (助詞)
いら (動詞)
ない (助動詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
もう (副詞)
すぐ (副詞)
帰れる (動詞)
さ (助詞)
って (助詞)
思う (動詞)
もう (副詞)
すぐ (副詞)
家 (名詞)
まで (助詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
もう (副詞)
すぐ (副詞)
帰れる (動詞)
さ (助詞)
って (助詞)
思う (動詞)
もう (副詞)
すぐ (副詞)
家 (名詞)
まで (助詞)
都会 (名詞)
を (助詞)
走る (動詞)
猫 (名詞)
に (助詞)
名前 (名詞)
は (助詞)
いら (動詞)
ない (助動詞)
都会 (名詞)
を (助詞)
走る (動詞)
猫 (名詞)
に (助詞)
名前 (名詞)
は (助詞)
いら (動詞)
ない (助動詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
世界 (名詞)
が (助詞)
歌っ (動詞)
て (助詞)
いる (動詞)
もう (副詞)
すぐ (副詞)
帰れる (動詞)
さ (助詞)
って (助詞)
思う (動詞)
もう (副詞)
すぐ (副詞)
家 (名詞)
まで (助詞)
【抽出単語 / Extracted Words (Noun, Verb, Adj)】
['都会', '走る', '猫', '名前', 'いら', '公園', '群れる', 'ハト', 'パン', '投げる', '投げる', '投げる', '池', 'コイ', '太い', 'コウモリ', '飛ん', 'いく', '帰れる', '思う', '家', '世界', '歌っ', 'いる', '世界', '歌っ', 'いる', '帰れる', '思う', '家', '都会', '走る', '猫', '名前', 'いら', '校庭', '走る', '友達', '裏切ら', 'なり', '思っ', 'い', '見つから', 'ボール', 'もの', '世界', '歌っ', 'いる', '世界', '歌っ', 'いる', '帰れる', '思う', '家', '世界', '歌っ', 'いる', '世界', '歌っ', 'いる', '帰れる', '思う', '家', '都会', '走る', '猫', '名前', 'いら', '都会', '走る', '猫', '名前', 'いら', '世界', '歌っ', 'いる', '世界', '歌っ', 'いる', '帰れる', '思う', '家', '世界', '歌っ', 'いる', '世界', '歌っ', 'いる', '帰れる', '思う', '家', '都会', '走る', '猫', '名前', 'いら', '都会', '走る', '猫', '名前', 'いら', '世界', '歌っ', 'いる', '世界', '歌っ', 'いる', '帰れる', '思う', '家']
【単語頻度 / Word Frequencies】
都会: 6
走る: 7
猫: 6
名前: 6
いら: 6
公園: 1
群れる: 1
ハト: 1
パン: 1
投げる: 3
池: 1
コイ: 1
太い: 1
コウモリ: 1
飛ん: 1
いく: 1
帰れる: 7
思う: 7
家: 7
世界: 12
歌っ: 12
いる: 12
校庭: 1
友達: 1
裏切ら: 1
なり: 1
思っ: 1
い: 1
見つから: 1
ボール: 1
もの: 1