شمارش کلمات متن در Power BI

فرکانس کلمات یا Words Frequency یکی از تحلیل های مورد نیاز سازمان ها است  که ممکن است در گزارشات خود با آن برخورد داشته باشیم. با من در مطلب شمارش کلمات در Power BI همراه باشید. در این مطلب قرار است با استفاده از Power BI بررسی کنیم ۱۰۰ کلمه پرکاربرد در کارهای جناب شکسپیر چه کلماتی بود.

برای این منظور کارهای جناب شکسپیر که در یک فایل متنی مجتمع بوده اند در پاور بی آی بارگذاری شده اند. همان طور که در تصویر مشاهده می کنید اعمال مورد نظر ما از طریق Power Query صورت می پذیرد. پس Edit Queries را انتخاب کرده تا به محیط Power Query منتقل شویم.

edit queries - شمارش کلمات متن در Power BI

بعد از انتقال به محیط Power Query، از طریق Advanced Editor کد های مورد نظر خود را اعمال می کنید. همان طور که می دانید زبان M یک زبان بسیار قدرتمند است که اگر چه بسیاری از اعمال پاکسازی داده در آن از طریق Wizard های در نظر گرفته شده قابل انجام است اما این قابلیت برای کاربر وجود دارد که در صورت داشتن دانش زبان M، کدهای مورد نیاز خود را نوشته و استفاده کند.

برای مطالعه بیشتر در مورد Power Query و زبان M مطالب زیر را را مطالعه کنید.

برای مطالعه بیشتر در مورد Power Query به مطلب زیر مراجعه کنید.

برای مطالعه بیشتر در مورد زبان M به مطلب زیر مراجعه کنید.

برای آگاهی از تفاوت های DAX و M به مطلب زیر مراجعه کنید.

همان طور که در تصویر مشاهده می کنید با انتخاب گزینه Advanced Editor می توانیم کد های مورد نظر خود را بنویسیم.

advanced editor - شمارش کلمات متن در Power BI

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

w3 - شمارش کلمات متن در Power BI

حال مرحله به مرحله پیش می رویم. ابتدا با کد زیر فایل متنی را به خط های تشکیل دهنده آن می شکنیم.

Source =Lines.FromBinary(File.Contents(“C:\Users\LENOVO\Desktop\100-0.txt”))

 

خروجی این کد را در تصویر مشاهده می نمایید.

w4 - شمارش کلمات متن در Power BI

حال با استفاده از کد زیر کل خطوط ردیف ها را ادغام کرده و به یک متن واحد تبدیل می کنیم.

RemoveLineBreaks =Lines.ToText(Source, ” “)

 

خروجی این کد را در تصویر زیر مشاهده می کنید.

w5 - شمارش کلمات متن در Power BI

نشانه ها (Punctuations) در متن تاثیری ندارند. بنابراین بهتر است آن ها را از درون متن حذف کنیم. این عمل با استفاده از کد زیر قابل انجام است.

