Proiect de detectare a știrilor false în Python [cu codificare]

Publicat: 2020-12-14

Citiți vreodată o știre care pare falsă? Cu toții întâlnim astfel de articole de știri și recunoaștem instinctiv că ceva nu se simte în regulă. Din cauza atâtor postări, este aproape imposibil să separi binele de rău. Aici, nu vorbim doar despre afirmații false și despre punctele de fapt, ci mai degrabă despre lucruri care arată greșit complicat în limbajul însuși.

V-ați întrebat vreodată cum să dezvoltați un proiect de detectare a știrilor false? Dar nu există o cale ușoară de a afla care știri sunt false și care nu, mai ales în zilele noastre, cu viteza de răspândire a știrilor pe rețelele sociale. Totuși, unele soluții ar putea ajuta la identificarea acestor fapte greșite.

Există două moduri de a pretinde că unele știri sunt false sau nu: în primul rând, un atac asupra punctelor de fapt. În al doilea rând, limbajul. Primul se poate face doar prin căutări substanțiale pe internet cu sisteme automate de interogare. Ar putea fi o sarcină copleșitoare, mai ales pentru cineva care abia începe cu știința datelor și procesarea limbajului natural.

Acesta din urmă este posibil printr-o conductă de procesare a limbajului natural urmată de o conductă de învățare automată. Acesta este modul în care am implementa proiectul nostru de detectare a știrilor false în Python. Este o altă dintre problemele care sunt recunoscute ca o problemă de învățare automată pusă ca o problemă de procesare a limbajului natural. Dacă sunteți începător și doriți să aflați mai multe despre știința datelor, consultați cursurile noastre online de știință a datelor de la universități de top.

Citiți: Idei și subiecte pentru proiecte Python

Există multe seturi de date pentru acest tip de aplicație, dar l-am folosi pe cel menționat aici . Datele conțin aproximativ 7500 de fluxuri de știri cu două etichete țintă: fals sau real. Setul de date constă și din titlul știrilor specifice.

Pașii în curs pentru procesarea limbajului natural ar fi următorii:

  1. Obținerea și încărcarea datelor
  2. Curățarea setului de date
  3. Eliminarea simbolurilor suplimentare
  4. Eliminarea semnelor de punctuație
  5. Eliminarea cuvintelor oprite
  6. tulpini
  7. Tokenizare
  8. Extracții de caracteristici
  9. Vectorizator TF-IDF
  10. Contor vectorizator cu transformator TF-IDF
  11. Antrenamentul și verificarea modelului de învățare automată

Înainte de a începe să discutăm despre etapele de implementare a proiectului de detectare a știrilor false , să importăm bibliotecile necesare:

Cod:

importa panda ca pd
import numpy ca np
import re
șir de import
de la nltk.corpus importarea cuvintelor oprite
din nltk.tokenize import word_tokenize

stop_words = set(stopwords.words( 'engleză' ))

Primul pas este achiziționarea datelor. Am furnizat deja linkul către fișierul CSV; dar, este, de asemenea, crucial să discutați despre cealaltă modalitate de a vă genera datele.

Una dintre metode este web scraping. Pentru aceasta, trebuie să codificăm un crawler web și să specificăm site-urile de pe care trebuie să obțineți datele. Dar atenție, există două probleme cu această abordare.

În primul rând, ar putea fi ilegal să renunțați la multe site-uri, așa că trebuie să aveți grijă de asta. Și în al doilea rând, datele ar fi foarte brute. Întreaga conductă va fi atașată cu o listă de pași pentru a converti acele date brute într-un fișier CSV sau un set de date funcțional. Prin urmare, folosim fișierul CSV prestabilit cu date organizate.

Cu toate acestea, dacă sunteți interesat, puteți consulta cursul upGrad despre știința datelor, în care există suficiente resurse disponibile cu explicații adecvate despre ingineria datelor și web scraping. Asigurați-vă că le verificați aici .

Acesta este modul în care importăm setul de date și atașăm etichetele. Rețineți cum aruncăm coloanele inutile din setul de date. Dacă este necesar pentru o valoare mai mare, puteți menține acele coloane sus. Dar chiar acum, proiectul nostru de detectare a știrilor false ar funcționa fără probleme doar pe coloanele de text și etichete țintă.

Cod:

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)

Mergând mai departe, următorul pas este curățarea datelor existente. De ce este necesar acest pas? Este crucial să înțelegem că lucrăm cu o mașină și o învățăm să împartă falsul și realul. În acest moment, avem date textuale, dar computerele lucrează pe numere. Deci mai întâi este necesar să le convertim în numere și un pas înainte de aceasta este să ne asigurăm că transformăm doar acele texte care sunt necesare pentru înțelegere.

