Poglądy są jak pępki – każdy ma swój

 

Większość firm chce wiedzieć, co mówią o nich klienci, ale nikt nie ma czasu na przeczytanie 1000 odpowiedzi na ankietę lub tylu recenzji produktu. Zamiast tego oczekujemy krótkiego podsumowania. Najczęściej przy ocenie produktu widzimy ranking gwiazdek – im produkt lepszy, tym więcej ich otrzymuje. Ale gwiazdki nie powiedzą nam co w tym produkcie klienci cenią najbardziej, co najmniej.

Tradycyjne techniki Natural Language Processing polegają na zliczaniu wystąpień danych słów lub wyrażeń w tekście. Często tekst poddany zostaje analizie „machine learning” i „training” co jest niczym innym jak raczej prymitywną, siłową metoda klasyfikowania tekstu na podstawie wcześniej odpowiednio sklasyfikowanego materiału.

W tym ćwiczeniu podejdziemy do tematu inaczej. Skupimy się na relacjach między słowami.

Każde słowo zdania jest reprezentowane przez wspólny węzeł (może być wiele zdań ze słowem „TV” ale węzeł reprezentujący to słowo wystąpi tylko jeden raz). Kolejność słów w zdaniu jest odzwierciedlana przez relacje wskazujące na następne słowo.

Załóżmy że mamy trzy opinie:

"This is great TV"

"Great TV"

"Great TV for the price!"

Utworzony na ich podstawie wykres z relacjami miedzy słowami wyglądałby następująco:

 

 

Patrząc na taką strukturę wykresu okazuje się, że najbardziej znaczące stwierdzenia (pozytywne lub negatywne) są powtarzane w wielu recenzjach. Szukamy znaczących ścieżek, które z kolei stają się kandydatami na frazy podsumowujące.

Takie podejście może generować frazy, które wcześniej nie były widoczne w oryginalnym tekście ze względu na sposób eksploracji ścieżek (i dzięki temu podsumowanie jest bardziej abstrakcyjne niż ekstraktywne).

Recenzja TV Samsung w sklepie BestBuy.com

Postanowiliśmy przeanalizować co sądzą klienci o telewizorze Samsung, model UN55RU7100FXZA. Recenzje klientów umieściliśmy w grafowej bazie danych Neo4j.

Jak przygotowujemy materiał do analizy? Tekst recenzji czyścimy ze zbędnych znaków przestankowych – nie potrzebujemy spacji, przecinków, kropek. Wyrazy mogą rozpoczynać się z dużej litery lub zawierać duże litery (np. błędy w pisowni) – zamieńmy wszystkie litery na małe.

Tniemy zdania na pojedyncze wyrazy i ładujemy do bazy. Jeśli słowo już występuje, podnosimy jego property „count” o wartość jeden (będziemy potrzebować tej informacji by znaleźć najczęściej występujące słowa). Podobną operację robimy dla relacji – każde ponowne wystąpienie np. relacji „great=>tv” podnosi zliczenie takiej relacji o 1. W ten sposób będziemy znać ścieżki o największej popularności.

 

 

Graf z opiniami klientów.

Gdybyśmy opinie klientów analizowali tylko wg ilości występujących słów, rezultat takiego zapytania wyglądałby następująco:

Szukając jednak najczęściej występujących ścieżek (ścieżek o wysokiej liczbie referencji i obliczając wynik łącznej liczby referencji) uzyskujemy propozycję ekstraktu opinii:

Chcąc zwrócić rezultat w postaci grafu, weź pod uwagę że jak i na poprzednim grafie jest to tyko mała część węzłów bazy, uzyskalibyśmy:

Wnioski i co jeszcze możemy z tym zrobić?

Możliwa jest dalsza analiza uzyskanych rezultatów pod kątem opinii negatywnych i pozytywnych – czy klienci oceniają produkt pozytywnie czy raczej mają o nim złe opinie. Klienci nie powinni mieć do dyspozycji zbyt wielu słów (limit ilości znaków w formularzu na opinie). Im mniejsza ilość dostępnych słów, tym bardziej rzeczowe są opinie i ograniczona ilość nic nie znaczących wypełniaczy. Ekstrakt opinii będzie dokładniejszy i bardziej prawdziwy jeśli będziemy mieć do dyspozycji większą liczbę opinii.