3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゆっくりワードクラウド

Last updated at Posted at 2025-12-14

ゆっくりムービーメーカー4ymm4のプロジェクトファイルymmpから、pythonでワードクラウドを生成する方法です。jupyter notebookで作成しました。

ワードクラウド

環境構築はこちら。

ゆっくりしていってね

動画作成

ymm4を使用して動画を編集します。しました。

この動画のプロジェクトファイルから、ワードクラウドを生成します。

セリフ抽出

ymmpファイルからセリフを抽出します。ymmpファイルはjson形式で、動画のタイムラインなど様々な情報を持っています。その中からSerifキーの値のみを抽出し、1つの文字列にまとめます。

import json
filepath = r"path\to\yukkuri.ymmp"

# ファイル読み込み
data = {}
with open(filepath, 'r', encoding='utf-8-sig') as f:
    data = json.load(f)

# セリフ抽出
serif_texts = [item['Serif'] for item in data['Timelines'][0]['Items'] if 'Serif' in item]
# リストの各要素をスペースで結合して1つの文字列に
text = ' '.join(serif_texts).replace('\r\n', ' ')
print(text)
出力
すーみそー sumiso C0DB8C だ 今回は 銅ゴーレム式アイテム仕分け機を...

セリフ抽出の処理はリスト内包表記を使用しています。for文に書き換えると以下のようになります。

serif_texts = []

for item in data['Timelines'][0]['Items']:
    if 'Serif' in item:
        serif_texts.append(
            item['Serif']
        )

形態素解析

抽出したセリフを単語ごとに分離し、名詞のみを抽出しスペースで区切った文字列を作成します。

janomeというライブラリを使用しました。
https://janome.mocobeta.dev/ja/

from janome.tokenizer import Tokenizer

tokenizer = Tokenizer("user_simpledic.csv", udic_type="simpledic", udic_enc="utf8")
words = [token.surface for token in tokenizer.tokenize(text) if token.part_of_speech.startswith('名詞')]

clean_text = ' '.join(words)
print(clean_text)
出力
すーみそー sumiso C0DB8C 今回 銅ゴーレム 式 アイテム 仕分け 機 紹介 スタック...

user_simpledic.csvでユーザー辞書を指定しています。固有名詞を正しく分割するためです。次のような形式で記載します。

user_simpledic.csv
すーみそー,名詞,スーミソー
sumiso C0DB8C,名詞,スミソシーレイディービーハチシー
銅ゴーレム,名詞,ドウゴーレム
フルブロック,名詞,フルブロック
かまど,名詞,カマド
コンパレーター,名詞,コンパレーター

ワードクラウドの生成結果を確認しながら、調整していくとよいです。

ワードクラウド

ワードクラウドを作成します。wordcloudを生成し、matplotlibで描画します。

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 意味のない単語(ストップワード)を除去する。
stopWords = ['ここ','こちら','','とき','ため','','ところ','これ','もの','よう','バイバイ','チャンネル','登録','お願い','sumiso','C0DB8C','すーみそー']

# ワードクラウドの生成
wordcloud = WordCloud(
    font_path=r"path\to\font.otf",
    width=800,
    height=400,
    stopwords=set(stopWords),
    background_color='white',
    colormap='copper'
).generate(clean_text)

# 表示
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.tight_layout()
plt.show()

ワードクラウドが生成されます。
ワードクラウド

stopWords

ワードクラウドに表示させたくない単語を除外します。ワードクラウドを生成しながら、調整していくとよいです。

stopWords = ['チャンネル','登録','お願い','ここ','こちら','','とき','ため','','ところ','これ','もの','よう','バイバイ','sumiso','C0DB8C','すーみそー']

チャンネル登録お願いします

font_path

ワードクラウド生成に使用するOTFまたはTTF形式のフォントを指定します。windowsの場合、指定しないとエラーになります。
源ノ角ゴシック Code JPというフォントを利用しました。

colormap

ワードクラウドの色合いを指定します。ちょうど銅色があったので指定してみました。

カラーマップのサンプルはこちらのサイトが参考になります。

まとめ

本記事では、ゆっくりムービーメーカー4 (YMM4) のプロジェクトファイル(.ymmp)からセリフを抽出し、Pythonでワードクラウドを生成する手順を解説しました。

  • セリフ抽出
    JSON形式のymmpファイルからSerifキーの値を抽出
  • テキスト前処理
    態素解析ライブラリ Janome を適用し、名詞を抽出
  • ワードクラウド生成
    wordcloudライブラリとMatplotlibを使用して、名詞データからワードクラウドを生成・描画

ぜひご自身の動画でもワードクラウドを作成してみてください。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?