You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/pl/6-NLP/3-Translation-Sentiment/README.md

16 KiB

Tłumaczenie i analiza sentymentu za pomocą ML

W poprzednich lekcjach nauczyłeś się, jak zbudować podstawowego bota używając TextBlob, biblioteki, która wykorzystuje uczenie maszynowe w tle do wykonywania podstawowych zadań NLP, takich jak ekstrakcja fraz rzeczownikowych. Kolejnym ważnym wyzwaniem w lingwistyce komputerowej jest dokładne tłumaczenie zdania z jednego języka mówionego lub pisanego na inny.

Quiz przed wykładem

Tłumaczenie to bardzo trudny problem, który jest dodatkowo skomplikowany przez fakt, że istnieją tysiące języków, a każdy z nich może mieć bardzo różne zasady gramatyczne. Jednym z podejść jest przekształcenie formalnych zasad gramatycznych jednego języka, na przykład angielskiego, w strukturę niezależną od języka, a następnie przetłumaczenie jej poprzez konwersję na inny język. To podejście oznacza, że wykonasz następujące kroki:

  1. Identyfikacja. Zidentyfikuj lub oznacz słowa w języku wejściowym jako rzeczowniki, czasowniki itd.
  2. Tworzenie tłumaczenia. Wygeneruj bezpośrednie tłumaczenie każdego słowa w formacie docelowego języka.

Przykładowe zdanie, angielski na irlandzki

W języku 'angielskim' zdanie I feel happy składa się z trzech słów w kolejności:

  • podmiot (I)
  • czasownik (feel)
  • przymiotnik (happy)

Jednak w języku 'irlandzkim' to samo zdanie ma zupełnie inną strukturę gramatyczną - emocje takie jak "happy" czy "sad" są wyrażane jako coś spoczywającego na tobie.

Angielskie wyrażenie I feel happy w języku irlandzkim brzmiałoby Tá athas orm. Dosłowne tłumaczenie to Happy is upon me.

Osoba mówiąca po irlandzku, tłumacząc na angielski, powiedziałaby I feel happy, a nie Happy is upon me, ponieważ rozumie znaczenie zdania, nawet jeśli słowa i struktura zdania są różne.

Formalna kolejność zdania w języku irlandzkim to:

  • czasownik (Tá, czyli is)
  • przymiotnik (athas, czyli happy)
  • podmiot (orm, czyli upon me)

Tłumaczenie

Prosty program tłumaczący mógłby tłumaczyć tylko słowa, ignorując strukturę zdania.

Jeśli nauczyłeś się drugiego (lub trzeciego lub więcej) języka jako dorosły, mogłeś zacząć od myślenia w swoim ojczystym języku, tłumacząc pojęcia słowo po słowie w swojej głowie na drugi język, a następnie wypowiadając swoje tłumaczenie. To jest podobne do tego, co robią proste programy tłumaczące. Ważne jest, aby przejść ten etap, aby osiągnąć płynność!

Proste tłumaczenie prowadzi do złych (a czasem zabawnych) błędów tłumaczeniowych: I feel happy tłumaczy się dosłownie na Mise bhraitheann athas w języku irlandzkim. To oznacza (dosłownie) me feel happy i nie jest poprawnym zdaniem w języku irlandzkim. Mimo że angielski i irlandzki to języki używane na dwóch blisko sąsiadujących wyspach, są to bardzo różne języki z różnymi strukturami gramatycznymi.

Możesz obejrzeć kilka filmów o tradycjach językowych Irlandii, takich jak ten

Podejścia z użyciem uczenia maszynowego

Do tej pory nauczyłeś się o podejściu opartym na formalnych zasadach w przetwarzaniu języka naturalnego. Innym podejściem jest ignorowanie znaczenia słów i zamiast tego użycie uczenia maszynowego do wykrywania wzorców. Może to działać w tłumaczeniu, jeśli masz dużo tekstu (korpus) lub tekstów (korpora) w języku źródłowym i docelowym.

Na przykład, rozważ przypadek Dumy i uprzedzenia, znanej angielskiej powieści napisanej przez Jane Austen w 1813 roku. Jeśli porównasz książkę w języku angielskim z ludzkim tłumaczeniem książki na francuski, możesz wykryć frazy w jednym języku, które są idiomatycznie przetłumaczone na drugi. Zaraz to zrobisz.

Na przykład, gdy angielskie wyrażenie I have no money jest tłumaczone dosłownie na francuski, może stać się Je n'ai pas de monnaie. "Monnaie" to trudny francuski 'fałszywy przyjaciel', ponieważ 'money' i 'monnaie' nie są synonimami. Lepsze tłumaczenie, które mógłby zrobić człowiek, to Je n'ai pas d'argent, ponieważ lepiej oddaje znaczenie, że nie masz pieniędzy (a nie 'drobnych', co oznacza 'monnaie').

monnaie

Obraz autorstwa Jen Looper

