Pythonでwordcloudライブラリを使ったWikipediaのワードクラウドの作り方を解説する

スポンサーリンク

Pythonを使ったワードクラウドのチュートリアルへようこそ。

ワードクラウドの技術は、特にテキストデータが存在する場合、データ可視化のトレンドの技術となっています。

したがって、ワードクラウドは、自然言語処理(NLP)を用いたデータ可視化のための著名なテクニックの一つであると言うことができます。

スポンサーリンク

ワードクラウドとは?

記事中で最も頻繁に使用されている単語を抽出し、その単語の使用回数に基づいて計算します。

使用回数が多いほど、ワードクラウドでの単語の大きさも大きくなります。

How to Create Word Cloud using Python?

それでは、Pythonを使って独自のワードクラウドを作成してみましょう。

1. wordcloud と Wikipedia ライブラリのインストール

ワードクラウドを作成するには、python 3.xとwordcloudをインストールする必要があります。

wordcloudをインストールするには、pipコマンドを使用します。

sudo pip install wordcloud

この例では、Wikipediaのウェブページ、すなわちPython(プログラミング言語)を使用することにします。

Wikipediaのコンテンツを使用するには、wikipediaの依存関係をインストールする必要があります。

sudo pip install wikipedia

2. クエリに基づく Wikipedia の検索

まず、以下のコードで wikipedia ライブラリをインポートします。

import wikipedia

search` 関数を使用して、最初の要素だけを取り出します。

これが私たちのページのタイトルになります。

def get_wiki(query):
    title = wikipedia.search(query)[0]
 
    # get wikipedia page for selected title
    page = wikipedia.page(title)
    return page.content

タイトルを取り出したら、page()を使ってページの内容を取り出します。

この後、page.contentを使って、ページのcontent` だけを返します。

上記のコードをコンソールで実行すると、サイトのすべての生データがコンソールに表示されます。

しかし、我々のタスクはここで終わりではなく、ワードクラウドを作成する必要があります。

from wordcloud import WordCloud, STOPWORDS

3. クラウドマスクの作成とストップワードの設定

まず始めに、wordcloud ライブラリをインポートし、WordCloudSTOPWORDS などの特定のパッケージをインポートします。

STOPWORDS` をインポートするのは、a, an, the などの基本的な冠詞や、英語でよく使われる単語を削除したいからです。

def create_wordcloud(text):
    mask = np.array(Image.open(path.join(currdir, "cloud.png")))
     
    stopwords = set(STOPWORDS)
 
    # create wordcloud object
    wc = WordCloud(background_color="white",
                    max_words=200,
                    mask=mask,
                    stopwords=stopwords)
 
    wc.generate(text)
 
    # save wordcloud
    wc.to_file(path.join(currdir, "output.png"))

マスクを使用します。

これはcurrdir` で示されるカレントワーキングディレクトリにある ‘cloud.png’ という名前のラフな図です。

この画像を開いて、numpyの配列に格納します。

import sys
from os import path
import numpy as np
from PIL import Image
import wikipedia
from wordcloud import WordCloud, STOPWORDS
 
currdir = path.dirname(__file__)
 
def get_wiki(query):
    title = wikipedia.search(query)[0]
    page = wikipedia.page(title)
    return page.content
 
 
def create_wordcloud(text):
    mask = np.array(Image.open(path.join(currdir, "cloud.png")))
     
    stopwords = set(STOPWORDS)
 
    wc = WordCloud(background_color="white",
                    max_words=200,
                    mask=mask,
                    stopwords=stopwords)
     
    wc.generate(text)
    wc.to_file(path.join(currdir, "output.png"))
 
 
if __name__ == "__main__":
    query = sys.argv[1]
    text = get_wiki(query)
     
    create_wordcloud(text)

次のタスクは、ストップワードのセットを定義することなので、set(STOPWORDS)を使用します。

WordCloud()を使ってPythonのオブジェクトでワードクラウドを作成します。

background_color、max_words(ここでは単語の上限を200とします)、maskstopwords などのパラメータを渡します。

次に、 wc.generate() を使用して、パラメータとして生のテキストを渡します。


生成されたワードクラウドをファイルに保存することができます

ファイル名は output.png とします。

Image 1
Getting the raw data from wikipedia

これらの2つの関数を実行すると、初回は30-40秒かかりますが、回数を重ねるごとに短縮されるかもしれません。

完全なコードと出力画像は次のセクションに示すとおりです。

PythonによるWord Cloudの完全実装

Image 2
cloud.png

結果は以下の通りです。

Image 3
output.png

まとめ

Pythonを使ったワードクラウドの作成は、あらゆるテキストコンテンツで使用されている最大数の単語を視覚化する最も簡単な方法の1つです。

このコードを実行するだけで、テキストで議論されている主題やトピックを簡単に理解することができます

この記事を楽しんでいただければ幸いです。

私たちは下のコメント欄であなたのフィードバックを知ってみましょう。

タイトルとURLをコピーしました