Sposób w jaki ludzie przekazują sobie emocje przez lata nie poddawał się algorytmizacji, czyli opisowi zrozumiałemu dla komputerów. Wydawało się, że maszyny będą sobie radzić doskonale z liczeniem, zapamiętywaniem, może nawet z rezerwowaniem stolików w restauracji czy biletów lotniczych – ale sfera “serca” pozostanie domeną czysto ludzką.
Tak rzeczywiście się działo, kiedy próbowaliśmy wyjaśniać komputerom “krok po kroku” jak rozumieć emocje. Algorytmy regułowe stawały się bezradne przy każdej wieloznaczności czy zmianie struktury wypowiedzi.
Rewolucyjne podejście do analizy emocji. Rola maszyny
Od kilku lat do analizy tekstu wkraczają algorytmy uczenia maszynowego (ang. machine learning), w tym ich najnowsza wersja – sieci neuronowe (ang. neural networks), które uczą się “tak jak małe dziecko”, czyli przez oglądanie przykładów. To zupełnie zmieniło sytuację – teraz, jeśli mamy dobre dane i dobry algorytm, możemy nauczyć komputer prawie wszystkiego.
Zespół SENTIMENTI przygotował publikację naukową dotyczącą tego właśnie tematu, która została zaprezentowana podczas międzynarodowej konferencji Language Technology Conference. Publikacji przewodniczy dr Jan Kocoń z Politechniki Wrocławskiej, a jej tytuł to “Recognition of emotions, valence and arousal in large-scale multi-domain text reviews”. Pełna treść pracy będzie wkrótce dostępna w zbiorze pokonferencyjnym, natomiast tutaj prezentujemy najważniejsze wnioski z naszych badań.
Dr Jan Kocoń prezentuje wyniki badań SENTIMENTI na LTC 2019
Uczenie maszynowe w Sentimenti
Zacznijmy od podstawowych kroków uczenia maszynowego dla analizy emocji w tekście:
- Anotacja – przygotowanie zbioru uczącego i testowego (ang. train and test set).
- Wybór algorytmu uczącego (np. SVM, BiLSTM i in.)
- Dobór zbioru cech (ręczny lub automatyczny)
- Trening i dostrajanie sieci neuronowej.
- Testowanie efektywności otrzymanego modelu (miara F-score lub inna).
Co to znaczy, że sieci neuronowe “działają jak ludzki mózg”? Tak jak niemowlę, sieć zaczyna z pewną gotową do uczenia się strukturą, ale bez żadnej wiedzy. Musi zobaczyć wiele, wiele przykładów, aby “zrozumieć” jak działają różne zjawiska (skala liczebności tych przykładów zaczyna się od dziesiątek lub setek tysięcy). Nauczona sieć potrafi samodzielnie analizować nowe, wcześniej nie widziane przykłady, korzystając z rozpoznanych wcześniej cech.
Jakich informacji potrzebuje sieć neuronowa, aby nauczyć się rozpoznawać emocje? Tak jak dziecko, potrzebuje informacji zwrotnej o tym co jest, a co nie jest prawidłowe. Ten rodzaj uczenia maszynowego nazywamy uczeniem nadzorowanym (ang. supervised machine learning). Dla danych językowych, sieć potrzebuje szeregu anotacji, czyli przykładów o postaci np.:
- przepiękny = szczęście 0,8
- znalezisko = zaskoczenie 0,7
- nieuczciwość = złość 0,4
Najważniejsze są nie maszyny, a dane
Jak jednak zdobyć dziesiątki tysięcy takich przykładów potrzebnych do nauczenia sieci neuronowych? I co zrobić ze słowami, które będą wzbudzały różne emocje u różnych osób? Jeśli słowo “kolejka górska” wzbudza we mnie radość, a w tobie strach, to czyją wersję powinniśmy przekazać naszemu “neuronowemu dziecku”?
Problem dobrej jakości danych do uczenia maszynowego był bolączką wielu poprzednich projektów uczenia maszynowego, dlatego w Sentimenti zaangażowaliśmy zespół doświadczonych psychologów z LOBI PAN i przeprowadziliśmy największe w Polsce badania emocji w słowach. Zapytaliśmy ponad 20 tys. osób o ponad 30tys. słów i 7 tys. tekstów, z których każdy był oceniony ok. 25 -50 razy (więcej szczegółów na naszym blogu link). Mamy dzięki temu najbardziej reprezentatywną informację o 8 emocjach, jakie poszczególne słowa i teksty wzbudzają u Polek i Polaków.
Lepsza automatyczna analiza emocji w tekście
Stworzenie dobrej bazy danych pozwoliło nam przejść do kolejnego kroku, czyli wyboru algorytmu uczenia maszynowego, który najlepiej podoła zadaniu “odgadywania” emocji w tekście. Przetestowaliśmy następujące rozwiązania, które “nakarmiliśmy” naszymi danymi:
- word embeddings i word2vec (czyli metodę przekształcania słów i tekstów na postać matematyczną);
- fastText (jako podstawową metodę, punkt odniesienia);
- BiLSTM (ang. bidirectional long-short-term memory neural network, czyli dwukierunkowe sieci oparte na krótko- i długoterminowej pamięci);
Nasze algorytmy rozpoznawały sentyment trafnie w 89%, natomiast emocje w ok. 80-85% (dla wybranej grupy tekstów). Szczegółowe miary i informacje o dziedzinach, a także wiele pomiętych tutaj szczegółów badania, można znaleźć w naszej publikacji na stronie LTC.
Dzięki temu badaniu mamy dostępne modele, które rozpoznają emocje szybciej niż człowiek – są w stanie przetworzyć w ciągu kilku minut miliony tekstów.
W dziale B+R Sentimenti ciągle pracujemy nad nowymi rozwiązaniami, dlatego już teraz eksperymentujemy z technologiami, które zrewolucjonizowały świat NLP (ang. Natural Language Processing) w 2018 roku, takimi jak BERT i ELMo, ciągle rozwijamy też własne modele i rozwiązania dla lepszego zrozumienia emocji w języku.
Współpraca przy tej notce: dr Barbara Konat, kierowniczka badawcza w SENTIMENTI