Co się klika na Facebooku?

Co się klika na Facebooku?

6 października 2017

Jakie frazy w nagłówkach są najbardziej chwytliwe i jak mierzyć popularność tematów w czasie? Analiza artykułów udostępnianych na Facebooku.

Motywacja

Na blogu finai.pl publikujemy artykuły dotyczące świata finansów. Codziennie musimy podejmować decyzje, na jaki temat będziemy pisać . Niniejszy artykuł jest opisem analizy nagłówków i treści pojawiających się w sieci, która ma pomóc dokonywać tego wyboru.

 

Gromadzenie danych

Dane do analiz pobieraliśmy z dwóch źródeł: API Facebooka i API udostępnionego przez firmę SentiOne.

W pierwszej kolejności zdefiniowaliśmy listę portali internetowych, które publikują artykuły o tematyce finansowej. Większość z nich prowadzi fanpage na Facebooku, na których udostępniają swoje treści. Każde udostępnienie zawiera link do artykułu, jego nagłówek, krótki opis treści oraz liczbę komentarzy, ponownych udostępnień i reakcji użytkowników.

Dostęp do tych danych umożliwia Graph API udostępniane przez Facebooka, które pozwala między innymi na pobieranie postów z danego fanpage-u. Za jego pomocą stworzyliśmy zbiór danych zawierający nagłówki artykułów publikowanych przez wybrane portale w ciągu ostatniego roku wraz z informacjami o liczbach reakcji użytkowników na wybrany artykuł .

Kolejne źródło danych, którego używamy, jest udostępniane przez firmę SentiOne. Jest to API, które umożliwia monitorowanie opinii na zadane tematy na wybranych stronach internetowych. Wykorzystujemy je do pobierania nagłówków, treści, linków i innych informacji o artykułach publikowanych na zdefiniowanej przez nas liście portali.

Korzystając z powyższych narzędzi zgromadziliśmy dwa zbiory danych z ostatniego roku:

  • Zbiór około 60 000 nagłówków artykułów wraz z liczbą komentarzy, udostępnień i reakcji użytkowników Facebooka,
  • Zbiór około 300 000 nagłówków i tekstów artykułów pobranych z API SentiOne.

W obydwu znajdują się linki, na podstawie których można w łatwy sposób stwierdzić, czy dwa rekordy dotyczą tego samego artykułu. Pozwala to połączyć dane z dwóch źródeł w jeden zbiór liczący około 30 000 rekordów, który zawiera zarówno treść publikacji, jak i liczbę reakcji użytkowników Facebooka.

 

Analiza nagłówków artykułów

Aby mierzyć atrakcyjność artykułu zdefiniowaliśmy współczynnik popularności, który jest sumą ważoną liczby komentarzy, udostępnień i innych reakcji użytkowników Facebooka na post. Wagi zostały określone w taki sposób, aby odzwierciedlały istotność danego typu reakcji. Na przykład ponowne udostępnienie artykułu na swojej tablicy uznaliśmy za dużo bardziej istotne niż polubienie, dlatego to pierwsze ma wyższą wagę.

Celem było znalezienie takich fraz, które często występują w nagłówkach artykułów o wysokim współczynniku popularności. W tym celu wybrano te słowa oraz pary i trójki słów, które mają największe średnie wartości współczynnika popularności. Dodatkowo, aby uniknąć losowych zaburzeń zostały uwzględnione tylko te wyrażenia, które pojawiają się częściej od ustalonego progu. Wyniki zostały przedstawione w poniższych tabelach.

Wyraz

Współczynnik

Liczba wystąpień

Entropia

 facebooku 369  117  2.37
 pomoc 263  121  2.36
 kaczyńskiego 247  105  2.34
 żyje 234  150  2.33
 tusk  220  158  2.10
 ostrzega  216  188  2.35
 sondaż  214  194  2.31
 policja  214  149  2.33
 facebooka  208  138  2.36

 

Para wyrazów

Współczynnik

Liczba wystąpień

Entropia

(uważaj, na) 1094 37 2.24
(na, facebooku) 388 110 2.37
(saryusz, wolski) 370 41 0.91
(katastrofy, smoleńskiej) 350 41 1.97
(się, pod) 324 39 2.13
(nie, żyje) 307 105 2.30
(NUM, latka) 292 85 2.23
(rachunki, za) 280 33 2.24
(kwoty, wolnej) 277 37 1.60

Trójka wyrazów

Współczynnik

Liczba wystąpień

Entropia

