Projekt wykrywania fałszywych wiadomości w Pythonie [z kodowaniem]

Opublikowany: 2020-12-14

Czytałeś kiedyś wiadomość, która wydaje się fałszywa? Wszyscy spotykamy się z takimi artykułami i instynktownie rozpoznajemy, że coś jest nie tak. Ze względu na tak wiele postów, prawie niemożliwe jest oddzielenie dobra od zła. Mówimy tu nie tylko o fałszywych twierdzeniach i faktach, ale raczej o rzeczach, które w samym języku wyglądają źle.

Czy kiedykolwiek zastanawiałeś się, jak opracować projekt wykrywania fałszywych wiadomości? Ale nie ma łatwego sposobu, aby dowiedzieć się, które wiadomości są fałszywe, a które nie, zwłaszcza w dzisiejszych czasach, z szybkością rozprzestrzeniania się wiadomości w mediach społecznościowych. Mimo to niektóre rozwiązania mogą pomóc w zidentyfikowaniu tych wykroczeń.

Istnieją dwa sposoby twierdzenia, że ​​niektóre wiadomości są fałszywe lub nie: po pierwsze, atak na fakty. Po drugie, język. To pierwsze można wykonać tylko poprzez znaczne przeszukiwanie Internetu za pomocą zautomatyzowanych systemów zapytań. Może to być przytłaczające zadanie, zwłaszcza dla kogoś, kto dopiero zaczyna naukę danych i przetwarzanie języka naturalnego.

To ostatnie jest możliwe dzięki potoku przetwarzania języka naturalnego, po którym następuje potok uczenia maszynowego. W ten sposób zaimplementowalibyśmy nasz projekt wykrywania fałszywych wiadomości w Pythonie. Jest to kolejny problem, który jest rozpoznawany jako problem uczenia maszynowego jako problem przetwarzania języka naturalnego. Jeśli jesteś początkującym i chcesz dowiedzieć się więcej na temat nauki o danych, zapoznaj się z naszymi internetowymi kursami nauki o danych prowadzonymi przez najlepsze uniwersytety.

Przeczytaj: Pomysły i tematy dotyczące projektów w Pythonie

Istnieje wiele zbiorów danych dla tego typu aplikacji, ale my użyjemy tego, o którym mowa tutaj . Dane zawierają ponad 7500 kanałów informacyjnych z dwiema etykietami docelowymi: fałszywymi lub rzeczywistymi. Zestaw danych zawiera również tytuł konkretnego artykułu informacyjnego.

Kroki w potoku przetwarzania języka naturalnego byłyby następujące:

  1. Pozyskiwanie i ładowanie danych
  2. Czyszczenie zbioru danych
  3. Usuwanie dodatkowych symboli
  4. Usuwanie znaków interpunkcyjnych
  5. Usuwanie odrzuconych słów
  6. Przybitka
  7. Tokenizacja
  8. Ekstrakcje cech
  9. Wektoryzator TF-IDF
  10. Wektoryzator licznika z transformatorem TF-IDF
  11. Szkolenie i weryfikacja modelu uczenia maszynowego

Zanim zaczniemy omawiać etapy wdrożenia projektu wykrywania fałszywych wiadomości , zaimportujmy niezbędne biblioteki:

Kod:

importuj pandy jako PD
importuj numer jako np
importuj ponownie
importować ciąg
z nltk.corpus import stopwords
z nltk.tokenize importuj word_tokenize

stop_words = set(stopwords.words( 'angielski' ))

Pierwszym krokiem jest pozyskanie danych. Podaliśmy już link do pliku CSV; ale ważne jest również omówienie innego sposobu generowania danych.

Jedną z metod jest web scraping. W tym celu musimy zakodować robota internetowego i określić witryny, z których chcesz uzyskać dane. Ale bądź ostrożny, z takim podejściem wiążą się dwa problemy.

Po pierwsze, usuwanie wielu stron może być nielegalne, więc musisz się tym zająć. Po drugie, dane byłyby bardzo surowe. Do całego potoku zostanie dołączona lista kroków, które należy wykonać, aby przekonwertować surowe dane na działający plik CSV lub zestaw danych. Dlatego używamy wstępnie ustawionego pliku CSV ze zorganizowanymi danymi.

Jeśli jednak jesteś zainteresowany, możesz zapoznać się z kursem UpGrad dotyczącym nauki o danych, w którym dostępnych jest wystarczająco dużo zasobów z odpowiednimi wyjaśnieniami na temat inżynierii danych i skrobania sieci. Sprawdź je tutaj .

W ten sposób importujemy nasz zbiór danych i dołączamy etykiety. Zwróć uwagę, jak usuwamy niepotrzebne kolumny ze zbioru danych. Jeśli jest to wymagane w przypadku wyższej wartości, możesz zachować te kolumny. Ale w tej chwili nasz projekt wykrywania fałszywych wiadomości działałby płynnie tylko na kolumnach tekstu i etykiet docelowych.

Kod:

