【Xiaobi必見】Pythonワードクラウドジェネレーターの詳細な分析とコード実装

ここに画像の説明を挿入

序文

この記事では、Python を使用してワード クラウド マップを生成するコードを作成する方法について説明します。ワード クラウド マップを生成する前に、numpy、wordcloud、PIL、matplotlib.pyplot、openpyxl などの必要なライブラリをインポートする必要があります。このうち、numpy はデータ処理に使用され、wordcloud はワード クラウドの生成に使用され、PIL は画像処理に使用され、matplotlib.pyplot はノートブックに画像を表示するために使用され、openpyxl は単語頻度 Excel ファイルの読み取りに使用されます。また、ワードクラウドの背景として背景画像を用意する必要があります。

単語頻度 Excel ファイルが保存されているフォルダー パスを読み取ることでフォルダー内のすべてのファイルを取得し、ファイル名とパスを連結してリストに保存します。次に、PIL ライブラリの Image.open() 関数を使用して背景画像を読み取り、numpy.array 形式に変換します。

ループを使用して各単語頻度 Excel ファイルを順番に処理します。まず、load_workbook() 関数を使用して単語頻度 Excel ファイルをロードし、wb.active を通じてアクティブなワークシートを取得します。次に、空の辞書 wordFreq を初期化して、各単語とその対応する頻度を保存します。アクティブなシート内の行を反復処理することにより、単語と頻度を取得し、それらを wordFreq 辞書に保存します。

ワード クラウドのスタイルが定義され、wordFreq 辞書に従ってワード クラウド マップが生成されます。生成されたワードクラウドは指定したフォルダーに保存され、ノートブックに表示されます。

必要なライブラリをインポートする

ここに画像の説明を挿入

import numpy as np  # numpy数据处理库
import wordcloud  # 词云库
from PIL import Image  # 图像处理库,用于读取背景图片
import matplotlib.pyplot as plt  # 图像展示库,以便在notebook中显示图片
from openpyxl import load_workbook  # 读取词频Excel文件
import os  # 获取词频Excel文件路径
  • numpy: データを操作するためのライブラリ。
  • wordcloud: ワードクラウドを生成するためのライブラリ。
  • PIL: 画像処理用のライブラリ。主に背景画像を読み取るために使用されます。
  • matplotlib.pyplot: ノートブック内の写真を表示するために使用されます。
  • openpyxl: 単語頻度 Excel ファイルを読み取るためのライブラリ。
  • os: 単語頻度 Excel ファイルを取得するために使用されるパス。

保存した Excel 単語出現頻度表を辞書に読み込みます。

ここに画像の説明を挿入

path = '词频'  # 文件所在文件夹
files = [path + "/" + i for i in os.listdir(path)]  # 获取文件夹下的文件名,并拼接完整路径
maskImage = np.array(Image.open('background.png'))  # 定义词频背景图
  • path: Excel単語出現頻度表が格納されているフォルダのパス。
  • files: リスト内包表記を使用してフォルダー内のすべてのファイル名を取得し、ファイル名とパスを連結してfilesリストに保存します。
  • maskImage:PILライブラリ内の関数を使用してImage.open()、背景画像を読み取り、numpy.array形式に変換します。

各単語の出現頻度の Excel ファイルを循環します。

ここに画像の説明を挿入

for file in files:
    wb = load_workbook(file)  # 加载词频Excel文件
    ws = wb.active  # 获取活动工作表
    wordFreq = {
    
    }  # 存储单词和对应的频率的字典
    for i in range(2, ws.max_row + 1):
        word = ws["A" + str(i)].value  # 获取单词
        freq = ws["B" + str(i)].value  # 获取频率
        wordFreq[word] = freq  # 将单词和频率存储到字典中
  • filesリスト内の各ファイル名をたどって、load_workbook()関数を使用して単語頻度 Excel ファイルをロードします。
  • アクティブシートの取得を使用しますwb.active
  • 空の辞書を初期化して、wordFreq各単語とそれに対応する頻度を保存します。
  • アクティブなシートの行 (行 2 から最後まで) をループし、ws["A" + str(i)].valueとでそれぞれws["B" + str(i)].value単語と頻度を取得し、wordFreq辞書に保存します。

ワード クラウド スタイルを定義し、ワード クラウド グラフを生成する

ここに画像の説明を挿入

wc = wordcloud.WordCloud(
    font_path='../PingFangBold.ttf',  # 设置字体
    mask=maskImage,  # 设置背景图
    max_words=500,  # 最多显示词数
    max_font_size=100  # 字号最大值
)

wc.generate_from_frequencies(wordFreq)  # 根据字典生成词云图
wc.to_file("词云图/{}.png".format(file.split("/")[1][:4]))  # 将词云图保存到指定文件夹
plt.imshow(wc)  # 显示词云图
plt.axis('off')  # 关闭坐标轴
plt.show()  # 显示图像
  • ワード クラウド オブジェクト を作成しwc、フォント、背景画像、表示される単語の最大数、最大フォント サイズなどのパラメータを渡してワード クラウドのスタイルを設定します。
  • 使用方法は、generate_from_frequencies()辞書に基づいてワード クラウド マップを生成しますwordFreq
  • 利用to_file()方法はワードクラウド画像を指定したフォルダに保存し、ファイル名は元のファイル名の最初の4文字が付けられます。
  • plt.imshow()ワードクラウドを表示するために使用します。
  • plt.axis('off')軸外を使用します。
  • 表示画像を使用しますplt.show()

