“Ciemno wszędzie, głucho wszędzie. Co to będzie, co to będzie?”. To słynny cytat z dramatu Adama Mickiewicza, „Dziady, część II”. Wypowiada go chór duchów podczas obrzędu dziadów, który prowadzi Guślarz. Słowa te podkreślają atmosferę grozy i niepewności związaną z nadprzyrodzonymi zjawiskami, jakie mają się wydarzyć. Brzęczą mi w głowie te słowa z niemalże naturalną parafrazą: AI wszędzie, AI wszędzie. Co to będzie, co to będzie?

To, że wszyscy o tym gadają, wiadomo. To, że większość nie ma pojęcia, jak to właściwie działa - też. I to, że AI niesie ze sobą atmosferę niepokoju, dla wielu niemal „nadprzyrodzoną”, czujemy wszyscy. Każdy z nas choć raz zastanawiał się, czy AI zabierze nam pracę. A że rewolucja właśnie się dzieje, to również pewne. W kontekście Voice of the Customer (VoC) ta rewolucja wydarza się w zakresie analizy głosu klienta w formie nieustrukturyzowanej, czyli najnormalniejszych komentarzy klientów. 

Jeszcze parę lat temu takie zabawki były dostępne tylko dla nielicznych. Na pokładzie swojej firmy trzeba było mieć nie lada mózgów, którzy umieli w sieci neuronowe. Takich, którzy potrafili wybrać odpowiednią strukturę i typ uczenia maszynowego. Nauczyć osobiście wyhodowaną sieć do tego, żeby ta tagowała komentarze i określała sentyment wypowiedzi. 

Najciekawszym i najbardziej imponującym przykładem jest zespół Waldemara Kupca z Ministerstwa Finansów - kto nie słyszał o ich osiągnięciach, musi natychmiast nadrobić zaległościPojawiały się też firmy, które próbowały swoich sił na rynku komercyjnym. Pamiętam rozmowy z Zymetrią i jeszcze jedną polską firmą, której nazwy nie pamiętam. Ale pamiętam to, że po wielu wysiłkach analizy polskich tekstów stwierdzili, że po angielsku jest o niebo (ang. heaven, sky) łatwiej, a rynek anglojęzyczny jest o kilka razy większy, więc porzucili pracę nad rozwojem sieci neuronowych dla języka polskiego i „poszli na global”.

A dzisiaj? Dzisiaj teoretycznie każdy nas ma dostęp do potężnego narzędzia, który radzi sobie z tym zadaniem tak, jak nastolatek z obsługą iPhone’a. Dla LLM-ów to bułka z masłem. Tylko dlaczego napisałem „TEORETYCZNIE”?

Komentarze klientów mogą zawierać ich dane osobowe. A przekazywanie danych osobowych do publicznych LLM-ów, takich jak ChatGPT, Gemini czy Claude, jest albo zabronione lub albo w ogóle  nieuregulowane w firmach. Nawet tych, które komentarzy posiadają bardzo dużo. Oczywiście, zdarza się czasami, że na firmowym Azure jest dostępny Copilot, do którego dane można wrzucać. Ale to nadal luksus. 

Anonimizacja na ratunek!

Rozwiązaniem tego problemu jest anonimizacja danych. Jeżeli mielibyśmy sposób na usunięcie z tekstu wszystkich danych osobowych, takich jak imiona, nazwiska, e-maile, numery telefonów itd., to przekazanie takich danych osobowych nawet do publicznych LLM-ów jest w firmach akceptowalne. 

No dobra Piotrek, ale jak to zrobić, zapytacie?

Jeżeli ja mam ręcznie przejść przez te komentarze i ręcznie wyciąć te dane, to ja już wolę zatrudnić praktykanta i on mi to otaguje. I może nawet lepiej niż AI". 

Czy lepiej niż AI, to bym polemizował, ale co do tego, że ręczna robota nie ma sensu, to się zgodzę. Dlatego przychodzę dzisiaj do Was, żeby opowiedzieć Wam o naszych doświadczeniach z anonimizacją danych dla naszych klientów. Jakie w ogóle mamy opcje?

Wyrażenia regularne