df_text = pd.read_csv( 'fałszywe_lub_real_news.csv' , kodowanie= 'latin-1' )
df_text.columns = [ 'id' , 'tytuł' , 'tekst' , 'etykieta' ] df_text.drop(['id', 'tytuł'], oś=1)

Idąc dalej, kolejnym krokiem jest wyczyszczenie istniejących danych. Dlaczego ten krok jest konieczny? Ważne jest, aby zrozumieć, że pracujemy z maszyną i uczymy ją rozdzielać fałsz i rzeczywistość. W tej chwili mamy dane tekstowe, ale komputery działają na liczbach. Zatem najpierw należy przekonwertować je na liczby, a krok przed tym jest upewnienie się, że przekształcamy tylko te teksty, które są niezbędne do zrozumienia.

Pierwszym krokiem w procesie czyszczenia jest sprawdzenie, czy zestaw danych zawiera dodatkowe symbole do usunięcia. Mogą to być adresy internetowe lub inne symbole odsyłające, takie jak at(@) lub hashtagi. Oto kod:

Kod:

# Usuń adresy URL
text = re.sub( r”http\S+|www\S+|https\S+” , , text, flags=re.MULTILINE)
# Usuń użytkownika @ referencje i „#” z tekstu
tekst = re.sub( r'\@\w+|\#' , , tekst)

Gdy to usuniemy, następnym krokiem jest usunięcie innych symboli: znaków interpunkcyjnych. Jeśli się nad tym zastanowimy, znaki interpunkcyjne nie mają wyraźnego wpływu na zrozumienie realiów poszczególnych wiadomości. Czasami może się zdarzyć, że jeśli jest dużo znaków interpunkcyjnych, to wiadomość nie jest prawdziwa, na przykład nadużywanie wykrzykników.

Ale są to rzadkie przypadki i wymagałyby szczegółowej analizy opartej na regułach. Tak więc w przypadku tego projektu wykrywania fałszywych wiadomości usunęlibyśmy znaki interpunkcyjne. Oto jak to zrobić:

Kod:

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

Następnym krokiem jest zakorzenienie słowa do samego rdzenia i tokenizacja słów. Tokenizacja oznacza uczynienie każdego zdania listą słów lub tokenów. Oto dwuwierszowy kod, który należy dołączyć:

Kod:

tokeny = słowo_tokenize(tekst)
słowa = [w dla w w tokenach , jeśli nie w w stop_words]

Następny krok jest kluczowy. Zamiana tokenów na znaczące liczby. Ten krok jest również znany jako wyodrębnianie funkcji. W przypadku naszej aplikacji korzystamy z metody TF-IDF, aby wyodrębnić i zbudować funkcje dla naszego potoku uczenia maszynowego.

TF-IDF zasadniczo oznacza termin częstotliwość dokumentu odwrotna do częstotliwości. Jak sugeruje nazwa, zbieramy informacje o zbiorze danych poprzez częstotliwość terminów, a także częstotliwość terminów w całym zbiorze danych lub zbiorze dokumentów.

TF-IDF można łatwo obliczyć mieszając obie wartości TF i IDF. Obie formuły zawierają proste proporcje.

TF = nie. razy termin pojawia się w dokumencie / łączna liczba terminów.

IDF = log of ( całkowita liczba dokumentów / liczba dokumentów , w których występuje termin )

Teraz Python ma dwie implementacje konwersji TF-IDF. Pierwszy to wektoryzator TF-IDF, a drugi to transformator TF-IDF. Różnica polega na tym, że transformator wymaga implementacji worka słów przed transformacją, podczas gdy wektoryzator łączy oba kroki w jeden. Moglibyśmy również użyć wektoryzatora liczby, który jest prostą implementacją worka słów. Ale TF-IDF działałby lepiej na konkretnym zbiorze danych.

Oto jak można wdrożyć TF-IDF.

Kod:

ze sklearn.feature_extraction.text import TfidfVectorizer

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

Następnym krokiem jest potok uczenia maszynowego. Podobnie jak w typowym potoku ML, musimy wprowadzić dane do X i Y. Aby to zrobić, używamy X jako macierzy dostarczanej jako wyjście przez wektoryzator TF-IDF, który musi zostać spłaszczony.

Możemy użyć funkcji travel w Pythonie, aby przekonwertować macierz na tablicę. Wartości y nie mogą być bezpośrednio dołączane, ponieważ nadal są etykietami, a nie liczbami. Aby przekonwertować je na 0s i 1s, używamy kodera etykiet sklearna.

Ten koder przekształca teksty etykiet na ponumerowane cele. Załóżmy na przykład, że mamy listę etykiet takich jak: ['prawdziwe', 'fałszywe', 'fałszywe', 'fałszywe']

Zasadniczo potrzebujemy takiej listy: [1, 0, 0, 0]. To, co robi koder etykiet, to bierze wszystkie odrębne etykiety i tworzy listę. W naszym przykładzie lista będzie miała postać ['fałszywy', 'prawdziwy'].

Oto realizacja tego samego:

Kod:

X_text = tf_vector.transform(df_text[ 'tekst' ].ravel())
y_values ​​= np. tablica(df_text[ 'etykieta' ].ravel())

