Przejdź do treści

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.

Redakcja PodTeksT··AKT.
Potok sentymentu: dwanaście faz, trzynaście tysięcy form słów — liczone po stronie przeglądarki.

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.

Jedno nacechowanie na cztery słowa. Reszta niesie rejestr, nie emocję.
PodTeksT+0.35 — pozytywny
HerBERT−0.95 — negatywny

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.

plWordNet 3.0 · 6656 form · CC-BY51.2%
NAWL · 2902 form · CC-BY22.3%
plWordNet-emo · 1200 form · BSD-29.2%
sentiment-polish · 900 form · MIT6.9%
Rozszerzenia polskie · 800 form · własne6.2%
Leksykon ręczny · 542 form · własne4.2%

Afektywne normy dla 2902 polskich słów uzyskane od 400 uczestników na 9-punktowych skalach walencji, pobudzenia i wyobrażalności.

Riegel i in. (2015), Nencki Affective Word List

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.

WariantFunkcjaUdziałCo robi silnik
xdmarker nawykowy, rejestr luźny8.6%zero wpływu na sentyment
XDrzeczywiste rozbawienie1.7%lekko na plus
xdddd+emfatyczna ironia albo tłumienie1.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.

Pogoda jest okropna dzisiaj
No masakra, ja się odmrażam
Dwie wiadomości, w których nikt nikomu niczego nie zarzuca.
OdczytWynikInterpretacja
Sam słownik−0.4negatywne
PodTeksT+0.2wspó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].

MetrykaPodTeksTHerBERT
MAE — im mniej, tym lepiej0.6172.974
Obciążenie oceny−0.16−2.97
Bliżej prawdy (na 80 epizodów)755

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.

Wnioski z benchmarku PodTeksT (2026)

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. [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. [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. [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. [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. [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?
Nie. Sam moduł sentymentu działa w Twojej przeglądarce — bez GPU i bez wysyłania treści do chmury. Do chmury trafiają dopiero funkcje AI wyższego rzędu, i wyłącznie na pseudonimizowanych fragmentach.
Dlaczego wulgaryzm nie zawsze jest liczony jako negatywny?
Bo w polskim czacie często nie jest wulgaryzmem, tylko wypełniaczem — odpowiednikiem angielskiego „um” albo „like”. Zdanie „kurwa ale fajnie xd” zawiera jedno słowo nacechowane pozytywnie i trzy nieoznaczające nic poza rejestrem luźnym.
Czy sentyment liczony jest osobno dla każdej wiadomości?
Nie. Ocena pojedynczej wiadomości byłaby bezużyteczna, bo ton polskiego czatu wynika z sekwencji. Silnik czyta kilka poprzednich wypowiedzi, sprawdza, kto odpowiada komu, i dopiero wtedy przypisuje wartość.

★ OGŁOSZENIE REDAKCYJNE ★

Zobacz, jak algorytm czyta Twoje wiadomości

Prześlij eksport rozmowy i sprawdź, gdzie silnik widzi ciepło, a gdzie chłód. Parsowanie i statystyki liczą się lokalnie, w Twojej przeglądarce.
PRZEŚLIJ KONWERSACJĘ →

Surowy import zostaje w Twojej przeglądarce · AI dostaje tylko pseudonimizowane fragmenty

eks

Używamy plików cookie do analizy ruchu (Google Analytics 4, PostHog) i wykrywania błędów (Sentry). Zbieramy dane o urządzeniu, przeglądarce i odwiedzanych podstronach. Treści twoich rozmów zostają na urządzeniu. Polityka prywatności