Primul pas în conducta de curățare este să verificați dacă setul de date conține simboluri suplimentare de șters. Ar putea fi adrese web sau oricare dintre celelalte simboluri de referință, cum ar fi at(@) sau hashtag-uri. Iată codul:

Cod:

# Eliminați adresele URL
text = re.sub( r”http\S+|www\S+|https\S+” , , text, flags=re.MULTILINE)
# Eliminați referințele utilizatorului @ și „#” din text
text = re.sub( r'\@\w+|\#' , , text)

Odată ce îl eliminăm, următorul pas este să ștergem celelalte simboluri: semnele de punctuație. Dacă ne gândim bine, semnele de punctuație nu au o contribuție clară în înțelegerea realității unei anumite știri. Uneori, este posibil ca, dacă există o mulțime de semne de punctuație, atunci știrea să nu fie reală, de exemplu, utilizarea excesivă a exclamațiilor.

Dar acestea sunt cazuri rare și ar necesita o analiză specifică bazată pe reguli. Deci, pentru acest proiect de detectare a știrilor false , am elimina semnele de punctuație. Iată cum să o faci:

Cod:

text = text.translate(str.maketrans( , , string.punctuation))

Următorul pas este să conduci cuvântul până la miezul lui și să le arăți. Tokenizarea înseamnă a transforma fiecare propoziție într-o listă de cuvinte sau simboluri. Iată un cod cu două linii care trebuie adăugat:

Cod:

jetoane = word_tokenize(text)
cuvinte = [w pentru w în jetoane dacă nu w în cuvinte_stop]

Următorul pas este unul crucial. Conversia jetoanelor în numere semnificative. Acest pas este cunoscut și sub denumirea de extragere a caracteristicilor. Pentru aplicația noastră, vom folosi metoda TF-IDF pentru a extrage și a construi caracteristicile pentru pipeline-ul nostru de învățare automată.

TF-IDF înseamnă în esență termenul de frecvență inversă a documentului. După cum sugerează numele, colectăm informațiile despre setul de date prin frecvența termenilor, precum și frecvența termenilor din întregul set de date sau culegerea de documente.

TF-IDF poate fi calculat cu ușurință prin amestecarea ambelor valori ale TF și IDF. Ambele formule implică rapoarte simple.

TF = nu. de ori termenul apare în document / numărul total de termeni.

IDF = jurnal de ( nr. total de documente / nr. de documente in care apare termenul )

Acum Python are două implementări pentru conversia TF-IDF. Primul este un vectoriser TF-IDF și al doilea este transformatorul TF-IDF. Diferența este că transformatorul necesită o implementare a unui pachet de cuvinte înainte de transformare, în timp ce vectorizatorul combină ambii pași într-unul singur. Am putea folosi, de asemenea, vectoriserul de numărare, care este o implementare simplă a pachetului de cuvinte. Dar TF-IDF ar funcționa mai bine pe un anumit set de date.

Iată cum ar putea fi implementat TF-IDF.

Cod:

din sklearn.feature_extraction.text import TfidfVectorizer

tf_vector = TfidfVectorizer(sublinear_tf= True )
tf_vector.fit(df_text[ 'text' ])

Următorul pas este conducta de învățare automată. La fel ca conducta tipică ML, trebuie să introducem datele în X și y. Pentru a face acest lucru, folosim X ca matrice furnizată ca ieșire de vectoriserul TF-IDF, care trebuie aplatizat.

Putem folosi funcția de călătorie din Python pentru a converti matricea într-o matrice. Valorile y nu pot fi adăugate direct, deoarece sunt încă etichete și nu numere. Pentru a le converti în 0 și 1, folosim codificatorul de etichete al lui Sklearn.

Acest codificator transformă textele etichetelor în ținte numerotate. De exemplu, să presupunem că avem o listă de etichete ca aceasta: ['real', 'fake', 'fake', 'fake']

Ceea ce avem nevoie în esență este o listă ca aceasta: [1, 0, 0, 0]. Ceea ce face codificatorul de etichete este că ia toate etichetele distincte și face o listă. Pentru exemplul nostru, lista ar fi ['fals', 'real'].

Iată implementarea aceluiași lucru:

Cod:

X_text = tf_vector.transform(df_text[ 'text' ].ravel())
y_values ​​= np.array(df_text[ 'label' ].ravel())

din preprocesarea importului sklearn
le = preprocesare.LabelEncoder()
le.fit(y_values) le.transform(y_values)