RemovePunctuation =Text.Remove(RemoveLineBreaks,{“,” ,”.” ,”?” ,”;” ,”:” ,”;” ,”‘” ,”@” ,”#” ,”~” ,”{” ,”[” ,”}” ,”]” ,”(” ,”)”, “*”})

 

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

W6 - شمارش کلمات متن در Power BI

باید بدانید که کلمات با حروف بزرگ و کوچک با یکدیگر متفاوت هستند. به طور مثال کلمات Power و power با یکدیگر متفاوتند. بنابراین باید یکسان سازی آن ها انجام شود. در این مرحله با کد زیر حروف بزرگ به کوچک تبدیل می شوند تا در شمارش یکسان در نظر گرفته شوند.

Lowercase =Text.Lower(RemovePunctuation)

 

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

w7 - شمارش کلمات متن در Power BI

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

TurnIntoTable =Table.FromValue(Lowercase)

 

w8 - شمارش کلمات متن در Power BI

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

w9 - شمارش کلمات متن در Power BI

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

ListOfWords =SplitIntoWords{0}[Value]

 

خروجی این مرحله در تصویر زیر قابل مشاهده است.

w10 - شمارش کلمات متن در Power BI

حال باید این لیست به جدول تبدیل شود. این نتیجه با کد زیر قابل دستیابی است.

TableFromList =Table.FromList(ListOfWords, Splitter.SplitByNothing(), null, null, ExtraValues.Error)

 

خروجی مورد نظر در تصویر زیر قابل مشاهده است.

w11 - شمارش کلمات متن در Power BI

حال جدول مورد نظر ما آماده است. باید نامی مناسب برای ستون آن در نظر بگیریم. با استفاده از کد زیر نام ستون را به Word تغییر می دهیم. خروجی این مرحله را در تصویر زیر مشاهده می کنید.

w12 - شمارش کلمات متن در Power BI

همان طور که در تصویر مشاهده می کنید جدول ما دارای مقادیر تهی می باشد (مانند ردیف اول) و باید از جدول حذف شوند. برای این منظور از کد زیر استفاده می نماییم.

RemoveBlanks =Table.SelectRows(RenameColumnToWord, each ([Word] <> “”))

 

خروجی این کد را در تصویر زیر مشاهده می کنید که ردیف های خالی از آن حذف شده اند.

w13 - شمارش کلمات متن در Power BI

حال وقت آن رسیده که عمل شمارش کلمات را انجام دهیم. برای این منظور با استفاده از کد زیر این عمل را انجام می دهیم. در واقع با استفاده از این کد عمل Group By را انجام می دهیم. هر کلمه تنها یک بار در جدول ظاهر می شود و در کنار آن تعداد وقوع آن در متن نمایش داده می شود. خروجی این کد در تصویر زیر قابل مشاهده است.

w14 - شمارش کلمات متن در Power BI

حال عمل مرتب کردن بر اساس تعداد کلمات را با استفاده از کد زیر انجام می دهیم.

SortedRows =Table.Sort(FindWordCounts,{{“Count”, Order.Descending}})

 

w15 - شمارش کلمات متن در Power BI

همان طور که در تصویر مشاهده می کنید کلمات بر حسب تعداد وقوع مرتب شده اند. به طور مثال کلمه the با ۱۶۱۳۴ بار تکرار در متن بیشترین کلمه مورد استفاده در آثار جناب شکسپیر بوده است.

اکنون ۱۰۰ کلمه برتر در این آثار را با استفاده از کد زیر فیلتر می کنیم.

w16 - شمارش کلمات متن در Power BI

این قطعه کد را می توان به صورت یک جا از طریق Advanced Editor اجرا کرد و نیازی به اجرای مرحله به مرحله آن نیست. کد زیر تمام مراحل را به صورت یک جا نشان می دهد.

let Source = Lines.FromBinary(File.Contents(“C:\Users\LENOVO\Desktop\100-0.txt”)),RemoveLineBreaks = Lines.ToText(Source, ” “),RemovePunctuation = Text.Remove(RemoveLineBreaks,{“,” ,”.” ,”?” ,”;” ,”:” ,”;” ,”‘” ,”@” ,”#” ,”~” ,”{” ,”[” ,”}” ,”]” ,”(” ,”)”, “*”}),Lowercase = Text.Lower(RemovePunctuation),TurnIntoTable = Table.FromValue(Lowercase),SplitIntoWords = Table.TransformColumns(TurnIntoTable, {“Value”, Splitter.SplitTextByWhitespace()}),ListOfWords = SplitIntoWords{0}[Value],TableFromList = Table.FromList(ListOfWords, Splitter.SplitByNothing(), null, null, ExtraValues.Error),RenameColumnToWord = Table.RenameColumns(TableFromList,{{“Column1”, “Word”}}),RemoveBlanks = Table.SelectRows(RenameColumnToWord, each ([Word] <> “”)),FindWordCounts = Table.Group(RemoveBlanks, {“Word”}, {{“Count”, each Table.RowCount(_), type number}}),SortedRows = Table.Sort(FindWordCounts,{{“Count”, Order.Descending}}),KeptFirstRows = Table.FirstN(SortedRows,100) in KeptFirstRows

تصویر این قطعه کد در Advanced Editorدر تصویر زیر نمایش داده شده است.

w17 - شمارش کلمات متن در Power BIاین عمل برای سازمان هایی که با نظرات مردم سر و کار دارند مناسب است. البته باید بدانید که این اعمال به صورت خیلی پیشرفته تر در زبان های برنامه نویسی R و Python قابل انجام است.

hv - شمارش کلمات متن در Power BI

حسین وثوقی

دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
hv - شمارش کلمات متن در Power BI

حسین وثوقی (همه)

دیدگاه بگذارید

avatar
  عضویت  
به دوستتان خبر دهید.