Fake-News-Erkennungsprojekt in Python [mit Codierung]
Veröffentlicht: 2020-12-14Haben Sie jemals eine Nachricht gelesen, die einfach falsch erscheint? Wir alle begegnen solchen Nachrichtenartikeln und erkennen instinktiv, dass sich etwas nicht richtig anfühlt. Aufgrund der vielen Posts da draußen ist es fast unmöglich, das Richtige vom Falschen zu trennen. Hier sprechen wir nicht nur von falschen Behauptungen und Tatsachen, sondern von den Dingen, die in der Sprache selbst kompliziert aussehen.
Haben Sie sich jemals gefragt, wie man ein Projekt zur Erkennung gefälschter Nachrichten entwickelt? Aber es gibt keinen einfachen Ausweg, um herauszufinden, welche Nachrichten gefälscht sind und welche nicht, insbesondere heutzutage mit der Geschwindigkeit der Verbreitung von Nachrichten in sozialen Medien. Dennoch könnten einige Lösungen dabei helfen, diese Fehlverhalten zu identifizieren.
Es gibt zwei Möglichkeiten zu behaupten, dass einige Nachrichten gefälscht sind oder nicht: Erstens ein Angriff auf die Fakten. Zweitens die Sprache. Ersteres kann nur durch umfangreiche Recherchen im Internet mit automatisierten Abfragesystemen erfolgen. Dies könnte eine überwältigende Aufgabe sein, insbesondere für jemanden, der gerade erst mit Data Science und der Verarbeitung natürlicher Sprache beginnt.
Letzteres ist durch eine Pipeline zur Verarbeitung natürlicher Sprache gefolgt von einer Pipeline für maschinelles Lernen möglich. So würden wir unser Projekt zur Erkennung gefälschter Nachrichten in Python implementieren. Es ist ein weiteres der Probleme, die als ein Problem des maschinellen Lernens erkannt werden, das sich als ein Problem der Verarbeitung natürlicher Sprache darstellt. Wenn Sie Anfänger sind und mehr über Data Science erfahren möchten, sehen Sie sich unsere Online-Kurse zu Data Science von Top-Universitäten an.
Lesen Sie: Ideen und Themen für Python-Projekte
Es gibt viele Datensätze für diese Art von Anwendung, aber wir würden den hier erwähnten verwenden . Die Daten enthalten über 7500 Newsfeeds mit zwei Ziellabels: Fake oder echt. Der Datensatz besteht auch aus dem Titel der jeweiligen Nachricht.
Die Schritte in der Pipeline für die Verarbeitung natürlicher Sprache wären wie folgt:
- Erfassen und Laden der Daten
- Bereinigen des Datensatzes
- Entfernen von zusätzlichen Symbolen
- Satzzeichen entfernen
- Entfernen der Stoppwörter
- Stemmen
- Tokenisierung
- Feature-Extraktionen
- TF-IDF-Vektorisierer
- Zählervektorisierer mit TF-IDF-Transformator
- Training und Verifizierung von Modellen für maschinelles Lernen
Bevor wir mit der Diskussion der Implementierungsschritte des Fake-News-Erkennungsprojekts beginnen , lassen Sie uns die erforderlichen Bibliotheken importieren:
Code:
pandas als pd importieren importiere numpy als np importieren re Zeichenkette importieren aus nltk.corpus import stopwords aus nltk.tokenize import word_tokenize stop_words = set(stopwords.words( 'english' )) |
Der erste Schritt ist die Erfassung der Daten. Den Link zur CSV-Datei haben wir bereits bereitgestellt; Es ist jedoch auch wichtig, die andere Möglichkeit zur Generierung Ihrer Daten zu besprechen.
Eine der Methoden ist Web Scraping. Dazu müssen wir einen Webcrawler codieren und die Websites angeben, von denen Sie die Daten erhalten müssen. Aber seien Sie vorsichtig, es gibt zwei Probleme mit diesem Ansatz.
Erstens kann es illegal sein, viele Websites zu löschen, also müssen Sie sich darum kümmern. Und zweitens wären die Daten sehr roh. An die gesamte Pipeline würde eine Liste mit Schritten angehängt, um diese Rohdaten in eine funktionsfähige CSV-Datei oder einen Datensatz zu konvertieren. Daher verwenden wir die voreingestellte CSV-Datei mit organisierten Daten.
Bei Interesse können Sie sich jedoch den upGrad-Kurs zu Data Science ansehen, in dem genügend Ressourcen mit angemessenen Erklärungen zu Data Engineering und Web Scraping verfügbar sind. Stellen Sie sicher, dass Sie diese hier überprüfen .
Auf diese Weise importieren wir unseren Datensatz und hängen die Labels an. Beachten Sie, wie wir die unnötigen Spalten aus dem Datensatz löschen. Wenn ein höherer Wert erforderlich ist, können Sie diese Spalten beibehalten. Aber im Moment würde unser Projekt zur Erkennung gefälschter Nachrichten nur mit den Text- und Ziellabel-Spalten reibungslos funktionieren.
Code:
df_text = pd.read_csv( 'fake_or_real_news.csv' , encoding= 'latin-1' ) df_text.columns = [ 'id' , 'title' , 'text' , 'label' ] df_text.drop(['id', 'title'], axis=1) |
Der nächste Schritt besteht darin, die vorhandenen Daten zu bereinigen. Warum ist dieser Schritt notwendig? Es ist wichtig zu verstehen, dass wir mit einer Maschine arbeiten und ihr beibringen, das Falsche und das Echte zu trennen. Im Moment haben wir Textdaten, aber Computer arbeiten mit Zahlen. Zuerst müssen sie also in Zahlen umgewandelt werden, und ein Schritt davor besteht darin, sicherzustellen, dass wir nur die Texte umwandeln, die für das Verständnis notwendig sind.
Der erste Schritt in der Bereinigungspipeline besteht darin, zu prüfen, ob der Datensatz zusätzliche Symbole enthält, die entfernt werden müssen. Dies können Webadressen oder andere Verweissymbole wie at(@) oder Hashtags sein. Hier ist der Code:
Code:
# URLs entfernen text = re.sub( r”http\S+|www\S+|https\S+” , ” , text, flags=re.MULTILINE) # Benutzer-@-Referenzen und '#' aus dem Text entfernen text = re.sub( r'\@\w+|\#' , ” , text) |
Sobald wir das entfernt haben, besteht der nächste Schritt darin, die anderen Symbole zu entfernen: die Satzzeichen. Wenn wir darüber nachdenken, haben die Satzzeichen keinen klaren Einfluss auf das Verständnis der Realität bestimmter Nachrichten. Manchmal ist es möglich, dass die Nachricht nicht echt ist, wenn viele Satzzeichen vorhanden sind, z. B. übermäßige Verwendung von Ausrufen.
Aber das sind seltene Fälle und würden eine spezifische regelbasierte Analyse erfordern. Für dieses Projekt zur Erkennung gefälschter Nachrichten würden wir also die Satzzeichen entfernen. So geht's:
Code:
text = text.translate(str.maketrans( ” , ” , string.punctuation)) |
Der nächste Schritt besteht darin, das Wort bis ins Mark einzudämmen und die Wörter zu tokenisieren. Tokenisierung bedeutet, jeden Satz in eine Liste von Wörtern oder Tokens zu verwandeln. Hier ist ein zweizeiliger Code, der angehängt werden muss:
Code:
tokens = word_tokenize(text) Wörter = [w für w in Token , wenn nicht w in stop_words] |
Der nächste Schritt ist entscheidend. Die Umwandlung von Tokens in aussagekräftige Zahlen. Dieser Schritt wird auch als Merkmalsextraktion bezeichnet. Für unsere Anwendung verwenden wir die TF-IDF-Methode, um die Funktionen für unsere Pipeline für maschinelles Lernen zu extrahieren und zu erstellen.
TF-IDF bedeutet im Wesentlichen den Begriff frequenzinverse Dokumentenfrequenz. Wie der Name schon sagt, schöpfen wir die Informationen über den Datensatz über seine Häufigkeit von Begriffen sowie die Häufigkeit von Begriffen im gesamten Datensatz oder einer Sammlung von Dokumenten.
TF-IDF kann einfach berechnet werden, indem beide Werte von TF und IDF gemischt werden. Beide Formeln beinhalten einfache Verhältnisse.
TF = nein. wie oft der Begriff im Dokument vorkommt / Gesamtzahl der Begriffe.
IDF = log of ( Gesamtzahl der Dokumente / Anzahl der Dokumente, in denen der Begriff vorkommt )
Jetzt hat Python zwei Implementierungen für die TF-IDF-Konvertierung. Das erste ist ein TF-IDF-Vektorisierer und das zweite ist der TF-IDF-Transformator. Der Unterschied besteht darin, dass der Transformer vor der Transformation eine Bag-of-Words-Implementierung erfordert, während der Vectorizer beide Schritte in einem kombiniert. Wir könnten auch den Zählvektorisierer verwenden, der eine einfache Implementierung von Bag-of-Words ist. Aber das TF-IDF würde mit dem jeweiligen Datensatz besser funktionieren.

