برنامه نویسی، داده کاوی ۱۱۴۹ بازدید

در این مطلب، چگونگی انجام تحلیل اکتشافی داده‌ها برای «پردازش زبان طبیعی» (Natural Language Processing) با استفاده از «ابر برچسب» (Word Cloud) در «زبان برنامه‌نویسی پایتون» آموزش داده شده است. اما پیش از ارائه آموزش ساخت ابر برچسب در پایتون، باید دانست که ابر بچسب (با عنوان تگ‌کلود یا کلود‌تگ هم از آن یاد می‌شود) چیست.

ابر برچسب چیست؟

ساخت ابر برچسب در پایتون

بسیاری از مواقع، افراد با ابری که با کلمات متعدد در ابعاد گوناگون ترسیم شده، مواجه شده‌اند. این ابر کلمات، تعداد تکرار یا اهمیت هر کلمه را نشان می‌دهد. به ابر کلمات مذکور، ابر برچسب یا «تگ کلود» (Tag Cloud) نیز می‌گویند. ابر برچسب ابزاری قدرتمند برای بصری‌سازی متن محسوب می‌شود که خواندن آن‌ها آسان و درک آن‌ها ساده است. ساخت ابر برچسب به شکل خاصی که مد نظر کاربر است، می‌تواند بصری‌سازی را حتی جذاب‌تر هم بکند. در این راهنما، روش ساخت ابر برچسب در پایتون و چگونگی سفارشی‌سازی آن بیان شده است. ابر برچسب، ابزاری مفید برای اکتشاف داده‌ها و ساخت گزارش‌های زنده‌تر است.

ساخت ابر برچسب در پایتون

ساخت ابر برچسب در پایتون طی چندین مرحله انجام می‌شود که در ادامه شرح داده شده‌اند.

گام ۱

ابتدا، کتابخانه‌های پایتون مورد نیاز را باید «وارد» (ایمپورت) کرد.

from wordcloud import WordCloud, STOPWORDS
from PIL import Image
import numpy as np
import urllib
import requests
import matplotlib.pyplot as plt

نکته ۱: اگر پس از اجرای قطعه کد بالا، پیغام خطای «No module named ‘wordcloud» صادر شد، نیاز است که از دستور زیر، برای نصب wordcloud استفاده شود.

python -m pip install wordcloud

نکته ۲: اگر پیغام خطایی مربوط به کتابخانه تصویر پایتون (Python Imaging Library | PIL) صادر شد، باید به فایل زیر مراجعه کرد.

./anaconda3/lib/python3.6/site-packages/PIL/Image.py

سپس، باید فایل Image.py را باز کرد و کد آن را که به صورت زیر است، به شکلی که در ادامه خواهد آمد تغییر داد.

if PILLOW_VERSION != getattr(core, ‘PILLOW_VERSION’, None):
 raise ImportError(“The _imaging extension was built for another “
 “version of Pillow or PIL:\n”
 “Core version: %s\n”
 “Pillow version: %s” %
 (getattr(core, ‘PILLOW_VERSION’, None),
 PILLOW_VERSION))

کد بالا، باید به صورت کد زیر تغییر کند.

if core.PILLOW_VERSION != getattr(core, ‘PILLOW_VERSION’, None):
 raise ImportError(“The _imaging extension was built for another “
 “version of Pillow or PIL:\n”
 “Core version: %s\n”
 “Pillow version: %s” %
 (getattr(core, ‘PILLOW_VERSION’, None),
 PILLOW_VERSION))

گام ۲

اکنون، وقت آن رسیده تا کاربر متنی که تمایل دارد برای رسم ابر برچسب خود استفاده کند را اضافه کند. در اینجا، از متنی که در زیر آمده و ارتباط به خانه و موضوعات مربوط به آن دارد، استفاده شده است.

words = 'access guest guest apartment area area bathroom bed bed bed bed bed bedroom block coffee coffee coffee coffee entrance entry francisco free garden guest home house kettle kettle kitchen kitchen kitchen kitchen kitchen kitchen living located microwave neighborhood new park parking place privacy private queen room san separate separate shared space space space street suite time welcome'

گام ۳

برای آنکه ابر برچسب به شکل سفارشی و مورد نظر کاربر ساخته شود، باید تصویری که مد نظر دارد را مشخص کند تا به عنوان ماسک از آن استفاده شود. در این مطلب، از تصویری که در زیر آمده برای این کار استفاده شده و کدی که در ادامه می‌آید برای تعیین همین موضوع است.

ساخت ابر برچسب در پایتون

mask = np.array(Image.open(requests.get(‘http://www.clker.com/cliparts/O/i/x/Y/q/P/yellow-house-hi.png', stream=True).raw))

گام ۴

تابع زیر، متن و ماسک (تصویر خانه) را دریافت می‌کند تا یه ابر برچسب سفارشی‌سازی شده بسازد.

def generate_wordcloud(words, mask):
    word_cloud = WordCloud(width = 512, height = 512, background_color='white', stopwords=STOPWORDS, mask=mask).generate(words)
    plt.figure(figsize=(10,8),facecolor = 'white', edgecolor='blue')
    plt.imshow(word_cloud)
    plt.axis('off')
    plt.tight_layout(pad=0)
    plt.show()

از کد زیر می‌توان برای فراخوانی تابع generate_wordcloud که در بالا ساخته شده، استفاده کرد.

generate_wordcloud(words, mask)

کد نهایی باید به شکل زیر باشد.

from wordcloud import WordCloud, STOPWORDS
from PIL import Image
import urllib
import requests
import numpy as np
import matplotlib.pyplot as plt

words = 'access guest guest apartment area area bathroom bed bed bed bed bed bedroom block coffee coffee coffee coffee entrance entry francisco free garden guest home house kettle kettle kitchen kitchen kitchen kitchen kitchen kitchenliving located microwave neighborhood new park parking place privacy private queen room san separate seperate shared space space space street suite time welcome'
mask = np.array(Image.open(requests.get('http://www.clker.com/cliparts/O/i/x/Y/q/P/yellow-house-hi.png', stream=True).raw))

# This function takes in your text and your mask and generates a wordcloud. 
def generate_wordcloud(words, mask):
    word_cloud = WordCloud(width = 512, height = 512, background_color='white', stopwords=STOPWORDS, mask=mask).generate(words)
    plt.figure(figsize=(10,8),facecolor = 'white', edgecolor='blue')
    plt.imshow(word_cloud)
    plt.axis('off')
    plt.tight_layout(pad=0)
    plt.show()
    
#Run the following to generate your wordcloud
generate_wordcloud(words, mask)

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

 

بر اساس رای ۵ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«الهام حصارکی»، فارغ‌التحصیل مقطع کارشناسی ارشد مهندسی فناوری اطلاعات، گرایش سیستم‌های اطلاعات مدیریت است. او در زمینه هوش مصنوعی و داده‌کاوی، به ویژه تحلیل شبکه‌های اجتماعی، فعالیت می‌کند.

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد.