مشروع كشف الأخبار الوهمية في بايثون [بالترميز]
نشرت: 2020-12-14هل قرأت يومًا خبرًا يبدو مزيفًا؟ نواجه جميعًا مثل هذه المقالات الإخبارية ، وندرك غريزيًا أن شيئًا ما ليس على ما يرام. بسبب كثرة المنشورات ، يكاد يكون من المستحيل فصل الحق عن الخطأ. هنا ، نحن لا نتحدث فقط عن الادعاءات الزائفة والنقاط الواقعية ، بل بالأحرى عن الأشياء التي تبدو خاطئة بشكل معقد في اللغة نفسها.
هل تساءلت يومًا عن كيفية تطوير مشروع الكشف عن الأخبار المزيفة؟ لكن لا توجد طريقة سهلة لمعرفة الأخبار المزيفة وغير المزيفة ، خاصة هذه الأيام ، مع سرعة انتشار الأخبار على وسائل التواصل الاجتماعي. ومع ذلك ، يمكن لبعض الحلول أن تساعد في تحديد هذه الأخطاء.
هناك طريقتان للادعاء بأن بعض الأخبار كاذبة أم لا: أولاً ، الهجوم على النقاط الواقعية. ثانيًا ، اللغة. لا يمكن إجراء الأول إلا من خلال عمليات بحث جوهرية على الإنترنت باستخدام أنظمة الاستعلام الآلي. قد تكون مهمة شاقة ، خاصة بالنسبة لشخص بدأ للتو في علوم البيانات ومعالجة اللغة الطبيعية.
هذا الأخير ممكن من خلال خط أنابيب معالجة اللغة الطبيعية متبوعًا بخط أنابيب للتعلم الآلي. هذه هي الطريقة التي ننفذ بها مشروع الكشف عن الأخبار المزيفة في بايثون. إنها مشكلة أخرى من المشكلات التي يتم التعرف عليها على أنها مشكلة تعلم الآلة يتم طرحها كمشكلة معالجة لغة طبيعية. إذا كنت مبتدئًا ومهتمًا بمعرفة المزيد عن علم البيانات ، فراجع دوراتنا في علوم البيانات عبر الإنترنت من أفضل الجامعات.
قراءة: مواضيع وأفكار مشروع بايثون
هناك العديد من مجموعات البيانات المتوفرة لهذا النوع من التطبيقات ، لكننا سنستخدم المجموعة المذكورة هنا . تحتوي البيانات على أكثر من 7500 موجز إخباري مع تسميتين مستهدفتين: وهمية أو حقيقية. تتكون مجموعة البيانات أيضًا من عنوان المقالة الإخبارية المحددة.
ستكون الخطوات قيد الإعداد لمعالجة اللغة الطبيعية كما يلي:
- الحصول على البيانات وتحميلها
- تنظيف مجموعة البيانات
- إزالة الرموز الزائدة
- إزالة علامات الترقيم
- إزالة كلمات الإيقاف
- ينبع
- الترميز
- ميزة استخراج
- TF-IDF vectorizer
- مكافحة ناقلات مع محول TF-IDF
- تدريب نموذج التعلم الآلي والتحقق منه
قبل أن نبدأ في مناقشة خطوات تنفيذ مشروع الكشف عن الأخبار الوهمية ، دعونا نستورد المكتبات اللازمة:
رمز:
استيراد الباندا كما pd استيراد numpy كـ np إعادة الاستيراد سلسلة الاستيراد من كلمات إيقاف استيراد nltk.corpus من nltk.tokenize استيراد word_tokenize stop_words = set (stopwords.words ( 'English' )) |
الخطوة الأولى هي الحصول على البيانات. لقد قدمنا بالفعل رابط ملف CSV ؛ ولكن من المهم أيضًا مناقشة الطريقة الأخرى لإنشاء بياناتك.
إحدى الطرق هي تجريف الويب. لهذا ، نحتاج إلى ترميز زاحف ويب وتحديد المواقع التي تحتاج إلى الحصول على البيانات منها. لكن كن حذرًا ، هناك مشكلتان في هذا النهج.
أولاً ، قد يكون إلغاء العديد من المواقع أمرًا غير قانوني ، لذا عليك الاهتمام بذلك. وثانيًا ، ستكون البيانات أولية جدًا. سيتم إلحاق خط الأنابيب بالكامل بقائمة من الخطوات لتحويل تلك البيانات الأولية إلى ملف CSV أو مجموعة بيانات قابلة للتطبيق. ومن ثم ، فإننا نستخدم ملف CSV المحدد مسبقًا مع البيانات المنظمة.
ومع ذلك ، إذا كنت مهتمًا ، يمكنك الاطلاع على دورة upGrad في علوم البيانات ، حيث تتوفر موارد كافية مع تفسيرات مناسبة حول هندسة البيانات وتجريف الويب. تأكد من التحقق من هؤلاء هنا .
إنها الطريقة التي نستورد بها مجموعة البيانات الخاصة بنا ونلحق الملصقات. لاحظ كيف نسقط الأعمدة غير الضرورية من مجموعة البيانات. إذا لزم الأمر على قيمة أعلى ، يمكنك الاحتفاظ بهذه الأعمدة لأعلى. لكن في الوقت الحالي ، سيعمل مشروع الكشف عن الأخبار المزيفة بسلاسة على أعمدة النص والتسمية المستهدفة فقط.
رمز:
df_text = pd.read_csv ( 'fake_or_real_news.csv' ، الترميز = 'latin-1' ) df_text.columns = [ 'id' ، 'title' ، 'text' ، 'label' ] df_text.drop (['id'، 'title']، محور = 1) |
للمضي قدمًا ، فإن الخطوة التالية هي تنظيف البيانات الموجودة. لماذا هذه الخطوة ضرورية؟ من الأهمية بمكان أن نفهم أننا نعمل مع آلة ونعلمها تشعب المزيف والحقيقي. في الوقت الحالي ، لدينا بيانات نصية ، لكن أجهزة الكمبيوتر تعمل على الأرقام. لذا يلزم أولاً تحويلها إلى أرقام ، والخطوة السابقة لذلك هي التأكد من أننا نقوم فقط بتحويل تلك النصوص الضرورية للفهم.
تتمثل الخطوة الأولى في خط أنابيب التنظيف في التحقق مما إذا كانت مجموعة البيانات تحتوي على أي رموز إضافية يجب إزالتها. يمكن أن تكون عناوين ويب أو أي رمز (رموز) مرجعية أخرى ، مثل (@) أو علامات التجزئة. ها هو الكود:
رمز:
# إزالة عناوين المواقع text = re.sub ( r ”http \ S + | www \ S + | https \ S +” ، ” ، text، flags = re.MULTILINE) # إزالة @ مراجع المستخدم و "#" من النص text = re.sub ( r '\ @ \ w + | \ #' ، ” ، نص) |
بمجرد إزالة ذلك ، فإن الخطوة التالية هي مسح الرموز الأخرى: علامات الترقيم. إذا فكرنا في الأمر ، فإن علامات الترقيم ليس لها مدخلات واضحة في فهم حقيقة أخبار معينة. في بعض الأحيان ، قد يكون من الممكن أنه في حالة وجود الكثير من علامات الترقيم ، فإن الأخبار ليست حقيقية ، على سبيل المثال ، الإفراط في استخدام علامات الترقيم.
لكن هذه حالات نادرة وستتطلب تحليلًا محددًا قائمًا على القواعد. لذلك ، بالنسبة لمشروع الكشف عن الأخبار المزيفة ، سنقوم بإزالة علامات الترقيم. إليك كيفية القيام بذلك:
رمز:
text = text.translate (str.maketrans ( ” ، ” ، string.punctuation)) |
والخطوة التالية هي تحويل الكلمة إلى صميمها وترميز الكلمات. يعني الترميز تحويل كل جملة إلى قائمة من الكلمات أو الرموز. إليك رمز من سطرين يجب إلحاقه:
رمز:
الرموز = word_tokenize (نص) Words = [w for w in tokens if not w in stop_words] |
الخطوة التالية هي خطوة حاسمة. تحويل الرموز المميزة إلى أرقام ذات معنى. تُعرف هذه الخطوة أيضًا باسم استخراج الميزات. بالنسبة لتطبيقنا ، نحن نتبع طريقة TF-IDF لاستخراج وبناء الميزات لخط أنابيب التعلم الآلي الخاص بنا.
TF-IDF تعني أساسًا مصطلح تردد الوثيقة العكسي. كما هو مقترح من الاسم ، نحصل على المعلومات حول مجموعة البيانات من خلال تكرار المصطلحات بالإضافة إلى تكرار المصطلحات في مجموعة البيانات بأكملها ، أو مجموعة المستندات.
يمكن بسهولة حساب TF-IDF عن طريق خلط قيم TF و IDF. تتضمن كلتا الصيغتين نسب بسيطة.
TF = لا. عدد المرات التي يظهر فيها المصطلح في المستند / إجمالي عدد المصطلحات.
IDF = سجل (العدد الإجمالي للوثائق / عدد الوثائق التي يظهر فيها المصطلح)