Odată terminat, se termină secțiunile de antrenament și testare. Poate fi realizat prin utilizarea pachetului de preprocesare al lui sklearn și importând funcția de împărțire a testului de tren.

Cod:

din 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 )

Pasul final este folosirea modelelor. Există multe modele bune de învățare automată disponibile, dar chiar și modelele de bază simple ar funcționa bine la implementarea noastră a proiectelor de detectare a știrilor false . Mai întâi implementăm un model de regresie logistică. Iată cum să implementați folosind sklearn.

Cod:

din sklearn.metrics import accuracy_score

din sklearn.linear_model import LogisticRegression

model = LogisticRegression(solver= 'lbfgs' )
model.fit(X_train, y_train)
y_predict = model.predict(X_test)
print(accuracy_score(y_test, y_predict))

Modelul se comporta destul de bine. O precizie de 92% pe un model de regresie este destul de decentă. De asemenea, puteți implementa alte modele disponibile și puteți verifica precizia.

Deci, acesta este modul în care puteți implementa un proiect de detectare a știrilor false folosind Python.

Rețineți că sunt multe lucruri de făcut aici. Conducta NLP nu este încă complet finalizată. Există multe alte funcții disponibile care pot fi aplicate pentru a obține extrageri și mai bune de caracteristici.

Citește și: Idei de proiecte Python Open Source

În felul în care știrile false adaptează tehnologia, ar fi necesare modele de procesare din ce în ce mai bune. Și aceste modele ar fi mai mult în înțelegerea limbajului natural și mai puțin prezentate ca model de învățare automată în sine. De asemenea, modelele pot fi reglate fin în funcție de caracteristicile utilizate. Setul de date ar putea fi adaptat dinamic pentru a-l face să funcționeze pe datele curente. Dar asta ar necesita un model instruit exhaustiv pe articolele actuale de știri.

Deci, dacă sunt disponibile mai multe date, ar putea fi realizate modele mai bune și aplicabilitatea proiectelor de detectare a știrilor false poate fi îmbunătățită. Dar schema internă și conductele centrale ar rămâne aceleași. Conductele explicate sunt foarte adaptabile la orice experimente pe care doriți să le efectuați. Simțiți-vă liber să încercați și să vă jucați cu diferite funcții.

Dacă sunteți curios să învățați știința datelor pentru a fi în fața progreselor tehnologice rapide, consultați programul Executive PG în știința datelor de la upGrad și IIIT-B și perfecționați-vă pentru viitor.

Care sunt abilitățile necesare pentru a dezvolta un proiect de detectare a știrilor false în Python?

Python este folosit pentru construirea de proiecte de detectare a știrilor false datorită tastării dinamice, structurilor de date încorporate, bibliotecilor puternice, cadrelor și suportului comunitar. Celelalte abilități necesare pentru a dezvolta un proiect de detectare a știrilor false în Python sunt învățarea automată, procesarea limbajului natural și inteligența artificială. Cunoașterea acestor abilități este o necesitate pentru cursanții care intenționează să realizeze acest proiect. Cursanții pot învăța cu ușurință aceste abilități online.

Cum folosesc companiile proiectele de detectare a știrilor false ale Python?

Deoarece majoritatea știrilor false se găsesc pe platformele de social media, separarea știrilor reale și fake poate fi dificilă. Platformele de social media și majoritatea firmelor de media utilizează Proiectul de detectare a știrilor false pentru a determina automat dacă știrile difuzate sunt sau nu fabricate. Majoritatea companiilor folosesc învățarea automată în plus față de proiect pentru a automatiza acest proces de găsire de știri false, mai degrabă decât să se bazeze pe oameni pentru a trece prin sarcina obositoare.

Care sunt alte aplicații din viața reală ale python?

Python are o gamă largă de aplicații din lumea reală. Python acceptă sisteme de operare multiplatformă, ceea ce face ca dezvoltarea aplicațiilor folosindu-l să fie mult mai ușor de gestionat. Python este folosit pentru a alimenta unele dintre cele mai cunoscute aplicații din lume, inclusiv YouTube, BitTorrent și DropBox. Python este adesea folosit în producția de jocuri inovatoare. Python este, de asemenea, folosit în învățarea automată, știința datelor și inteligența artificială, deoarece ajută la crearea de algoritmi care se repetă pe baza datelor stocate. Python este un salvator atunci când vine vorba de extragerea unor cantități mari de date de pe site-uri web, pe care utilizatorii le pot utiliza ulterior în diferite operațiuni din lumea reală, cum ar fi compararea prețurilor, postările de locuri de muncă, cercetare și dezvoltare și așa mai departe.