Wyrażenia regularne, to bardzo prosty algorytm wyszukiwania wzorców w tekście. Algorytm sprawdza słowa dopasowane do wzorca. W wyniku działania zwraca pozycję w tekście i wartość dopasowanego tekstu. Wyrażenia regularne działają nawet w Excelu, dlatego każdy z Was za pomocą wyrażenia regularnego mógłby usunąć z tekstu wiele danych osobowych,takich jak: e-mail, PESEL, numer telefonu, numer karty płatniczej, numer konta, itd. Najprostszym wyrażeniem regularnym jest wyrażenie, które wychwytuje numer PESEL.

/\b\d{11}\b/g

Co oznacza?

  • \b (Word Boundary): Ten znak występuje na początku i na końcu wzorca. Oznacza „granicę słowa". Jest to niezwykle ważne, ponieważ zapewnia, że dopasujemy tylko te liczby, które stoją samodzielnie (lub są oddzielone spacjami, kropkami, myślnikami itp.).
  • \d (Digit - Cyfra) - To skrót oznaczający dowolną cyfrę od 0 do 9.
  • {11} (Quantifier) :  To licznik, który mówi: „poprzedni element musi wystąpić dokładnie 11 razy". W połączeniu z poprzednim znakiem (\d{11}) oznacza to: „ciąg 11 cyfr".
  • / ... / (Ograniczniki): Ukośniki na początku i końcu to standardowy sposób zapisu wyrażeń regularnych
  • g (Global Flag): Algorytm przeszuka cały tekst i zwróci wszystkie pasujące wyniki.

Jeżeli masz ochotę wypróbować swoich sił w Excelu lub Google Sheets, to formuła wyglądałaby następująco:

=REGEXREPLACE(A1; "\b\d{11}\b"; "[PESEL]")

Tak można się bawić z rodzajami danych, o których pisałem wyżej, czyli: E-mail, PESEL, numer telefonu, numer karty płatniczej, numer konta. Same wyrażenia regularne dostarczy Wam nie kto inny jak sam AI. Ale jak dochodzimy już do imion i nazwisk, to już nie jest tak kolorowo. 

Anonimizacja imion i nazwisk

Wyrażenia regularne nie są najlepszym sposobem na detekcję imion i nazwisk. Dlaczego? Musielibyście pobrać z rejestru PESEL wszystkie imiona męskie i żeńskie. To samo trzeba byłoby zrobić z nazwiskami. Zastanawialiście się, ile tego może być? Sprawdziłem to dla Was:

  1. Imiona męskie: 15 181
  2. Imiona żeńskie: 11 418
  3. Nazwiska męskie: 395 127
  4. Nazwiska żeńskie: 411 012

Razem: 832 738 sztuk

Do tego należałoby zrobić odmianę przez wszystkie 7 przypadków, czyli dysponujemy bazą 40 804 162 słów, które trzeba byłoby przeszukiwać w tekście. Formuła w Excelu nie jest w stanie tego pomieścić. Algorytmy teoretycznie są w stanie to zrobić, ale uwierzcie mi - są potwornie wymagające i powolne.

Ale to i tak nie jest problemem. Dlatego, że wiele imion, a tym bardziej nazwisk to najnormalniejsze rzeczowniki lub przymiotniki takie jak: Czarny, Biały, Marzec, Cygan, Baran, Borsuk, Skowronek, Cichy, Piekarz. 

Nie można założyć, że te będą zawsze pisane wielką literą, bo Wy wiecie, że w komentarzach klientów można znaleźć wszystko. Zgodzę się, że te nazwiska pisane wielką literą  będą prawdopodobnie nazwiskiem, ale nie wtedy kiedy to pierwsze słowo w zdaniu. Do tego  jeszcze literówki. W tym przypadku ten sposób jest całkowicie bezużyteczny.

Ciekawe też jest to, co się dzieje w tych bazach. Bazy są posortowane wg, liczby wystąpień. Na samym końcu znajdują się takie imiona jak:

Męskie: ULDERIGO, GALVAN, BUEN, ABRÃO, SHAKEEL, ANDRU, BERNAL

Żeńskie: DE LOS MILAGROS, IGORIEVNA, CARDENAS, SUMRU, YUI, BISGAARD, OLEGOVNA

Wszystkie występują tylko po dwa  razy w całej polskiej populacji. Powstaje zatem pytanie: a może olać te rzadkie imiona i nazwiska. W końcu prawdopodobieństwo, że takie mi się trafi w komentarzu, jest podobne do trafienia szóstki w totka. Niby tak, ale takie imię, nawet bez nazwiska jest jak dana osobowa. Sama w sobie bez dodatkowego kontekstu. 

