Jak mierzymy sentyment bez chmury
Od PolEmo do czatu na Messengerze. Sam moduł sentymentu liczy się w Twojej przeglądarce — bez GPU i bez wysyłania treści do chmury.
Napisz „kurwa ale fajnie xd” i podaj to zdanie dowolnemu gotowemu narzędziu do analizy sentymentu. Dostaniesz odpowiedź: mocno negatywne. Wulgaryzm, spójnik przeciwstawny, emotikon potraktowany jak śmiech albo zignorowany. Tymczasem to zdanie jest entuzjastyczne i każdy Polak to widzi. Ten tekst jest o tym, co trzeba zrobić, żeby widziała to również maszyna.
7
warstw słownikowych
13 000
form leksykalnych
12
faz potoku
0
GPU
01/Problem
Cztery słowa, cztery różne role
Standardowe narzędzia analizy sentymentu — VADER, SentiStrength, a nawet polski model HerBERT — widzą w tym zdaniu same sygnały negatywne. Kurwa to wulgaryzm, więc minus. Ale to spójnik przeciwstawny, więc podejrzenie zwrotu akcji. Wynik: mocno negatywne.
Kłopot polega na tym, że w polskim czacie kurwa jest zwykle wypełniaczem — dokładnym odpowiednikiem angielskiego um albo like. A xd nie jest emotikonem rozbawienia, tylko markerem rejestru: sygnałem, że rozmowa toczy się na luzie. Silnik PodTeksT traktuje te cztery słowa osobno.
Paski pokazują siłę oceny, nie jej znak: im dłuższy, tym mocniej model jest o czymś przekonany. HerBERT jest bardzo pewny czegoś, czego w tym zdaniu nie ma.
02/Leksykon
Skąd bierze się 13 000 form słów?
Trzynaście tysięcy form pochodzi z fuzji sześciu otwartych zasobów lingwistycznych, a fundament stanowią trzy: plWordNet 3.0 (6 656 form, 51,2% leksykonu)[1], Nencki Affective Word List (2 902 formy, 22,3%)[2] oraz plWordNet-emo (1 200 form, 9,2%)[3]. Pozostałe 17,3% to sentiment-polish, rozszerzenia polskie i leksykon redakcyjny.
Każde słowo ma wagę od −3 (silnie negatywne) do +3 (silnie pozytywne). Do tego dochodzą warianty bez polskich znaków diakrytycznych — szczesliwy obok szczęśliwy — formy odmienione oraz korekty literówek klawiaturowych o odległości edycyjnej 1, bo nikt nie pisze w czacie bezbłędnie.
Afektywne normy dla 2902 polskich słów uzyskane od 400 uczestników na 9-punktowych skalach walencji, pobudzenia i wyobrażalności.
To właśnie dlatego drugie co do wielkości źródło jest zbiorem psychologicznym, a nie słownikowym[2]: ocena słowa rozstanie nie bierze się z definicji, tylko z tego, jak reagują na nie ludzie.
03/XD
Co siódma wiadomość zawiera XD
Około 15 procent wiadomości w polskim czacie zawiera jakiś wariant XD. Wcześniejsze wersje silnika traktowały każdy z nich jako sygnał pozytywny — co oznacza, że co siódma wiadomość miała sztucznie zawyżony sentyment.
Wiadomość „sterydy mi stawy rozjebały xd” opisuje realny ból fizyczny. XD pełni tu funkcję radzenia sobie: tłumi cierpienie, ale go nie kasuje. Dzisiejszy silnik to odwzorowuje — zamiast zerować negatywne słowa, tłumi ich wagę o 30 procent przy słowach somatycznych i o 50 procent w pozostałych przypadkach.
| Wariant | Funkcja | Udział | Co robi silnik |
|---|---|---|---|
| xd | marker nawykowy, rejestr luźny | 8.6% | zero wpływu na sentyment |
| XD | rzeczywiste rozbawienie | 1.7% | lekko na plus |
| xdddd+ | emfatyczna ironia albo tłumienie | 1.9% | zachowuje ładunek negatywny |
Trzy warianty tego samego znaku, trzy różne znaczenia. Rozłożyliśmy je na czynniki pierwsze w osobnym tekście: xd ≠ XD ≠ XDDDDDD, a skróconą definicję zebraliśmy w haśle „co znaczy xd”.
04/Rytuał
Narzekanie bywa deklaracją bliskości
Jolanta Antas opisała narzekanie jako element polskiego modelu grzeczności[4]. Kiedy dwoje Polaków narzeka razem na pogodę, uczelnię albo korki, nie wyraża negatywnych emocji — buduje bliskość. Słownik widzi w tym wyłącznie ciąg minusów.
| Odczyt | Wynik | Interpretacja |
|---|---|---|
| Sam słownik | −0.4 | negatywne |
| PodTeksT | +0.2 | wspólne narzekanie, czyli budowanie bliskości |
Silnik sprawdza dwie rzeczy: czy narzekają oboje i czy narzekają na coś zewnętrznego, a nie na siebie nawzajem. Jeśli tak, przeklasyfikowuje sekwencję na pozytywną. Kluczowa heurystyka jest zaskakująco prosta: brak zaimków drugiej osoby — ty, cię, twój — oznacza narzekanie na świat, nie na partnera.
05/Benchmark
Czy podejście słownikowe jest lepsze od modeli neuronowych?
Nie zawsze, i to jest cała odpowiedź. Na nieformalnym czacie leksykon wypada wyraźnie lepiej: średni błąd 0.617 wobec 2.974 na tych samych 80 epizodach. Na kontrolowanych scenariuszach z pasywną agresją przegrywa z modelem neuronowym, 24.6% trafień wobec 49.1%. Oba podejścia mierzą co innego.
Zestawiliśmy silnik z modelem HerBERT — polskim BERT-em dostrojonym na recenzjach produktów. Test objął 80 epizodów z realnych rozmów na Messengerze: 2366 turnów z 31 konwersacji[5].
| Metryka | PodTeksT | HerBERT |
|---|---|---|
| MAE — im mniej, tym lepiej | 0.617 | 2.974 |
| Obciążenie oceny | −0.16 | −2.97 |
| Bliżej prawdy (na 80 epizodów) | 75 | 5 |
06/Sufit
Czego ten silnik nie umie
Sprawdziliśmy go też na 57 kontrolowanych scenariuszach z pasywną agresją, wygasaniem relacji i ukrytym konfliktem[5]. Tam wygrał HerBERT — i to wyraźnie.
24.6%
PodTeksT na TCTM
49.1%
HerBERT na TCTM
Dlaczego? Bo „Rób jak chcesz” to dwa neutralne słowa, a „Spoko.” z kropką to jedno neutralne słowo. Każdy Polak wie, że żadne z tych zdań nie jest neutralne — słownik nie widzi tego w ogóle. Sama kropka bywa zresztą osobnym komunikatem, o czym pisaliśmy w tekście o kropce, która zabija rozmowę. To jest nasz sufit i dlatego budujemy dalej.
Podejście słownikowe dominuje na nieformalnym czacie, neuronowe na scenariuszach ustrukturyzowanych. Komplementarność, nie konkurencja.
Jeśli chcesz zobaczyć, co z tych liczb wynika dla konkretnej rozmowy, najprościej zacząć od przewodnika po analizie czatu — a potem sprawdzić to na własnym eksporcie w lobby.
Źródła
- [1]Maziarz, M., Piasecki, M., Rudnicka, E., Szpakowicz, S. i Kędzia, P. (2016). plWordNet 3.0 – a Comprehensive Lexical-Semantic Resource. Proceedings of COLING 2016, 2259–2268. Licencja CC-BY. źródło
- [2]Riegel, M., Wierzba, M., Wypych, M., Żurawski, Ł., Jednoróg, K., Grabowska, A. i Marchewka, A. (2015). Nencki Affective Word List (NAWL): the cultural adaptation of the Berlin Affective Word List–Reloaded (BAWL-R) for Polish. Behavior Research Methods, 47(4), 1222–1236. źródło
- [3]Zaśko-Zielińska, M., Piasecki, M. i Szpakowicz, S. (2015). A Large Wordnet-based Sentiment Lexicon for Polish. Proceedings of RANLP 2015, 721–730. Zasób znany jako plWordNet-emo. źródło
- [4]Antas, J. (2002). Polskie zasady grzeczności. W: G. Szpila (red.), Język trzeciego tysiąclecia II, t. 1, Kraków: Tertium, 347–363.
- [5]Benchmark wewnętrzny PodTeksT (2026): 80 epizodów z realnych rozmów na Messengerze (2366 turnów, 31 konwersacji) oraz 57 kontrolowanych scenariuszy TCTM.
Najczęstsze pytania
Czy moje wiadomości są wysyłane na serwer, żeby policzyć sentyment?
Dlaczego wulgaryzm nie zawsze jest liczony jako negatywny?
Czy sentyment liczony jest osobno dla każdej wiadomości?
★ OGŁOSZENIE REDAKCYJNE ★
Zobacz, jak algorytm czyta Twoje wiadomości
Surowy import zostaje w Twojej przeglądarce · AI dostaje tylko pseudonimizowane fragmenty