(mln, zł, na) 513 22 2.24
(ponad, _NUM_, proc) 299 26 2.37
(ii, wojny, światowej) 291 22 0.91
(prezydent, andrzej, duda) 270 33 1.97
(handlu, w, niedzielę) 233 76 2.13
(_NUM_, proc, polaków) 218 25 2.30
(prezydent, podpisał, ustawę) 213 44 2.23
(zakaz, handlu, w) 213 66 2.24
(tys, zł, na) 203 21 0.96


Tabele zawierające najlepsze frazy pod względem współczynnika popularności, wraz z liczbą wystąpień i entropią.

 

Wyrażenia takie jak „kwoty wolnej”, „ciężarówka wjechała w” dotyczą wydarzeń, które przez krótki okres były opisywane w mediach i wzbudzały wiele emocji, przez co mają wysoki współczynnik popularności. Występują one jedynie w krótkim okresie od wystąpienia zdarzenia. Z naszego punktu widzenia bardziej interesujące są takie, cieszące się dużą popularnością frazy, których ukazywanie się jest w miarę jednostajne w czasie.

Aby zmierzyć stopień równomierności występowania frazy w czasie zliczamy jej wystąpienia w każdym miesiącu. Po unormowaniu tych liczb dostajemy rozkład prawdopodobieństwa, którego przykłady zostały przedstawione na poniższych wykresach.

Górny wykres przedstawia regularnie pojawiające się wyrażenie w ciągu roku, a dolny jednorazowo.

 

Aby skwantyfikować równomierność rozkładu użyliśmy entropii. Przyjmuje ona wartości od 0 do logarytmu z liczby przyjmowanych wartości (w naszym przypadku jest to 12 miesięcy). Im większa wartość entropii, tym bardziej równomierny rozkład. Zatem fraza „na facebooku” będzie miała wysoką, a „saryusz wolski” niską wartość entropii.  

Takie podejście pozwala na automatyczne wykrywanie tych zwrotów, które zwiększają popularność publikowanych treści na Facebooku w sposób trwały, a nie tylko przy okazji specyficznych wydarzeń, popularnych w mediach przez krótki czas. Korzysta ono tylko z informacji zawartych w nagłówku, nie wnikając w treść artykułu. Ustalenie ograniczenia na entropię pozwala na znalezienie regularnie występujących, najpopularniejszych fraz.

Sprawdziliśmy również, jak ma się długość nagłówka do jego popularności na Facebooku. W tym celu obliczyliśmy średnie wartości współczynników dla nagłówków o różnych liczbach wyrazów. Największą popularnością na Facebooku cieszą się artykuły, których nagłówki zawierają do pięciu-siedmiu wyrazów, co uświadczą poniższy wykres.

 

Ekstrakcja treści artykułu z kodu HTML

Kolejnym krokiem było dołączenie do analizy treści artykułów. Aby móc analizować dowolny artykuł musieliśmy z kodu HTML strony internetowej, na której się znajduje, wyekstrahować samą treść pomijając przy tym niepotrzebne teksty takie jak odnośniki do innych artykułów, dane kontaktowe, itp. Istnieją gotowe rozwiązania, które robią to dla stron w języku angielskim, ale żadne z nich nie dawało satysfakcjonującej dokładności na polskich portalach. Dlatego postanowiliśmy stworzyć własne narzędzie.

Zagadnienie ekstrakcji treści artykułu sprowadziliśmy do problemu klasyfikacji. W tym celu kod strony jest reprezentowany w postaci drzewa. Następnie wybierane są wszystkie wierzchołki zawierające tekst i klasyfikowane za pomocą wcześniej nauczonego modelu, czy składają się na treść artykułu. Danymi wejściowymi do klasyfikatora są różne cechy wierzchołka takie jak: tag wierzchołka, liczba znaków w tekście, liczba wyrazów, liczba linków, liczba wielkich liter i wiele innych.

Rezultatem wyżej opisanych działań dla pojedynczej strony jest lista napisów wraz z ich przyporządkowaniem do klasy „artykuł” albo „nie-artykuł”. Następnie wszystkie oznaczone flagą „artykuł” są złączane do jednego tekstu, który w założeniu jest właściwą treścią artykułu.

Do nauczenia modelu posłużył zbiór treści artykułów pobrany z SentiOne oraz kodów HTML stron internetowych, na których zostały one opublikowane. Aby uzyskać zmienną objaśnianą musieliśmy oznaczyć te fragmenty tekstu, które są częścią treści artykułu. W tym celu napisaliśmy prosty algorytm, który na wejściu przyjmuje kod HTML strony internetowej i treść artykułu, a zwraca listę wszystkich tagów zawierających tekst wraz z oznaczeniem, które z nich są treścią artykułu. Dla około 50% stron internetowych dawał poprawne wyniki, a dla pozostałych zwracał informację o niepowodzeniu. Wybraliśmy te tagi, dla których oznaczanie się powiodło i na tak stworzonym zbiorze wytrenowaliśmy model xgboost.