Przypomnę w tym miejscu definicję danej osobowej - to taka dana lub zestaw danych, która pozwala jednoznacznie zidentyfikować konkretną osobę. Dlatego Piotr, to jeszcze nie dana osobowa. Nawet „Piotr Sadowski” nie jest daną osobową, bo trochę nas w Polsce jest. Mam nawet kuzyna, który tak się właśnie nazywa. Ale Piotr Sadowski w kontekście VoC, czy CustomerHero - to już wiadomo o kogo chodzi. 

Dlatego jeśli używamy imienia, które występuje jeden lub dwa razy w całej Polsce, to jest to w zasadzie dana osobowa. I nie potrzeba nam dodatkowego kontekstu. A to oznacza, że tym bardziej nie możemy zignorować takiej danej, bo to prawie jak numer PESEL. 

NER

Tutaj przychodzi nam z pomocą coś, co nazywa się NER (Named Entity Recognition). To technika Przetwarzania Języka Naturalnego (NLP), która automatycznie identyfikuje i klasyfikuje w tekście wyrażenia odnoszące się do rzeczywistych obiektów (zwanych encjami).

Skrypt wykorzystuje model językowy do oznaczenia fragmentów tekstu jako encje typu „Osoba" (np. Imię, Nazwisko, Stanowisko). Jest to jedyny sposób, który jest w stanie skutecznie analizować i rozumieć kontekst języka polskiego na wystarczająco wysokim poziomie precyzji.

I o ile jest kilka bibliotek, które obiecują, że umieją to robić w wielu językach (w tym w języku polskim), to mi udało się znaleźć tylko jedną, która robi to naprawdę skutecznie. Tą biblioteką jest PyTorch-Transformers, dla języka Python. 

Do uruchomienia wymagana jest znajomość technologii i tego, jak to uruchomić program na swoim sprzęcie, lub na firmowym serwerze, ale za to biblioteka jest bardzo skuteczna! Testowaliśmy to z naszymi klientami - dlatego wiem, co piszę. Niestety skrypt potrzebuje czasami minuty lub dwóch na przeanalizowanie tekstu, ale potrafi to robić 24 na dobę, nie odpoczywa w weekendy i nie bierze L4. W praktyce robi robotę.

Bielik

Jest jeszcze jeden sposób na anonimizację tekstów, ale okazuje się, że nie jest jeszcze tak skuteczny jak NER. To polski duży model językowy Bielik, który możecie sobie łatwo zainstalować na swoim własnym komputerze (o ile Wasz komputer nie jest starszy niż 3 lata) za pomocą oprogramowania LM Studio. Wszystko dostępne za uczciwą cenę, czyli za darmo!

Wówczas możecie korzystać z potęgi sztucznej inteligencji na własnym komputerze! Bez podłączenia do internetu. A to oznacza, że to ultra bezpieczne rozwiązanie pod kątem powierzenia danych, bo nikomu tych danych nie powierzacie. 

Jak to w ogóle jest możliwe? Najważniejszym wskaźnikiem modeli językowych jest liczba parametrów. Bielik ma ich „tylko” 10 miliardów, bo wytrenowany jest tylko na bazie języka polskiego. Chat GPT-3 ma 175 miliardów parametrów, a Chat GPT-4 ma 1.8 biliona parametrów. Widać różnicę, prawda?

Oprócz tego, że Bielik to projekt typu Open Source, to jest na tyle mały, że nie potrzebuje wielkiej serwerowni, żeby w ogóle się uruchomić. Niestety Bielik jeszcze nie jest na tyle dokładny co NER, który jest narzędziem do tego dedykowanym. Niemniej jednak głęboko wierzę w to, że Bielik w ciągu roku będzie w stanie być świetną alternatywą dla zespołów CX-owych do analizy komentarzy klientów. Nie tylko do anonimizacji, ale również do tagowania i określania sentymentów. Bo z tym też sobie na razie kiepsko radzi, a co gorsza - nie ma jeszcze API. 

Podsumowanie

Jeżeli chcecie legalnie i bezpiecznie analizować głos klienta przy pomocy publicznych LLM-ów, musicie go najpierw zanonimizować. Teraz już wiecie, jak to zrobić. A jeżeli potrzebujecie pomocy, to zapraszam do kontaktu. Chętnie pomożemy, bo sami przy tym wiele się uczymy.H 

Partner publikacji:

 

Źródła: 

© ℗ Wszelkie prawa zastrzeżone