12 lutego 2020

Wyzwania

Jednym z większych wyzwań w rozwoju algorytmów sztucznej inteligencji jest zła jakość danych lub ich bardzo ograniczona ilość. W przypadku danych tekstowych występuje dodatkowy problem wynikający z niejednorodności formy. Dane ze źródeł takich jak skrzynki mailowe, komentarze lub pytania otwarte w ankietach często zawierają wiele błędów ortograficznych, literówki oraz często są pisane w sposób nieskładny.

Lista zadań do wykonania

Zanim przejdziemy do testowania różnych algorytmów uczenia maszynowego w celu określenia który z nich da najlepsze wyniki, należy dokonać normalizacji danych. Proste algorytmy uczenia maszynowego wymagają prostych danych wejściowych. Najprostszy klasyfikator tekstu, przyjmuje na wejściu wielowymiarowy wektor. Liczba wymiarów wektora wejściowego odpowiada liczbie unikalnych słów w zbiorze uczącym. Należy zauważyć, że słowo „uczyć” oraz słowo „uczenie” są przez algorytm rozpatrywane jako 2 zupełnie różne słowa. Normalizacja danych tekstowych obejmuje między innymi:

  • znormalizowanie wielkości liter – domyślnie wszystkie dane powinny być zapisane z małej litery,
  • w zależności od oczekiwanego efektu – usunięcie cyfr,
  • usunięcie znaków interpunkcyjnych oraz znaków białych,
  • usunięcie stop words czyli słów bardzo popularnych i nie niosących za sobą żadnej wartości (w j. ang. są to np. “the”, “a”, “on”, “is”, “all”),
  • opcjonalne usunięcie imion, nazwisk oraz nazw własnych,
  • poprawa literówek na podstawie podobieństwa do słów zawartych w słowniku,
  • lemmatyzacja – proces przekształcenia słowa do jego podstawowej formy; proces ten jest przeprowadzany w oparciu o specjalnie przygotowane słowniki,
  • parts of the speech tagging – przyporządkowanie każdemu słowu odpowiadającej mu części mowy; dodatkowo, w przypadku rzeczowników, można oznaczać słowa jako miejsca/osoby.

schemat

Poziom skomplikowania języka

W zależności od języka normalizowanego tekstu, zadania te mogą być bardzo proste lub bardzo skomplikowane. W przypadku popularnych i prostych składniowo języków takich jak język angielski, dostępnych jest bardzo wiele słowników pozwalających na szybką i dokładną obróbkę danych. W przypadku języka polskiego istnieje wiele utrudnień, co sprawia, że obróbka danych zajmuje wielokrotnie więcej czasu.

Główne wyzwania to:

  • komplikacje gramatyczne – każde słowo może być odmienione na dziesiątki różnych sposobów, co sprawia, że słowniki lemmatyzacji stają się bardzo obszerne, dodatkowo odmiany niektórych słów są homonimiczne z innymi słowami (np. mam jako mieć oraz mam jako mama w liczbie mnogiej w dopełniaczu),
  • z powodu małej popularności języka, dostępna jest zdecydowanie mniejsza liczba słowników oraz narzędzi ułatwiających przetwarzanie tekstów; nie znaczy to, że takich narzędzi nie ma, są one jednak zdecydowanie mniej wygodne w użyciu i nie zawsze w pełni wiarygodne.

Po znormalizowaniu danych tekstowych warto wybrać kilka-kilkanaście losowych próbek i porównać tekst znormalizowany z tekstem bazowym. Podczas porównywania warto zwracać szczególną uwagę na:

  • usunięte słowa – czy nie zostały usunięte słowa kluczowe dla znaczenia zdania,
  • czy pomimo sztuczności znormalizowanego zdania, można zrozumieć treść.

Dobrą praktyką jest również sporządzenie statystyki najczęściej występujących słów w celu oceny czy słowa te na pewno niosą wartość w rozpatrywanym przez nas zadaniu.

Opisany powyżej proces jest bardziej skomplikowany, niż się wydaje, zwłaszcza w przypadku bardziej złożonych języków. Czasami trzeba zastanowić się, czy jakieś słowo jest wartościowe, przetrenować model i sprawdzić, czy przemyślenia i domysły były prawdziwe. W ciągu ostatnich dwóch miesięcy wiele się nauczyliśmy o klasyfikacji tekstu polskiego. Dla jednego z naszych klientów naszym zadaniem było zaklasyfikowanie każdej przychodzącej poczty elektronicznej do jednej z 19 kategorii, aby pomóc organizacji w podniesieniu jakości obsługi klienta.

Mogą Cię zainteresować

Internship / Academy / Team Stuff

BRAINHINT Academy

BRAINHINT Academy to nasz autorski program stażowy który umożliwia uczestnikom zdobywanie wiedzy z zakresu analizy biznesowej, data science, project managementu front- i backend developmentu. Po blisko dwóch miesiące od momentu rozpoczęcia pierwszej edycji sprawdzamy, jak Akademię oceniają nasi stażyści: Mateusz, Adrian, Bartek i Kamil.

mainpage image

Low-Code-No-Code: Zmniejszanie obciążenia informatyzacją

W BRAINHINT uwielbiamy programować. Biorąc pod uwagę, że jesteśmy zespołem programistów z pasją, nie powinno to dziwić. Jednak to, że lubimy programować, nie oznacza, że oczekujemy od klientów wchodzenia w szczegóły. Gdy firmy mogą skupić się na zwiększaniu produktywności zamiast martwić się pracą ze złożonymi i ciągle zmieniającymi się środowiskami informatycznymi, wszyscy odnoszą korzyści. To jest podstawa i powód, dla którego przyjmujemy podejście low-code-no-code.

Fintech: Modne słowo, ale co to właściwie znaczy?

Wielu z nas tęskni za starymi, dobrymi czasami, ale są pewne rzeczy, których musieliśmy się wtedy obejść, jak Wi-Fi, ogromne i bezpłatne zasoby Internetu oraz wygodna bankowość. Przyszłość jest bliżej niż nam się wydaje, ponieważ nowoczesna bankowość zmierza w kierunku rozwiązań fintech całkowicie zorientowanych na klienta. Ale jak by to mogło wyglądać? Przeczytajcie!