Do sprawdzenia jakości modelu posłużyły trzy metryki, które zostały nieco zmodyfikowane na potrzeby omawianego zagadnienia. Mierzą one stopień podobieństwa między wyekstrahowanym a prawdziwym tekstem artykułu. Pierwszą z miar jest indeks Jaccarda, który jest stosunkiem liczby unikalnych słów występujących jednocześnie w obydwu tekstach do liczby unikalnych słów występujących w co najmniej jednym tekście. Kolejną jest precyzja, którą można interpretować jako prawdopodobieństwo, że słowo zwrócone przez algorytm występuje w artykule. Ostatnią miarą jest recall, która jest szansą zdarzenia odwrotnego, czyli zwrócenia przez algorytm słowa występującego w artykule. Wyniki jakie uzyskaliśmy na niezależnym zbiorze artykułów są następujące:

  • Indeks Jaccarda: 84.5%
  • Precyzja: 90.8%
  • Recall: 90.6%

Analiza tematów artykułów

Mając treści artykułów mogliśmy przystąpić do analizy ich tematów za pomocą modelu LDA (Latent Dirichlet Allocation). Przed dopasowaniem modelu należało odfiltrować zbędne informacje, takie jak wielkość liter, liczby, adresy stron internetowych. W następnej kolejności usunięto z tekstów tzw. stopwords (i ,lub, ja, który, się, itp.), czyli słowa które często występują w języku i nie wnoszą istotnej informacji. Aby zredukować liczbę unikalnych słów występujących w analizowanych tekstach i w efekcie zmniejszyć złożoność modelu, sprowadzono wszystkie wyrazy do ich formy podstawowej. Służy do tego lematyzacja, czyli metoda szukania formy podstawowej słowa korzystająca ze słownika odmian. Użyliśmy słownika Polimorf stworzonego przez Instytut Podstaw Informatyki PAN dostępnego na stronie: http://sgjp.pl/morfeusz/morfeusz.html.

Model LDA (Latent Dirichlet Allocation) pozwala na znalezienie tematów charakterystycznych dla danego zbioru dokumentów oraz przypisanie co najmniej jednego do każdego z tekstów. W ramach modelu temat jest zdefiniowany jako rozkład prawdopodobieństwa na słowach, czyli dla każdego słowa określa częstość jego występowania w tekście o określonym temacie. Na podstawie kilku słów o najwyższym prawdopodobieństwie w danym temacie możemy określić, czego on dotyczy. Na przykład najbardziej charakterystyczne wyrazy dla dwóch zagadnień to:

  1. francja le francuski pen wybór marine prezydencki macron hollande.
  2. pracownik wynagrodzić zatrudnienie zawodowy pracodawca minimalny płaca niski pracować

Na ich podstawie możemy stwierdzić, że pierwsze z nich dotyczy wyborów prezydenckich we Francji, a drugie prawa pracy.

LDA zwraca również dla każdego artykułu stopień jego przynależności do poszczególnych tematów. Przykładowy wynik może mówić, że jakiś artykuł w 40% dotyczy tematu 1, a w 60% dotyczy tematu 2. Mówi to w przybliżeniu jaka część słów w wybranej publikacji dotyczy jakiej problematyki. Wracając do przykładu powyżej, taki tekst może mówić o obietnicach wyborczych dotyczących prawa pracy przed wyborami prezydenckimi we Francji.

Liczba tematów zwracanych przez model jest jednym z parametrów, które trzeba zadać. My ustaliliśmy go na 100. Po przyporządkowaniu do każdego artykułu jednego najbardziej prawdopodobnego tematu, można zaobserwować jak kształtowały się trendy występowania różnych zagadnień w czasie. Poniżej znajduje się wykres tygodniowej liczby wpisów dotyczących wyborów prezydenckich we Francji.

Na wykresie widać wyraźnie 3 tygodnie, podczas których opublikowano najwięcej artykułów dotyczących tego zagadnienia.

Powyższe analizy dostarczają cennych informacji o tym, jakie tematy są najbardziej popularne w danym momencie, co umożliwia optymalny dobór treści artykułów, które publikujemy na naszej stronie.

 

Michał Stolarczyk, FinAi

Warszawa, 6 października 2017

Location icon Facebook icon Twitter icon Google+ icon LinkedIn icon Technology icon Business icon Marketing icon Phone icon Mail icon User icon Tag icon Bubble icon Arrow right icon Arrow left icon Calendar PR Contact