W tym artykule zaprezentujemy prosty system do analizy satysfakcji klientów, oparty na ekspolaracji recenzji. Jego celem jest automatyczna analiza opinii wystawianych przez odwiedzających a następnie  generowanie raportów oraz wizualizacja. 

 

Jak zmierzyć zadowolenie klienta przez analizę sentymentu

 

Rozwój technik uczenia maszynowego, które pozawają na „rozumienie” języka naturalnego nie tylko pozwala na przetwarzanie tysięcy czy milionów recenzji w sekundy. Recenzje, w przeciwieństwie do np ankiet, które wpływają na repondenta poprzez pytania i sposób, w jaki je stawiamy, są bardzo autentycznym źródłem informacji. Możliwość wykrycia tematów które klienci poruszają w swoich komentarzach, zyskujemy unikalne spojrzenie na to jak konsumenci widza nasz produkt/usługę. Wraz ze wzrostem popularności stron z recenzjami, staje się to źródłem marketingowej czy biznesowej wiedzy, której nie można nie docenić.

Case study

Aktualnie w internecie można umieścić opinie niemalże o wszystkim - lokalnym sklepie spożywczym, fryzjerze, marce papierosów czy wakacyjnej destynacji. Na potrzeby naszego studium przypadku użyjemy zbioru danych recenzji hoteli.

Wstęp do analizy

Przed rozpoczęciem pracy zapoznajmy się wybiórczo z elementami analizowanego tekstu. Przede wszystkim, w porównaniu do tekstu w postaci recenzji lub artykułu teksty są krótkie oraz możemy spodziewać się w nich “szumu” w postaci na przykład błędów ortograficznych. Przygotowanie pipeline do analizy rozpoczynamy od oczyszczenia danych. Stosujemy typowy mechanizm: usunięcie znaków interpunkcyjnych i specjalnych, zmiana wszystkich dużych liter na małe oraz wyrzucenie stopwords. 

Sentyment

Tak przygotowany tekst zamieniany na features za pomocą tf-idfa. Odrzucamy przy tym słowa pojawiające się co najwyżej dwa razy w celu redukcji wymiarowości problemu. Tak przygotowane dane użyte zostały do wytrenowania klasyfikatora opartego o SVC. Dostrojenie wybranych parametrów wykonane zostało za pomocą metody opartej o regularną siatkę parametrów. Osiągnięto dzięki temu accuracy na poziomie 86% na danych testowych. Dane testowe pochodzą z tego samego zbioru co dane uczące, jednak nie zostały użyte w procesie uczenia klasyfikatora.

Sentyment może być wskaźnikiem ogólnego zadowolenia konsumentów, żeby jednak wyciągać właściwe wnioski z jego wartości, potrzebujemy punktu odniesienia. Jeśli użyjemy do reprezentacji szeregu czasowego, możemy śledzić zmiany naszego wskaźnika w czasie

Po dokonaniu analizy sentymentu skupiliśmy się na analizie treści wystawianych opinii. W tym przypadku pracujemy już na innym zbiorze danych, który to dotyczy jednego wybranego hotelu. Zrobiliśmy to na trzy sposoby: stworzyliśmy chmurę tagów, generator streszczeń oraz ekstraktor tematów. 

Chmura tagów

W pierwszym kroku wykorzystaliśmy stworzony pipeline do preprocesowania tekstu z nowego zbioru a następnie za pomocą wytrenowanego klasyfikatora podzieliliśmy je na pozytywne i negatywne. Dla każdej z grup stworzyliśmy chmury tagów.

 

Co klienci oceniali pozytywnie

 

A co negatywnie

A co negatywnie

 

Jak widać, najczęściej podróżni narzekają na łazienki oraz śniadanie a takżę budowę ktora zapewne ma miejsce w okolicy. Chwalą za to lokalizację oraz obsługę hotelu. 

W drugiej części analizy stworzyliśmy algorytm, który spośród komentarzy zaklasyfikowanych do danej kategorii wybiera te niosące najwięcej treści. Wykorzystana została do tego reprezentacja w postaci macierzy tf-idf. Każdy komentarz dostał ocenę równą sumie wartości tf-idf słów w nim zawartych podzieloną przez ilość słów. Dzięki temu stworzyliśmy miarę “gęstości informacji” zawartej w komentarzu. Bazując na tej ocenie możemy wybrać z około 400 komentarzy kilka najbardziej interesujących. 

 

Ekstrakcja tematów

W ostatnim kroku znaleźliśmy tematy poruszane w komentarzach za pomocą kolejnej metody - Non-Negative Matrix Factorization. 

Dla każdej z grup przedstawiono słowa kluczowe najlepiej opisujące dany temat. Oczywiście w przeciwieństwie do klasteryzacji jedna opinia może mieć więcej niż jeden temat. Poniżej przedstawiono słowa kluczowe opisujące tematy ocenione jako pozytywne.

 

Topic 0:

room bed hotel comfy comfortable clean building park big modern

Topic 1:

positive wouldn fault experience extra extremely fab fabulous facility fact

Topic 2:

helpful staff breakfast bar extremely restaurant kind hotel food decor

Topic 3:

location park hotel building room staff centre tram view outside

 

Widzimy, że użytkownicy chwalą: pokoje, personel i restaurację oraz lokalizację. Grupa pierwsza składa się z ogólnych pochwał. Sprawdźmy więc jak rozkładają się tematy pośród komentarzy.

 

Jak widzimy, najwięcej pochwał otrzymują pracownicy i restauracja. Drugą liczną grupę stanowią ogólne pochwały.

Podsumowanie

Podsumowując, we wpisie tym pokazaliśmy użycie NLP w celu automatyzacji działania systemu zbierania opinii klientów. Potrafimy znaleźć sentyment a następnie zwizualizować opinie, wybrać najciekawsze oraz wyznaczyć tematykę komentarzy. System ten można rozszerzyć na przykład poprzez uwzględnienie daty wystawienia opinii.