تجسم تحلیل‌های بازاریابی- WordCloud

شکل ۱. ایجاد تصویر وردکلوود از طریق پایتون
شکل ۱. ایجاد تصویر وردکلوود از طریق پایتون


منتشر‌شده در towardsdatascience به تاریخ ۱۶ آوریل ۲۰۲۱
لینک منبع Marketing Analytics Visualization — WordCloud

وردکلوود پربسامدترین کلمات مورد استفاده در یک متن را نمایش می‌دهد که در آن اندازه متن متناسب با فرکانسی است که در متن استفاده شده است؛ هرچه فونت بزرگ‌تر باشد، کلمه در سند بیشتر ظاهر می‌شود. بنابراین برای تجزیه‌و‌تحلیل داده اکتشافی، ورد‌کلوود ممکن است بینش‌های جالبی را برای پیگیری یا بررسی فراهم کند.

برای این تمرین، اجازه دهید مجموعه داده تریپالی-هتل-ریویو را امتحان کنیم. این فایل را می‌توان از کاگل دانلود کرد یا در دسترس قرار داد.

مقدمات اولیه

اگر بسته وردکلوود را نصب نکرده‌اید، می‌توانید این کار را با باز کردن پایانه و تایپ دستور زیر انجام دهید:

pip install wordcloud

موارد زیر مقدمات کار ما هستند:

#Preliminaries
from wordcloud import WordCloud, STOPWORDS#For Data Manipulation
import pandas as pd#For cleaning the texts
import re#For the Mask
from PIL import Image
import numpy as np
import urllib
import requests#For Visualization
import matplotlib.pyplot as plt
%matplotlib inline
مطالعه مقاله ۱۰ منبع آزاد برای یادگیری پردازش زبان طبیعی توصیه می‌شود.

وارد کردن داده

df = pd.read_csv('data/tripadvisor_hotel_reviews.csv')
 print(f'The row and column sizes, respectively of the table are {df.shape}')
 df.head()

توجه داشته باشید که ما تنها از ستون بازبینی برای این تمرین استفاده خواهیم کرد.

آماده‌سازی داده‌ها

برای پردازش بهترین ابر معنایی که می‌توانیم تولید کنیم، در اینجا مراحل لازم برای انجام در مرحله پیش‌پردازش ارائه شده‌اند:

  • همه متون را به صورت یک رشته درآورید
  • همه متون را به حروف کوچک تبدیل کنید (تعداد حروف مورد نظر متفاوت شمرده می‌شود)

موارد STOPWORDS را حذف کنید.

پیش‌پردازش-ترکیب متن‌ها و تبدیل به حروف کوچک

این کار را می‌توان به سادگی در یک کد تمیز انجام داد:

text = df['Review'].str.cat(sep=', ').lower()

پیش‌پردازش-کلمات ایستا (STOPWORDS)

ورد‌کلوود با یک لیست مناسب از توقف‌هایی که ما می‌توانیم از آن‌ها استفاده کنیم، می‌آید. این شامل کلماتی است که اغلب مورد استفاده قرار می‌گیرند مانند «،» a «،» یا و خیلی بیشتر که ممکن است ورد‌کلوود ما را به هم بریزد.

راه‌هایی برای مشاهده کلمات بالقوه وجود دارد که ممکن است بیشتر از حد مطلوب ظاهر شوند و ما همیشه می‌توانیم آن‌ها را به لیست کلمات توقف که ورد‌کلوود ما آن‌ها را حذف خواهد کرد، اضافه کنیم. در‌حالی‌که می‌توان متن را تقسیم کرده و یک شمارش ارزش انجام داد، من انتخاب می‌کنم که ابتدا به سادگی کلمه ابری را ایجاد کرده و تنها آن‌هایی را که نمی‌خواهیم بخشی از تصویر باشند، حذف کنیم.

از آنجا که من خروجی را قبلا دیده‌ام، می‌خواهم تنها یک کلمه را حذف کنم: «n، t».