So könnte TF-IDF implementiert werden.
Code:
aus sklearn.feature_extraction.text import TfidfVectorizer tf_vector = TfidfVectorizer(sublinear_tf= True ) tf_vector.fit(df_text[ 'text' ]) |
Der nächste Schritt ist die Pipeline für maschinelles Lernen. Genau wie bei der typischen ML-Pipeline müssen wir die Daten in X und y bekommen. Dazu verwenden wir X als Matrix, die vom TF-IDF-Vektorisierer als Ausgabe bereitgestellt wird und die abgeflacht werden muss.
Wir können die Reisefunktion in Python verwenden, um die Matrix in ein Array umzuwandeln. Die y-Werte können nicht direkt angehängt werden, da es sich immer noch um Beschriftungen und nicht um Zahlen handelt. Um sie in 0 und 1 umzuwandeln, verwenden wir den Label-Encoder von sklearn.
Dieser Encoder wandelt die Beschriftungstexte in nummerierte Ziele um. Nehmen wir zum Beispiel an, dass wir eine Liste mit Labels wie dieser haben: ['echt', 'Fälschung', 'Fälschung', 'Fälschung']
Was wir im Wesentlichen benötigen, ist eine Liste wie diese: [1, 0, 0, 0]. Der Label-Encoder nimmt alle unterschiedlichen Labels und erstellt eine Liste. In unserem Beispiel wäre die Liste ['fake', 'real'].
Hier ist die Implementierung derselben:
Code:
X_text = tf_vector.transform(df_text[ 'text' ].ravel()) y_values = np.array(df_text[ 'label' ].ravel()) |
aus der sklearn - Importvorverarbeitung le = Vorverarbeitung.LabelEncoder() le.fit(y_values) le.transform(y_values) |
Sobald dies erledigt ist, sind die Trainings- und Testsplits abgeschlossen. Dies kann erreicht werden, indem das Vorverarbeitungspaket von sklearn verwendet und die Funktion train test split importiert wird.
Code:
aus sklearn.model_selection import 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 ) |
Der letzte Schritt ist die Verwendung der Modelle. Es gibt viele gute Modelle für maschinelles Lernen, aber selbst die einfachen Basismodelle würden bei unserer Implementierung von Projekten zur Erkennung gefälschter Nachrichten gut funktionieren . Wir implementieren zunächst ein logistisches Regressionsmodell. Hier erfahren Sie, wie Sie mit sklearn implementieren.
Code:
aus sklearn.metrics import precision_score aus sklearn.linear_model import LogisticRegression model = LogisticRegression(solver= 'lbfgs' ) |
Das Modell macht eine ziemlich gute Figur. Eine Genauigkeit von 92 Prozent bei einem Regressionsmodell ist ziemlich anständig. Sie können auch andere verfügbare Modelle implementieren und die Genauigkeiten überprüfen.
So können Sie also ein Projekt zur Erkennung gefälschter Nachrichten mit Python implementieren.
Beachten Sie, dass es hier viele Dinge zu tun gibt. Die NLP-Pipeline ist noch nicht vollständig abgeschlossen. Es stehen viele weitere Funktionen zur Verfügung, die angewendet werden können, um noch bessere Merkmalsextraktionen zu erhalten.
Lesen Sie auch: Ideen für Python-Open-Source-Projekte
So wie gefälschte Nachrichten die Technologie anpassen, wären immer bessere Verarbeitungsmodelle erforderlich. Und diese Modelle würden sich mehr auf das Verständnis natürlicher Sprache beziehen und weniger als maschinelles Lernmodell selbst dargestellt werden. Die Modelle können auch entsprechend der verwendeten Funktionen fein abgestimmt werden. Der Datensatz könnte dynamisch anpassbar gemacht werden, damit er mit aktuellen Daten funktioniert. Aber das würde ein Modell erfordern, das gründlich auf die aktuellen Nachrichtenartikel trainiert ist.
Wenn also mehr Daten verfügbar sind, könnten bessere Modelle erstellt und die Anwendbarkeit von Projekten zur Erkennung gefälschter Nachrichten verbessert werden. Aber das interne Schema und die Kernpipelines würden gleich bleiben. Die erläuterten Pipelines sind in hohem Maße an alle Experimente anpassbar, die Sie möglicherweise durchführen möchten. Fühlen Sie sich frei, verschiedene Funktionen auszuprobieren und mit ihnen zu spielen.
Wenn Sie neugierig darauf sind, Data Science zu lernen, um an der Spitze des rasanten technologischen Fortschritts zu stehen, sehen Sie sich das Executive PG Program in Data Science von upGrad & IIIT-B an und bilden Sie sich für die Zukunft weiter.
Welche Fähigkeiten sind erforderlich, um ein Projekt zur Erkennung gefälschter Nachrichten in Python zu entwickeln?
Python wird aufgrund seiner dynamischen Typisierung, integrierten Datenstrukturen, leistungsstarken Bibliotheken, Frameworks und Community-Unterstützung zum Erstellen von Projekten zur Erkennung gefälschter Nachrichten verwendet. Die anderen erforderlichen Fähigkeiten, die erforderlich sind, um ein Projekt zur Erkennung gefälschter Nachrichten in Python zu entwickeln, sind maschinelles Lernen, Verarbeitung natürlicher Sprache und künstliche Intelligenz. Die Kenntnis dieser Fähigkeiten ist ein Muss für Lernende, die beabsichtigen, dieses Projekt durchzuführen. Lernende können diese Fähigkeiten ganz einfach online erlernen.
Wie nutzen Unternehmen die Fake News Detection Projects von Python?
Da die meisten gefälschten Nachrichten auf Social-Media-Plattformen zu finden sind, kann es schwierig sein, echte und gefälschte Nachrichten zu trennen. Social-Media-Plattformen und die meisten Medienunternehmen nutzen das Fake News Detection Project, um automatisch festzustellen, ob die verbreiteten Nachrichten gefälscht sind oder nicht. Die meisten Unternehmen verwenden maschinelles Lernen zusätzlich zu dem Projekt, um diesen Prozess des Auffindens gefälschter Nachrichten zu automatisieren, anstatt sich auf Menschen zu verlassen, die diese mühsame Aufgabe erledigen.
Was sind einige andere reale Anwendungen von Python?
Python hat eine breite Palette von Anwendungen in der realen Welt. Python unterstützt plattformübergreifende Betriebssysteme, wodurch die Entwicklung von Anwendungen mit Python viel einfacher zu handhaben ist. Python wird verwendet, um einige der bekanntesten Apps der Welt zu betreiben, darunter YouTube, BitTorrent und DropBox. Python wird häufig bei der Produktion innovativer Spiele eingesetzt. Python wird auch im maschinellen Lernen, in der Datenwissenschaft und in der künstlichen Intelligenz verwendet, da es bei der Erstellung sich wiederholender Algorithmen auf der Grundlage gespeicherter Daten hilft. Python ist ein Lebensretter, wenn es darum geht, riesige Datenmengen aus Websites zu extrahieren, die Benutzer anschließend in verschiedenen realen Vorgängen wie Preisvergleichen, Stellenausschreibungen, Forschung und Entwicklung usw. verwenden können.