z wstępnego przetwarzania importu sklearn
le = przetwarzanie wstępne.LabelEncoder()
le.fit(y_wartości) le.transform(y_wartości)

Po zakończeniu treningi i testy są kończone. Można to osiągnąć, korzystając z pakietu przetwarzania wstępnego sklearna i importując funkcję podziału testu pociągu.

Kod:

ze sklearn.model_selection importuj 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 )

Ostatnim krokiem jest wykorzystanie modeli. Dostępnych jest wiele dobrych modeli uczenia maszynowego, ale nawet proste modele podstawowe sprawdziłyby się w naszych projektach wykrywania fałszywych wiadomości . Najpierw wdrażamy model regresji logistycznej. Oto jak zaimplementować za pomocą sklearn.

Kod:

ze sklearn.metrics importuje wynik_dokładności

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

Model sprawuje się całkiem nieźle. 92-procentowa dokładność w modelu regresji jest całkiem przyzwoita. Możesz również zaimplementować inne dostępne modele i sprawdzić dokładność.

W ten sposób możesz zaimplementować projekt wykrywania fałszywych wiadomości za pomocą Pythona.

Zauważ, że jest tu wiele rzeczy do zrobienia. Potok NLP nie jest jeszcze w pełni ukończony. Dostępnych jest wiele innych funkcji, które można zastosować, aby uzyskać jeszcze lepsze wyodrębnianie funkcji.

Przeczytaj także: Pomysły na projekty Open Source w Pythonie

Sposób, w jaki fake news jest dostosowywany do technologii, potrzebne byłyby coraz lepsze modele przetwarzania. Modele te byłyby bardziej związane z rozumieniem języka naturalnego, a mniej przedstawiane jako sam model uczenia maszynowego. Modele można również dostroić zgodnie z używanymi funkcjami. Zbiór danych można dynamicznie dostosowywać, aby działał na bieżących danych. Ale to wymagałoby modelu wyczerpująco przeszkolonego w zakresie bieżących artykułów prasowych.

Tak więc, jeśli dostępnych jest więcej danych, można by stworzyć lepsze modele i poprawić zastosowanie projektów wykrywania fałszywych wiadomości . Ale schemat wewnętrzny i główne rurociągi pozostaną takie same. Wyjaśnione potoki można łatwo dostosować do dowolnych eksperymentów, które możesz chcieć przeprowadzić. Wypróbuj i pobaw się różnymi funkcjami.

Jeśli jesteś ciekawy, jak uczyć się nauki o danych, aby być na czele szybkiego postępu technologicznego, sprawdź program Executive PG w dziedzinie nauki o danych i podnoś swoje umiejętności na przyszłość.

Jakie umiejętności są wymagane do opracowania projektu wykrywania fałszywych wiadomości w Pythonie?

Python jest używany do tworzenia projektów wykrywania fałszywych wiadomości ze względu na dynamiczne pisanie, wbudowane struktury danych, potężne biblioteki, frameworki i wsparcie społeczności. Inne wymagane umiejętności wymagane do opracowania projektu wykrywania fałszywych wiadomości w Pythonie to uczenie maszynowe, przetwarzanie języka naturalnego i sztuczna inteligencja. Znajomość tych umiejętności jest koniecznością dla osób uczących się, które zamierzają wykonać ten projekt. Uczniowie mogą łatwo nauczyć się tych umiejętności online.

W jaki sposób firmy wykorzystują projekty Pythona do wykrywania fałszywych wiadomości?

Ponieważ większość fałszywych wiadomości znajduje się na platformach mediów społecznościowych, oddzielenie prawdziwych i fałszywych wiadomości może być trudne. Platformy mediów społecznościowych i większość firm medialnych wykorzystuje projekt wykrywania fałszywych wiadomości do automatycznego określania, czy rozpowszechniane wiadomości są sfabrykowane. Większość firm wykorzystuje uczenie maszynowe oprócz projektu, aby zautomatyzować ten proces wyszukiwania fałszywych wiadomości, zamiast polegać na ludziach, którzy przejdą przez żmudne zadanie.

Jakie są inne rzeczywiste zastosowania Pythona?

Python ma szeroką gamę rzeczywistych aplikacji. Python obsługuje wieloplatformowe systemy operacyjne, dzięki czemu tworzenie aplikacji przy jego użyciu jest znacznie łatwiejsze w zarządzaniu. Python jest używany do obsługi niektórych z najbardziej znanych aplikacji na świecie, w tym YouTube, BitTorrent i DropBox. Python jest często wykorzystywany w produkcji innowacyjnych gier. Python jest również wykorzystywany w uczeniu maszynowym, nauce o danych i sztucznej inteligencji, ponieważ pomaga w tworzeniu powtarzających się algorytmów na podstawie przechowywanych danych. Python ratuje życie, jeśli chodzi o wydobywanie ogromnych ilości danych ze stron internetowych, które użytkownicy mogą następnie wykorzystać w różnych rzeczywistych operacjach, takich jak porównywanie cen, publikowanie ofert pracy, badania i rozwój i tak dalej.