# Adding to the list of stopwords
 stopwords = list(set(STOPWORDS)) + [&quotn't&quot]

مصور‌سازی

استفاده از بسته وردکلوود بسیار ساده بوده و پارامترها ساده می‌باشند.

wordcloud = WordCloud(width = 800, height = 800,
  background_color ='white',
  stopwords = stopwords,
  min_font_size = 10).generate(text)#After generating the WordCloud object, enter this to a plotting function# plot the WordCloud image 
plt.figure(figsize = (8, 8), facecolor = None)
plt.imshow(wordcloud)
plt.axis(&quotoff&quot)
plt.tight_layout(pad = 0)
  
plt.show()

و تمام، وردکلوود پایه ما آماده است.

مصور سازی-ماسک یا Masking

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

در انتخاب یک ماسک، یک تصویرpng یا jpeg با پس‌زمینه سفید انتخاب کنید. پس‌زمینه رنگی توسط کامپیوتر به عنوان یک شی مجزا در نظر گرفته می‌شود، بنابراین ممکن است شکلی که ما می‌خواهیم را ثبت نکند. ما می‌توانیم یک ماسک یا آیکون به دست آوریم که استفاده از آن رایگان است. اکنون، در توابع ماسک، بخش سفید تصویر باید «۲۵۵» باشد، نه ۰. مقدار ۲۵۵ مرتبط با سفید معمول‌تر است (و سیاه ۱ است)، اما فقط در صورتی که فرد باید شی «ماسک» را فقط در صورت وجود ببیند. اعداد موجود در آرایه، شدت پیکسل را نشان می‌دهند.

mask = np.array(Image.open(requests.get('https://www.freeiconspng.com/uploads/airplane-icon-image-gallery-1.png', stream=True).raw))

اجازه دهید یک هواپیما را به عنوان نماد خود انتخاب کنیم چون اقامت در هتل معمولا با سفر همراه است. آبجکت‌های ماسک را بررسی کنید. از آنجا که به نظر می‌رسد ماسک ما از ۲۵۵برای مقادیر سفید استفاده می‌کند، من حدس می‌زنم که می‌توانیم از این استفاده کنیم.

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

تابع تجسم برای تبدیل ۰ تا ۲۵۵ برای ماسک‌های دو بعدی و سه‌بعدی

اگر نقابی که انتخاب کرده‌اید ۲Dباشد و بخواهید ۰ vales را به ۲۵۵ تبدیل کنید، می‌توانید از تابع زیر استفاده کنید:

def transform_format(val):
  if val == 0:#000080
  return 255
  else:
  return val# Transform your mask into a new one that will work with the function:
transformed_mask = np.ndarray((mask.shape[0],mask.shape[1]), np.int32)for i in range(len(mask)):
  transformed_mask[i] = list(map(transform_format, mask[i])

برای ماسک‌های سه‌بعدی:

# Transform your mask into a new one that will work with the function:
transformed_mask = np.ndarray((mask.shape[0],mask.shape[1]), np.int32)for i in range(len(mask)):
  for y in range(len(mask[i])):
  transformed_mask[i][y] = list(map(transform_format, mask[i][y]))

وردکلاود با ماسک

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

wordcloud = WordCloud(background_color ='white',
  mask=mask, 
  stopwords = stopwords,
  min_font_size = 10,
  width=mask.shape[1],
  height=mask.shape[0],
  contour_width=1, 
  contour_color='#000080').generate(text)plt.figure(figsize = (8, 8), facecolor = None)
plt.imshow(wordcloud)
plt.axis(&quotoff&quot)
plt.tight_layout(pad = 0)
  
plt.show()

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

ممکن است علاقمند به مطالعه مقاله آیا شرکت شما برای هوش مصنوعی بدون کد آماده است؟ باشید.

توایع رنگی برای وردکلاود

یک ورودی جالب برای وردکلوود، تابع رنگ است. پارامتر تابع رنگ یک تابع را می‌پذیرد و سپس یک یا چند متغیر خاص از یک رنگ (طرح) را برای هر کلمه بسته به ویژگی آن خروجی می‌دهد. به این سایت بروید و ترکیب رنگ مورد نظر خود را انتخاب کنید: https://hslferer.com/.

تعداد انگشت‌شماری از متخصصان استفاده از یک رنگ یکنواخت را به جای طرح‌های رنگی پیش‌فرض برای طراحی نرم‌افزار ترجیح می‌دهند. بنابراین می‌توانیم تابعی را بنویسیم که این کار را برای ما انجام می‌دهد:

def one_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
 h = 204 #0-360
 s = 100 #0-100
 l = random_state.randint(30, 70) #0-100 As we want to randomize it per color, let's randomize this
 
 return f&quothsl({h},{s}%, {l}%)&quot

استفاده از این تابع به عنوان ورودی:

wordcloud = WordCloud(background_color ='white',
  mask=mask, 
  stopwords = stopwords,
  min_font_size = 10,
  width=mask.shape[1],
  height=mask.shape[0],
   color_func=color_func,
  contour_width=1, 
  contour_color='#000080').generate(text)plt.figure(figsize = (8, 8), facecolor = None)
  plt.imshow(wordcloud)
  plt.axis(&quotoff&quot)
  plt.tight_layout(pad = 0)plt.show()

بیایید کمی بیشتر با آنچه می‌دانیم بازی کنیم، یک عملکرد قرمز و یک ماسک خانگی با یک قلب را امتحان کنیم:

def red_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
 h = 0 #0-360
 s = 100 #0-100
 l = random_state.randint(30, 70) #0-100 As we want to randomize it per color, let's randomize this
 
 return f&quothsl({h},{s}%, {l}%)&quot

نتیجه گیری

ورد‌کلوود یک ابزار اکتشافی داده عالی برای بررسی پراستفاده‌ترین کلمات در یک شی متنی است. به این ترتیب، آن‌ها یک ابزار عالی برای تجزیه‌و‌تحلیل بازاریابی و تجزیه‌و‌تحلیل احساسی هستند. به عنوان یک ابزار EDA، فرد باید تلاش کند تا پرسش‌ها و بینش‌هایی را که ممکن است از تجسم ایجاد شده ناشی شوند، کشف کند.

در نهایت، راه‌های زیادی برای شخصی‌سازی و قدرتمندتر کردن تجسم برای مخاطبان وجود دارد. دانشمندان داده همیشه باید تلاش کنند و از ابزارهای تجسم با ترکیبی از مراقبت و خلاقیت استفاده کنند.

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