Jeśli model ML ma wystarczająco dużo ludzkich tłumaczeń, aby zbudować na nich model, może poprawić dokładność tłumaczeń, identyfikując wspólne wzorce w tekstach, które zostały wcześniej przetłumaczone przez ekspertów mówiących w obu językach.

Ćwiczenie - tłumaczenie

Możesz użyć TextBlob, aby tłumaczyć zdania. Spróbuj słynnej pierwszej linijki Dumy i uprzedzenia:

from textblob import TextBlob

blob = TextBlob(
    "It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!"
)
print(blob.translate(to="fr"))

TextBlob całkiem dobrze radzi sobie z tłumaczeniem: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".

Można argumentować, że tłumaczenie TextBlob jest znacznie bardziej precyzyjne niż francuskie tłumaczenie książki z 1932 roku autorstwa V. Leconte i Ch. Pressoir:

"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."

W tym przypadku tłumaczenie oparte na ML radzi sobie lepiej niż tłumacz ludzki, który niepotrzebnie dodaje słowa do oryginalnego tekstu autora dla 'jasności'.

Co tu się dzieje? Dlaczego TextBlob jest tak dobry w tłumaczeniu? Otóż, w tle używa Google Translate, zaawansowanej sztucznej inteligencji zdolnej do analizy milionów fraz, aby przewidzieć najlepsze ciągi znaków dla danego zadania. Nie ma tu nic manualnego, a do użycia blob.translate potrzebne jest połączenie z internetem.

Spróbuj kilku innych zdań. Które tłumaczenie jest lepsze, ML czy ludzkie? W jakich przypadkach?

Analiza sentymentu

Innym obszarem, w którym uczenie maszynowe może działać bardzo dobrze, jest analiza sentymentu. Podejście nieoparte na ML polega na identyfikacji słów i fraz, które są 'pozytywne' i 'negatywne'. Następnie, dla nowego tekstu, oblicza się całkowitą wartość słów pozytywnych, negatywnych i neutralnych, aby określić ogólny sentyment.

To podejście łatwo oszukać, jak mogłeś zauważyć w zadaniu z Marvinem - zdanie Great, that was a wonderful waste of time, I'm glad we are lost on this dark road jest sarkastyczne, negatywne, ale prosty algorytm wykrywa 'great', 'wonderful', 'glad' jako pozytywne i 'waste', 'lost' oraz 'dark' jako negatywne. Ogólny sentyment jest zakłócony przez te sprzeczne słowa.

Zatrzymaj się na chwilę i pomyśl, jak jako ludzie przekazujemy sarkazm. Intonacja głosu odgrywa dużą rolę. Spróbuj powiedzieć frazę "Well, that film was awesome" na różne sposoby, aby odkryć, jak twój głos przekazuje znaczenie.

Podejścia ML

Podejście ML polegałoby na ręcznym zgromadzeniu negatywnych i pozytywnych tekstów - tweetów, recenzji filmów lub czegokolwiek, gdzie człowiek podał ocenę i pisemną opinię. Następnie można zastosować techniki NLP do opinii i ocen, aby wyłoniły się wzorce (np. pozytywne recenzje filmów częściej zawierają frazę 'Oscar worthy' niż negatywne recenzje filmów, a pozytywne recenzje restauracji częściej mówią 'gourmet' niż 'disgusting').

⚖️ Przykład: Jeśli pracujesz w biurze polityka i debatuje się nad nowym prawem, wyborcy mogą pisać do biura e-maile popierające lub przeciwko danemu prawu. Załóżmy, że twoim zadaniem jest przeczytanie e-maili i posortowanie ich na 2 stosy, za i przeciw. Jeśli byłoby dużo e-maili, możesz być przytłoczony próbą przeczytania ich wszystkich. Czy nie byłoby miło, gdyby bot mógł przeczytać je za ciebie, zrozumieć je i powiedzieć, do którego stosu należy każdy e-mail?

Jednym ze sposobów osiągnięcia tego jest użycie uczenia maszynowego. Możesz wytrenować model na części e-maili przeciw i części e-maili za. Model skojarzyłby frazy i słowa z jedną lub drugą stroną, ale nie rozumiałby żadnej treści, tylko to, że pewne słowa i wzorce częściej pojawiają się w e-mailach przeciw lub za. Możesz przetestować go na e-mailach, których nie użyłeś do trenowania modelu, i sprawdzić, czy doszedł do tych samych wniosków co ty. Następnie, gdy będziesz zadowolony z dokładności modelu, możesz przetwarzać przyszłe e-maile bez konieczności czytania każdego z nich.

Czy ten proces przypomina procesy, które stosowałeś w poprzednich lekcjach?

Ćwiczenie - sentymentalne zdania

Sentyment jest mierzony za pomocą polaryzacji od -1 do 1, gdzie -1 oznacza najbardziej negatywny sentyment, a 1 najbardziej pozytywny. Sentyment jest również mierzony za pomocą skali od 0 do 1 dla obiektywności (0) i subiektywności (1).

