الأخبار التكنولوجية والاستعراضات والنصائح!

تنظيف ومعالجة التغريدات – نحو الذكاء الاصطناعي

ستساعدك المقالة التالية: تنظيف ومعالجة التغريدات – نحو الذكاء الاصطناعي

تجريف الويب ، البرمجة ، معالجة اللغة الطبيعية

سلسلة متعددة الأجزاء توضح كيفية الكشط والمعالجة المسبقة وتطبيق وتصور نمذجة موضوع نص قصير لأي مجموعة من التغريدات

مقدمة

نمذجة الموضوع هي نهج تعلم آلي غير خاضع للإشراف بهدف العثور على الموضوعات “المخفية” (أو المجموعات) داخل مجموعة من المستندات النصية (مجموعة). تكمن قوتها الحقيقية في أنك لست بحاجة إلى بيانات مصنفة أو مشروحة ولكنها تقبل بيانات النص الأولي كمدخلات فقط ، وبالتالي فهي غير خاضعة للإشراف. بمعنى آخر ، لا يعرف النموذج ما هي الموضوعات عندما يرى البيانات ولكنه ينتجها باستخدام العلاقات الإحصائية بين الكلمات في جميع المستندات.

أحد أكثر مناهج نمذجة الموضوع شيوعًا هو تخصيص Dirichlet الكامن (LDA) وهي عبارة عن خوارزمية نموذجية احتمالية توليدية تكشف عن المتغيرات الكامنة التي تحكم دلالات المستند ، وتمثل هذه المتغيرات مواضيع مجردة. الاستخدام النموذجي لـ LDA (ونمذجة الموضوع بشكل عام) هو تطبيقه على مجموعة من المقالات الإخبارية لتحديد الموضوعات أو الموضوعات المشتركة مثل العلوم والسياسة والتمويل وما إلى ذلك. ومع ذلك ، فإن أحد أوجه القصور في LDA هو أنه لا يعمل جيدًا مع النصوص الأقصر مثل تغريدات. هذا هو المكان الأكثر حداثة نمذجة موضوع النص القصير (STTM) بعض الأساليب التي تعتمد على LDA ، تكون في متناول اليد وتؤدي بشكل أفضل!

تم تصميم هذه السلسلة من المنشورات لإظهار وشرح كيفية استخدام Python لأداء وتطبيق نهج STTM محدد (نموذج خليط ديريتشليت لأخذ عينات جيبس أو GSDMM) للتغريدات الصحية من Twitter. سيكون مزيجًا من كشط / تنظيف البيانات والبرمجة وتصور البيانات والتعلم الآلي. سأغطي جميع الموضوعات في المقالات الأربعة التالية بالترتيب:

الجزء 1: كشط التغريدات من Twitter

لن تتعمق هذه المقالات في تفاصيل LDA أو STTM بل تشرح حدسها والمفاهيم الأساسية التي يجب معرفتها. يتم تشجيع القارئ المهتم بالحصول على فهم إحصائي أكثر شمولاً لـ LDA على الاطلاع على هذه المقالات والموارد الرائعة هنا و هنا.

كشرط مسبق ، تأكد من تثبيت Jupyter Notebook و Python و Git على جهاز الكمبيوتر الخاص بك.

حسنًا ، دعنا نكمل!

الجزء 2: تنظيف التغريدات ومعالجتها مسبقًا

في مقالتنا السابقة ، قمنا بكشط التغريدات من Twitter باستخدام Twint ودمج جميع البيانات الأولية في ملف csv واحد. لم تتم إزالة أي شيء أو تغييره من تنسيق البيانات التي قدمتها لنا أداة الكشط. يتم توفير ملف csv هنا للرجوع إليه لمتابعة الأمر إذا كنت تنضم إلينا للتو في الجزء 2.

ستركز هذه المقالة على المعالجة المسبقة للتغريدات الأولية. هذه الخطوة مهمة لأن التغريدات الأولية بدون معالجة مسبقة غير منظمة للغاية وتحتوي على معلومات زائدة عن الحاجة وغالبًا ما تكون إشكالية. هناك الكثير من الضوضاء في تغريدة قد لا نحتاجها أو نريدها اعتمادًا على هدفنا (أهدافنا):

كيف لا تمارس التباعد العاطفي أثناء التباعد الاجتماعي. HarvardHealth https://t.co/dSXhPqwywW #HarvardHealth https://t.co/H9tfffNAo0 ‘

على سبيل المثال ، قد لا تكون علامات التصنيف والروابط و @ المراجع أعلاه ضرورية لنهج نمذجة الموضوع لأن هذه المصطلحات لا توفر سياقًا مفيدًا لاكتشاف الموضوعات المتأصلة من التغريدة. بالإضافة إلى ذلك ، إذا كنا نرغب في الاحتفاظ بعلامات التصنيف لأنها قد تخدمنا غرضًا تحليليًا آخر ، فسنرى قريبًا أن هناك بالفعل عمود علامات تصنيف في بياناتنا الأولية يحتفظ بها جميعًا في قائمة.

إزالة الأعمدة غير الضرورية والتغريدات المكررة

للبدء ، سنقوم بتحميل تغريداتنا المكسورة في إطار بيانات. تحتوي البيانات الأصلية المقتطعة المقدمة من Twint على الكثير من الأعمدة ، تحتوي حفنة منها باطل أو قيم NaN. سنقوم بإسقاطها ونرى ما هي الأعمدة التي تبقى مع القيم الفعلية لجميع التغريدات.

استيراد الباندا كما pd
tweets_df = pd.read_csv (‘data / health_tweets.csv’)
tweets_df.dropna (المحور = “أعمدة” ، inplace = True)
tweets_df.columns