الآن Python لديها تطبيقان لتحويل TF-IDF. الأول هو ناقل TF-IDF والثاني هو محول TF-IDF. الفرق هو أن المحول يتطلب تنفيذ حقيبة من الكلمات قبل التحويل ، بينما يجمع المتجه كلتا الخطوتين في خطوة واحدة. يمكننا أيضًا استخدام ناقل العد الذي يعد تنفيذًا بسيطًا لأكياس الكلمات. لكن TF-IDF سيعمل بشكل أفضل على مجموعة البيانات المعينة.
هنا كيف يمكن تنفيذ TF-IDF.
رمز:
من sklearn.feature_extraction.text استيراد TfidfVectorizer tf_vector = TfidfVectorizer (sublinear_tf = صحيح ) tf_vector.fit (df_text [ 'text' ]) |
الخطوة التالية هي خط أنابيب التعلم الآلي. تمامًا مثل خط أنابيب ML المعتاد ، نحتاج إلى نقل البيانات إلى X و y. للقيام بذلك ، نستخدم X كمصفوفة يتم توفيرها كمخرج بواسطة ناقل TF-IDF ، والذي يجب تسويته.
يمكننا استخدام دالة السفر في بايثون لتحويل المصفوفة إلى مصفوفة. لا يمكن إلحاق قيم y مباشرة لأنها لا تزال تسميات وليست أرقامًا. لتحويلها إلى 0 و 1 ، نستخدم مشفر تسمية sklearn.
يحول هذا المشفر نصوص التسمية إلى أهداف مرقمة. على سبيل المثال ، افترض أن لدينا قائمة من التصنيفات مثل: ["حقيقي" ، "مزيف" ، "مزيف" ، "مزيف"]
ما نحتاجه أساسًا هو قائمة مثل هذه: [1 ، 0 ، 0 ، 0]. ما يفعله برنامج تشفير التسمية هو أنه يأخذ كل التسميات المميزة ويقوم بعمل قائمة. على سبيل المثال ، القائمة ستكون ["وهمية" ، "حقيقية"].
هنا هو تنفيذ نفسه:
رمز:
X_text = tf_vector.transform (df_text [ 'text' ] .ravel ()) y_values = np.array (df_text [ 'label' ] .ravel ()) |
من sklearn استيراد التجهيز المسبق le = المعالجة المسبقة. le.fit (y_values) le.transform (y_values) |
بمجرد الانتهاء ، يتم إجراء التدريب والاختبار. يمكن تحقيق ذلك باستخدام حزمة المعالجة المسبقة من sklearn واستيراد وظيفة تقسيم اختبار القطار.
رمز:
من sklearn.model_selection استيراد train_test_split X_train، X_test، y_train، y_test = train_test_split (X_text، y_values، test_size = 0.15 ، random_state = 120 ) |
الخطوة الأخيرة هي استخدام النماذج. هناك العديد من نماذج التعلم الآلي الجيدة المتاحة ، ولكن حتى النماذج الأساسية البسيطة ستعمل بشكل جيد في تنفيذنا لمشاريع الكشف عن الأخبار المزيفة . قمنا أولاً بتنفيذ نموذج الانحدار اللوجستي. إليك كيفية التنفيذ باستخدام sklearn.
رمز:
من sklearn.metrics دقة الاستيراد من sklearn.linear_model استيراد LogisticRegression النموذج = LogisticRegression (حلال = 'lbfgs' ) |
النموذج يعمل بشكل جيد دقة 92 بالمائة في نموذج الانحدار مناسبة جدًا. يمكنك أيضًا تنفيذ الطرز الأخرى المتوفرة والتحقق من الدقة.
إذن ، هذه هي الطريقة التي يمكنك بها تنفيذ مشروع الكشف عن الأخبار المزيفة باستخدام Python.
لاحظ أن هناك أشياء كثيرة يجب القيام بها هنا. لم يكتمل خط أنابيب البرمجة اللغوية العصبية بالكامل بعد. هناك العديد من الوظائف الأخرى المتاحة والتي يمكن تطبيقها للحصول على استخلاص أفضل للميزات.
اقرأ أيضًا: أفكار مشروع Python مفتوح المصدر
الطريقة التي تعمل بها الأخبار المزيفة على تكييف التكنولوجيا ، ستكون هناك حاجة إلى نماذج معالجة أفضل وأفضل. وستكون هذه النماذج أكثر في فهم اللغة الطبيعية وأقل عرضًا كنموذج التعلم الآلي نفسه. يمكن أيضًا ضبط النماذج وفقًا للميزات المستخدمة. يمكن جعل مجموعة البيانات قابلة للتكيف ديناميكيًا لجعلها تعمل على البيانات الحالية. لكن هذا سيتطلب نموذجًا مدربًا بشكل شامل على المقالات الإخبارية الحالية.
لذلك ، في حالة توفر المزيد من البيانات ، يمكن عمل نماذج أفضل ويمكن تحسين إمكانية تطبيق مشاريع الكشف عن الأخبار المزيفة . لكن المخطط الداخلي وخطوط الأنابيب الأساسية ستظل كما هي. خطوط الأنابيب الموضحة قابلة للتكيف بدرجة كبيرة مع أي تجارب قد ترغب في إجرائها. لا تتردد في التجربة واللعب بوظائف مختلفة.
إذا كنت مهتمًا بتعلم علوم البيانات لتكون في مقدمة التطورات التكنولوجية السريعة ، فراجع برنامج upGrad & IIIT-B التنفيذي في علوم البيانات واكتسب مهارات المستقبل.
ما هي المهارات المطلوبة لتطوير مشروع الكشف عن الأخبار المزيفة في لغة Python؟
يتم استخدام Python لبناء مشاريع الكشف عن الأخبار المزيفة بسبب كتابتها الديناميكية ، وهياكل البيانات المضمنة ، والمكتبات القوية ، وأطر العمل ، ودعم المجتمع. المهارات الأخرى المطلوبة لتطوير مشروع الكشف عن الأخبار المزيفة في Python هي التعلم الآلي ومعالجة اللغة الطبيعية والذكاء الاصطناعي. معرفة هذه المهارات أمر لا بد منه للمتعلمين الذين ينوون القيام بهذا المشروع. يمكن للمتعلمين تعلم هذه المهارات بسهولة عبر الإنترنت.
كيف تستخدم الشركات مشاريع الكشف عن الأخبار الوهمية في لغة بايثون؟
نظرًا لوجود معظم الأخبار المزيفة على منصات التواصل الاجتماعي ، فقد يكون الفصل بين الأخبار الحقيقية والمزيفة أمرًا صعبًا. تستخدم منصات وسائل التواصل الاجتماعي ومعظم الشركات الإعلامية مشروع الكشف عن الأخبار المزيفة لتحديد ما إذا كانت الأخبار التي يتم تداولها ملفقة أم لا. تستخدم معظم الشركات التعلم الآلي بالإضافة إلى المشروع لأتمتة عملية البحث عن الأخبار المزيفة بدلاً من الاعتماد على البشر في أداء المهمة الشاقة.
ما هي بعض التطبيقات الواقعية الأخرى للبايثون؟
تمتلك Python مجموعة واسعة من تطبيقات العالم الحقيقي. تدعم Python أنظمة التشغيل عبر الأنظمة الأساسية ، مما يجعل تطوير التطبيقات التي تستخدمها أكثر قابلية للإدارة. يتم استخدام Python لتشغيل بعض التطبيقات الأكثر شهرة في العالم ، بما في ذلك YouTube و BitTorrent و DropBox. غالبًا ما يتم استخدام Python في إنتاج الألعاب المبتكرة. تُستخدم Python أيضًا في التعلم الآلي وعلوم البيانات والذكاء الاصطناعي لأنها تساعد في إنشاء خوارزميات متكررة استنادًا إلى البيانات المخزنة. تعد Python منقذًا عندما يتعلق الأمر باستخراج كميات هائلة من البيانات من مواقع الويب ، والتي يمكن للمستخدمين استخدامها لاحقًا في عمليات مختلفة في العالم الحقيقي مثل مقارنة الأسعار ، وإعلانات الوظائف ، والبحث والتطوير ، وما إلى ذلك.