Przyjrzyj się ponownie Dumie i uprzedzeniu Jane Austen. Tekst jest dostępny tutaj: Project Gutenberg. Poniższy przykład pokazuje krótki program, który analizuje sentyment pierwszego i ostatniego zdania z książki oraz wyświetla jego polaryzację sentymentu i wynik obiektywności/subiektywności.

Powinieneś użyć biblioteki TextBlob (opisanej powyżej), aby określić sentiment (nie musisz pisać własnego kalkulatora sentymentu) w następującym zadaniu.

from textblob import TextBlob

quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife."""

quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them."""

sentiment1 = TextBlob(quote1).sentiment
sentiment2 = TextBlob(quote2).sentiment

print(quote1 + " has a sentiment of " + str(sentiment1))
print(quote2 + " has a sentiment of " + str(sentiment2))

Widzisz następujący wynik:

It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146)

Darcy, as well as Elizabeth, really loved them; and they were
     both ever sensible of the warmest gratitude towards the persons
      who, by bringing her into Derbyshire, had been the means of
      uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8)

Wyzwanie - sprawdź polaryzację sentymentu

Twoim zadaniem jest określenie, za pomocą polaryzacji sentymentu, czy Duma i uprzedzenie ma więcej absolutnie pozytywnych zdań niż absolutnie negatywnych. W tym zadaniu możesz założyć, że wynik polaryzacji 1 lub -1 jest absolutnie pozytywny lub negatywny.

Kroki:

  1. Pobierz kopię Dumy i uprzedzenia z Project Gutenberg jako plik .txt. Usuń metadane na początku i końcu pliku, pozostawiając tylko oryginalny tekst.
  2. Otwórz plik w Pythonie i wyodrębnij zawartość jako ciąg znaków.
  3. Utwórz TextBlob używając ciągu znaków z książki.
  4. Analizuj każde zdanie w książce w pętli:
    1. Jeśli polaryzacja wynosi 1 lub -1, zapisz zdanie w tablicy lub liście pozytywnych lub negatywnych wiadomości.
  5. Na końcu wydrukuj wszystkie pozytywne zdania i negatywne zdania (osobno) oraz ich liczbę.

Oto przykładowe rozwiązanie.

Sprawdź swoją wiedzę

  1. Sentyment opiera się na słowach użytych w zdaniu, ale czy kod rozumie te słowa?
  2. Czy uważasz, że polaryzacja sentymentu jest dokładna, innymi słowy, czy zgadzasz się z wynikami?
    1. W szczególności, czy zgadzasz się lub nie zgadzasz z absolutnie pozytywną polaryzacją następujących zdań?
      • “What an excellent father you have, girls!” said she, when the door was shut.
      • “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect.
      • How wonderfully these sort of things occur!
      • I have the greatest dislike in the world to that sort of thing.
      • Charlotte is an excellent manager, I dare say.
      • “This is delightful indeed!
      • I am so happy!
      • Your idea of the ponies is delightful.
    2. Następne 3 zdania zostały ocenione jako absolutnie pozytywne, ale po dokładnym przeczytaniu nie są pozytywnymi zdaniami. Dlaczego analiza sentymentu uznała je za pozytywne zdania?
      • Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power.
      • If I could but see you as happy!
      • Our distress, my dear Lizzy, is very great.
    3. Czy zgadzasz się lub nie zgadzasz z absolutnie negatywną polaryzacją następujących zdań?
      • Everybody is disgusted with his pride.
      • “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful.
      • The pause was to Elizabeths feelings dreadful.
      • It would be dreadful!

Każdy miłośnik Jane Austen zrozumie, że często używa swoich książek do krytykowania bardziej absurdalnych aspektów angielskiego społeczeństwa regencyjnego. Elizabeth Bennett, główna bohaterka Dumy i uprzedzenia, jest bystrą obserwatorką społeczną (jak autorka), a jej język jest często mocno zniuansowany. Nawet pan Darcy (miłość w tej historii) zauważa zabawne i żartobliwe użycie języka przez Elizabeth: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own."


🚀Wyzwanie

Czy możesz uczynić Marvina jeszcze lepszym, wyodrębniając inne cechy z danych wejściowych użytkownika?

Quiz po wykładzie

Przegląd i samodzielna nauka

Istnieje wiele sposobów na wydobycie sentymentu z tekstu. Pomyśl o zastosowaniach biznesowych, które mogą korzystać z tej techniki. Zastanów się, jak może to pójść nie tak. Przeczytaj więcej o zaawansowanych systemach gotowych do użytku w przedsiębiorstwach, które analizują sentyment, takich jak Azure Text Analysis. Przetestuj niektóre z powyższych zdań z "Dumy i uprzedzenia" i sprawdź, czy potrafi wykryć niuanse.

Zadanie

Licencja poetycka


Zastrzeżenie:
Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI Co-op Translator. Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.