完全なコード

import numpy as np # numpy数据处理库
import wordcloud # 词云库
from PIL import Image # 图像处理库,用于读取背景图片
import matplotlib.pyplot as plt # 图像展示库,以便在notebook中显示图片
from openpyxl import load_workbook #读取词频Excel文件
import os #获取词频Excel文件路径

#将存好的Excel词频表读取成字典
path='词频'  #文件所在文件夹
files = [path+"/"+i for i in os.listdir(path)] #获取文件夹下的文件名,并拼接完整路径
maskImage = np.array(Image.open('background.png')) # 定义词频背景图

for file in files:
    #将词频Excel文件读取为字典
    wb = load_workbook(file)
    ws = wb.active
    wordFreq = {
    
    }
    for i in range(2,ws.max_row+1):
        word = ws["A"+str(i)].value
        freq = ws["B"+str(i)].value
        wordFreq[word] = freq

    #定义词云样式
    wc = wordcloud.WordCloud(
        font_path='../PingFangBold.ttf', # 设置字体
        mask= maskImage, # 设置背景图
        max_words=500, # 最多显示词数
        max_font_size=100) # 字号最大值

    #生成词云图
    wc.generate_from_frequencies(wordFreq) # 从字典生成词云
    #保存图片到指定文件夹
    wc.to_file("词云图/{}.png".format(file.split("/")[1][:4]))
    #在notebook中显示词云图
    plt.imshow(wc) # 显示词云
    plt.axis('off') # 关闭坐标轴
    plt.show() # 显示图像

ランニングエフェクトのスクリーンショット

ここに画像の説明を挿入

知識ポイント

font_path: フォントのパス。フォントが存在するディレクトリで、目的のフォントを右クリックし、「プロパティ」を選択して名前を表示し、パスとともにコピーして割り当てますfont_pathたとえば、この例で使用されている黒体です。中国語のワードクラウドの場合、単語のフォントを選択する必要があることに注意してください。

width,height: キャンバスの幅と高さ (ピクセル単位)。値が設定されていない場合はmask、デフォルト値の 400*200 が使用されます。
margin: 単語の間隔。
ranks_only: ドキュメントには記載されていません。
prefer_horizontal: 単語を横方向に表示する確率 (デフォルトは 90%、縦方向に表示する確率は 10%) :
mask描画テンプレートの設定に使用されます。これは nd 配列 (多次元配列) である必要があるため、読み込んだ後Image.open()画像の場合は、 をnp.array使用して配列に変換する必要があります。またmask、パラメータが設定されている場合、キャンバスのサイズは単語頻度の背景画像のサイズによって決まります。私たちはカスタム テンプレートを好む傾向があるため、これはよく使用されます。
scale: キャンバスのサイズを拡大するために使用されるスケール バー。通常はデフォルト値を使用します。
color_func: カラー機能。通常は使用されません。
max_words: ワード クラウド グラフに表示される単語の最大数。非常にまれに表示される単語を表示しないように値を設定します。
min_font_size: 最小フォント サイズ。
stopwords:表示したくない単語を設定します。
random_state: ドキュメントには記載されていません。
background_color: ワード クラウド グラフの背景色。デフォルトは黒です。必要に応じて調整できます。
max_font_size:最大フォントサイズ。
font_step: フォントのステップ サイズ。通常はデフォルトを使用します。1より大きいと計算速度は向上しますが、マッチングは悪くなります。
mode:「RGBA」に設定し、background_color「なし」に設定すると、背景を透明にすることができます。
relative_scaling: 単語の出現頻度がフォント サイズに与える影響のため、通常はデフォルトを使用します。
regexp: 入力文字を分割するための正規表現。通常は渡される前に処理が行われるwordcloudため、基本的には使用されません。
collocations: 2 つの単語の連語を含めるかどうか。メソッドが使用される場合、generate_from_frequenciesこのパラメータは無視されます。一般的には使用されません。
colormap: 各単語に対応する色が設定されている場合color_func、このパラメータは無視されます。
normalize_plurals: 英語複数語の語尾を削除するかどうかsword、例えば、をwords単語とみなし、単語の出現頻度を先頭wordにカウントします。メソッドが使用される場合、generate_from_frequenciesこのパラメータは無視されます。
contour_width:maskと を設定するとcontour_width>0、輪郭が描画されますmask
contour_color:mask輪郭の色。デフォルトは黒です。
repeat: 単語が設定された要件を満たさない場合max_words、単語クラウド マップ上の単語数に達するまで単語またはフレーズを繰り返すかどうかmax_words
include_numbers: 単語として数字を使用するかどうか。
min_word_length: 単語に含まれる最小文字数を設定します。
collocation_threshold: バイグラムは英語で定義します。中国語には適用されません。

結論

この記事では、Python を使用してワード クラウド マップを生成するコードを作成する方法について説明します。まず必要なライブラリをインポートし、次に各単語頻度の Excel ファイルをループで処理し、辞書に読み込みます。次に、ワード クラウドのスタイルを定義し、ワード クラウド グラフを生成します。最後に、生成されたワード クラウド マップを指定したフォルダーに保存し、ノートブックに表示します。この記事の学習を通じて、Python を使用してワード クラウド マップを簡単に生成し、テキスト データ内の単語の頻度情報をより適切に分析できるようになります。

リソースコード
に含まれるリソースは、記事の上部からダウンロードしてアップロードできます。

おすすめ

転載: blog.csdn.net/qq_33681891/article/details/131978838