الآن لدينا مجموعة مصغرة من الأعمدة ويمكننا اختيار الأعمدة التي يجب الاحتفاظ بها. سأحتفظ بالأشياء الأكثر فائدة أو وصفية لنمذجة الموضوع أو الأغراض الاستكشافية ولكن قد تختلف قائمتك بناءً على هدفك (أهدافك).

tweets_df = tweets_df[[‘date’, ‘timezone’, ‘tweet’,
‘hashtags’, ‘username’, ‘name’,
‘day’, ‘hour’, ‘retweet’, ‘nlikes’,
‘nreplies’, ‘nretweets’]]

وكتفحص سلامة – أرغب دائمًا في إزالة أي نسخ مكررة في حالة نشر نفس التغريدة عدة مرات أو كشطها عدة مرات عن طريق الخطأ!

tweets_df.drop_duplicates (inplace = True ، مجموعة فرعية = “tweet”)

المعالجة المسبقة للتغريدات الفعلية

بعد ذلك ، سنرغب في تنظيف التغريدة الفعلية لكل سجل في إطار البيانات وإزالة أي “ضوضاء” إضافية لا نريدها. أول شيء يتعين علينا القيام به هو استيراد بعض وحدات Python (وتثبيتها إذا لزم الأمر). سنقوم أيضًا بتعريف سلسلة من رموز الترقيم ؛ يمثل هذا أي رموز أو أحرف نريد إزالتها من تغريدة لأننا نهتم فقط بالكلمات.

استيراد الباندا كما pd
إعادة الاستيراد
استيراد الجنس
من nltk.stem استيراد علامات ترقيم WordNetLemmatizer = ‘! ”$٪ &’ () * +، -. / :؛ <=>؟[\]^ _` {|} ~ • @ ‘

باستخدام الوحدات المذكورة أعلاه ، أجد أنه من الأسهل إنشاء وظائف مختلفة مسؤولة عن مهام معالجة مسبقة محددة. بهذه الطريقة – يمكنك بسهولة إعادة استخدامها لأي مجموعة بيانات قد تعمل معها.

لإزالة أي روابط أو مستخدمين أو علامات تصنيف أو علامات صوت / فيديو ، يمكننا استخدام الوظائف التالية التي تستخدم التعبيرات العادية (Regex).

لتطبيق تقنيات معالجة اللغة الطبيعية (NLP) الضرورية مثل الترميز واللمماتة ، يمكننا استخدام الوظائف التالية أدناه.

الترميز هي عملية تقسيم مستند (تغريدة) إلى كلمات وعلامات ترقيم وأرقام رقمية ، إلخ. اللماتة هي طريقة تقوم بتحويل الكلمات إلى شكلها أو القاموس باستخدام المفردات والتحليل الصرفي للكلمات. على سبيل المثال ، الكلمات دراسةو درس، و دراسات سيتم تحويلها إلى يذاكر.

كجزء من عملية الترميز ، فمن الأفضل إزالة كلمات التوقف والتي هي في الأساس مجموعة من الكلمات شائعة الاستخدام والتي لا توفر بمفردها سياقًا ذا مغزى. هذا يسمح لنا بالتركيز على الكلمات المهمة بدلاً من ذلك. مثال على ذلك هو الكلمات من بين الكثير. نحن نستخدم قائمة محددة مسبقًا أعلاه من Gensim ونستبعد أي كلمات أقل من 3 أحرف.

بعد ذلك ، وظيفتنا الرئيسية preprocess_tweet يطبق جميع الوظائف المحددة أعلاه بالإضافة إلى تطبيق علامات الترقيم الصغيرة أو التجريد أو المسافات الزائدة أو الأرقام في التغريدة. تقوم بإرجاع قائمة من الرموز المميزة النظيفة التي تم حجبها لتغريدة معينة.

لتسهيل الأمور والقدرة على إعادة استخدام الوظائف حسب الحاجة في أي ملف تعمل فيه ، قمت بإنشاء ملف منفصل لتخزين جميع الوظائف التي يمكننا استيرادها واستخدامها بسهولة لإرجاع إطار بيانات معالج مسبقًا في تشغيل رمز واحد . وأفضل جزء في ذلك هو أنه يمكن استخدامه لأي مجموعة من البيانات النصية مثل منشورات Reddit وعناوين المقالات وما إلى ذلك!

أكمل كود المعالج الأولي للتغريد

دعنا الآن نحاول تطبيق جميع خطوات المعالجة المسبقة التي حددناها على إطار بياناتنا ونرى النتائج.

من tweet_preprocessor استيراد tokenize_tweets
tweets_df = tokenize_tweets (tweets_df)
tweets_df.head (5)

يمكننا أن نرى أن الرموز الجديدة تمت إضافة العمود الذي يبدو جيدًا!

قبل أن نختتم ، دعنا نتأكد من حفظ مجموعة بياناتنا المعالجة مسبقًا في ملف csv. يمكنك أيضًا العثور على نسخة منه هنا.

tweets_df.to_csv (r’data / preprocessed_tweets.csv ‘، الفهرس = خطأ ،
header = صحيح)

في الجزء التالي من السلسلة ، سنبدأ في القيام بالأشياء الممتعة والبدء في تحليل التغريدات وتشغيل خوارزمية نمذجة موضوع النص القصير لمعرفة الاتجاهات والقضايا الصحية الموضوعية الموجودة في مجموعتنا من التغريدات!

المراجع والموارد المفيدة الأخرى


تم نشر نموذج موضوع التغريدة الجزء 2: تنظيف التغريدات ومعالجتها مسبقًا في Towards AI on Medium ، حيث يواصل الأشخاص المحادثة من خلال تسليط الضوء على هذه القصة والرد عليها.

تم النشر عبر نحو الذكاء الاصطناعي