ساخت ابر برچسب در پایتون — به زبان ساده
در این مطلب، چگونگی انجام تحلیل اکتشافی دادهها برای «پردازش زبان طبیعی» (NLP | Natural Language Processing) با استفاده از «ابر برچسب» (Word Cloud) در «زبان برنامهنویسی پایتون» آموزش داده شده است. اما پیش از ارائه آموزش ساخت ابر برچسب در پایتون، باید دانست که ابر بچسب (با عنوان تگکلود یا کلودتگ هم از آن یاد میشود) چیست.
ابر برچسب چیست؟
بسیاری از مواقع، افراد با ابری که با کلمات متعدد در ابعاد گوناگون ترسیم شده، مواجه شدهاند. این ابر کلمات، تعداد تکرار یا اهمیت هر کلمه را نشان میدهد. به ابر کلمات مذکور، ابر برچسب یا «تگ کلود» (Tag Cloud) نیز میگویند. ابر برچسب ابزاری قدرتمند برای بصریسازی متن محسوب میشود که خواندن آنها آسان و درک آنها ساده است.
ساخت ابر برچسب به شکل خاصی که مد نظر کاربر است، میتواند بصریسازی را حتی جذابتر هم بکند. در این راهنما، روش ساخت ابر برچسب در پایتون و چگونگی سفارشیسازی آن بیان شده است. ابر برچسب، ابزاری مفید برای اکتشاف دادهها و ساخت گزارشهای زندهتر است.
ساخت ابر برچسب در پایتون
ساخت ابر برچسب در پایتون طی چندین مرحله انجام میشود که در ادامه شرح داده شدهاند.
گام ۱
ابتدا، کتابخانههای پایتون مورد نیاز را باید «وارد» (ایمپورت) کرد.
1from wordcloud import WordCloud, STOPWORDS
2from PIL import Image
3import numpy as np
4import urllib
5import requests
6import matplotlib.pyplot as plt
نکته ۱: اگر پس از اجرای قطعه کد بالا، پیغام خطای «No module named ‘wordcloud» صادر شد، نیاز است که از دستور زیر، برای نصب wordcloud استفاده شود.
1python -m pip install wordcloud
نکته ۲: اگر پیغام خطایی مربوط به کتابخانه تصویر پایتون (Python Imaging Library | PIL) صادر شد، باید به فایل زیر مراجعه کرد.
1./anaconda3/lib/python3.6/site-packages/PIL/Image.py
سپس، باید فایل Image.py را باز کرد و کد آن را که به صورت زیر است، به شکلی که در ادامه خواهد آمد تغییر داد.
1if PILLOW_VERSION != getattr(core, ‘PILLOW_VERSION’, None):
2 raise ImportError(“The _imaging extension was built for another “
3 “version of Pillow or PIL:\n”
4 “Core version: %s\n”
5 “Pillow version: %s” %
6 (getattr(core, ‘PILLOW_VERSION’, None),
7 PILLOW_VERSION))
کد بالا، باید به صورت کد زیر تغییر کند.
1if core.PILLOW_VERSION != getattr(core, ‘PILLOW_VERSION’, None):
2 raise ImportError(“The _imaging extension was built for another “
3 “version of Pillow or PIL:\n”
4 “Core version: %s\n”
5 “Pillow version: %s” %
6 (getattr(core, ‘PILLOW_VERSION’, None),
7 PILLOW_VERSION))
گام ۲
اکنون، وقت آن رسیده تا کاربر متنی که تمایل دارد برای رسم ابر برچسب خود استفاده کند را اضافه کند. در اینجا، از متنی که در زیر آمده و ارتباط به خانه و موضوعات مربوط به آن دارد، استفاده شده است.
1words = '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'
گام ۳
برای آنکه ابر برچسب به شکل سفارشی و مورد نظر کاربر ساخته شود، باید تصویری که مد نظر دارد را مشخص کند تا به عنوان ماسک از آن استفاده شود.
در این مطلب، از تصویری که در زیر آمده برای این کار استفاده شده و کدی که در ادامه میآید برای تعیین همین موضوع است.
1mask = np.array(Image.open(requests.get(‘http://www.clker.com/cliparts/O/i/x/Y/q/P/yellow-house-hi.png', stream=True).raw))
گام ۴
تابع زیر، متن و ماسک (تصویر خانه) را دریافت میکند تا یه ابر برچسب سفارشیسازی شده بسازد.
1def generate_wordcloud(words, mask):
2 word_cloud = WordCloud(width = 512, height = 512, background_color='white', stopwords=STOPWORDS, mask=mask).generate(words)
3 plt.figure(figsize=(10,8),facecolor = 'white', edgecolor='blue')
4 plt.imshow(word_cloud)
5 plt.axis('off')
6 plt.tight_layout(pad=0)
7 plt.show()
از کد زیر میتوان برای فراخوانی تابع generate_wordcloud که در بالا ساخته شده، استفاده کرد.
1generate_wordcloud(words, mask)
کد نهایی باید به شکل زیر باشد.
1from wordcloud import WordCloud, STOPWORDS
2from PIL import Image
3import urllib
4import requests
5import numpy as np
6import matplotlib.pyplot as plt
7
8words = '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'
9mask = np.array(Image.open(requests.get('http://www.clker.com/cliparts/O/i/x/Y/q/P/yellow-house-hi.png', stream=True).raw))
10
11# This function takes in your text and your mask and generates a wordcloud.
12def generate_wordcloud(words, mask):
13 word_cloud = WordCloud(width = 512, height = 512, background_color='white', stopwords=STOPWORDS, mask=mask).generate(words)
14 plt.figure(figsize=(10,8),facecolor = 'white', edgecolor='blue')
15 plt.imshow(word_cloud)
16 plt.axis('off')
17 plt.tight_layout(pad=0)
18 plt.show()
19
20#Run the following to generate your wordcloud
21generate_wordcloud(words, mask)
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون Python
- آموزش تکمیلی برنامهنویسی پایتون
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
- دستهبندی متن با پایتون و کرس (Keras) — راهنمای جامع
- شناسایی موجودیت نامدار با NLTK و SpaCy — راهنمای کاربردی
^^