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.
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.