Funkcje priorytetowe wiadomości e-mail

Jeśli korzystasz z usługi Gmaila Google do obsługi poczty e-mail, będziesz wiedział, że pomysł „priorytetowej skrzynki odbiorczej” został po raz pierwszy spopularyzowany przez Google w 2010 roku. Oczywiście to właśnie ten problem zainspirował studium przypadku dotyczące rankingu tej części, więc przydadzą nam się ponownie podejście przyjęte przez Google przy wdrażaniu algorytmu rankingowego, gdy przechodzimy do projektowania własnego. Na szczęście, kilka miesięcy po wydaniu przez Google funkcji priorytetowej skrzynki odbiorczej, opublikowali artykuł zatytułowany „Uczenie się za priorytetową skrzynką odbiorczą Gmaila”, który opisuje ich strategię projektowania podejścia do nadzorowanego uczenia się i sposób jego wdrożenia na dużą skalę . Do naszych celów interesuje nas tylko ten pierwszy. Jak wspomnieliśmy, pomiar czasu ma kluczowe znaczenie, w przypadku Google mają luksus długiej i szczegółowej historii interakcji użytkowników z pocztą e-mail. W szczególności priorytetowa skrzynka odbiorcza Google próbuje przewidzieć prawdopodobieństwo, że użytkownik wykona określone działanie na wiadomości e-mail w ciągu ustalonej liczby sekund od jej dostarczenia. Zestaw działań, które użytkownik może wykonać w Gmailu, jest duży: czytanie, odpowiadanie, etykietowanie itp. Ponadto dostarczenie nie jest jawnym czasem, w którym serwer otrzymuje wiadomość e-mail, ale czasem, w którym jest ona dostarczana użytkownikowi —aIe, kiedy sprawdza pocztę. Podobnie jak w przypadku klasyfikacji spamu, jest to stosunkowo prosty problem do stwierdzenia: jakie jest prawdopodobieństwo, że użytkownik wykona pewne działania, w ramach naszego zestawu możliwych działań, między pewną minimalną a maksymalną liczbą sekund, biorąc pod uwagę zestaw funkcji dla tego e-maila i wiedza, że ​​użytkownik ostatnio sprawdził swój e-mail? Na jakim wszechświecie możliwych funkcji poczty e-mail Google zdecydowało się skoncentrować? Jak można się spodziewać, objęli bardzo dużą liczbę. W przeciwieństwie do klasyfikacji spamu – którą prawie wszyscy użytkownicy będą kodować w ten sam sposób – każdy ma inny sposób uporządkowania priorytetu wiadomości e-mail. Biorąc pod uwagę tę zmienność sposobu, w jaki użytkownicy mogą oceniać zestaw funkcji, podejście Google wymagało włączenia wielu funkcji. Aby rozpocząć projektowanie algorytmu, inżynierowie Google zbadali różne rodzaje funkcji e-mail, które opisują w następujący sposób:

Istnieje wiele  funkcji należących do kilku kategorii. Funkcje społecznościowe opierają się na stopniu interakcji między nadawcą a odbiorcą, np. procent poczty nadawcy czytanej przez odbiorcę. Funkcje treści próbują zidentyfikować nagłówki i ostatnie hasła, które są wysoce skorelowane z odbiorcą działającym (lub nie) na poczcie, np. obecność ostatniego terminu w temacie. Ostatnie warunki użytkownika są wykrywane jako etap wstępnego przetwarzania przed nauką. Funkcje wątku zwracają uwagę na interakcję użytkownika z wątkiem, np. jeśli użytkownik rozpoczął wątek. Funkcje etykiet sprawdzają etykiety, które użytkownik stosuje do poczty za pomocą filtrów. Obliczamy wartości funkcji podczas rankingu i tymczasowo przechowujemy te wartości w celu późniejszego uczenia się. Funkcje ciągłe są automatycznie dzielone na funkcje binarne za pomocą prostego algorytmu w stylu ID3 na histogramie wartości funkcji. Jak wspomnieliśmy, Google ma długą historię interakcji użytkowników z Gmailem, co daje im bogatą perspektywę na to, jakie działania użytkownicy wykonują w e-mailach i kiedy. Niestety, takie szczegółowe dzienniki e-mail nie są dla nas dostępne w tym ćwiczeniu. Zamiast tego ponownie użyjemy publicznego korpusu SpamAssassin, dostępnego do bezpłatnego pobrania na stronie http://spamassassin.apache.org/publiccorpus/. Chociaż ten zestaw danych został rozpowszechniony jako sposób testowania algorytmów klasyfikacji spamu, zawiera również wygodną oś czasu wiadomości e-mail jednego użytkownika. Biorąc pod uwagę ten pojedynczy wątek, możemy zmienić przeznaczenie zestawu danych w celu zaprojektowania i przetestowania priorytetowego systemu rankingu wiadomości e-mail. Ponadto skupimy się tylko na wiadomościach e-mail z szynki z tego zestawu danych, więc wiemy, że wszystkie wiadomości, które badamy, to te, których użytkownik chciałby w swojej skrzynce odbiorczej. Zanim jednak przejdziemy dalej, musimy rozważyć, w jaki sposób nasze dane różnią się od danych w szczegółowym dzienniku e-mail – np. Google – i jak wpływa to na funkcje, które będziemy mogli wykorzystywać w naszym algorytmie. Zacznijmy od przejrzenia każdej z czterech kategorii zaproponowanych przez Google i ustalenia, w jaki sposób mogą one pasować do danych, których używamy.

Najbardziej krytyczną różnicą między szczegółowym dziennikiem e-mail a tym, nad czym będziemy pracować, jest to, że widzimy tylko otrzymane wiadomości. Oznacza to, że będziemy skutecznie „latać na wpół ślepo”, ponieważ nie mamy danych na temat tego, kiedy i jak użytkownik odpowiedział na wiadomości e-mail lub czy użytkownik był autorem wątku. Jest to znaczące ograniczenie, dlatego metody i algorytmy zastosowane w tej częście należy traktować wyłącznie jako ćwiczenia, a nie przykłady, w jaki sposób należy wdrożyć priorytetowe systemy skrzynki odbiorczej dla przedsiębiorstw. Mamy nadzieję, że uda nam się pokazać, w jaki sposób, nawet przy tym ograniczeniu, możemy wykorzystać dane, które mamy do stworzenia miar proxy dla ważności wiadomości e-mail i nadal zaprojektować stosunkowo dobry system rankingowy.

Biorąc pod uwagę, że e-mail jest medium transakcyjnym, z tego wynika, że ​​funkcje społecznościowe będą miały kluczowe znaczenie przy ocenie ważności e-maila. W naszym przypadku widzimy jednak tylko połowę tej transakcji. W szczegółowym przypadku chcielibyśmy zmierzyć wielkość interakcji między użytkownikiem a różnymi nadawcami wiadomości e-mail, aby ustalić, którzy nadawcy otrzymają od użytkownika bardziej natychmiastowe działania. Dzięki naszym danym możemy jednak mierzyć tylko wielkość przychodzącą. Możemy więc założyć, że ten jednokierunkowy wolumin jest dobrym proxy dla rodzaju funkcji społecznościowych, które próbujemy wyodrębnić z danych. Oczywiście nie jest to idealne. Przypomnijmy jednak, że w tym ćwiczeniu będziemy używać tylko wiadomości ham z publicznego korpusu SpamAssassin. Jeśli ktoś otrzyma dużą liczbę wiadomości e-mail z szynki z określonego adresu, może to oznaczać, że użytkownik ma silne połączenie z nadawcą. Alternatywnie może się zdarzyć, że użytkownik zostanie zapisany na listę mailingową o dużej objętości i wolałby, aby te e-maile nie otrzymywały wysokiego priorytetu. To jest właśnie powód, dla którego musimy uwzględnić inne funkcje w celu zrównoważenia tego rodzaju informacji podczas opracowywania naszego systemu rankingowego. Jednym problemem z patrzeniem tylko na liczbę wiadomości z danego adresu jest to, że składnik czasowy jest przedłużony. Ponieważ nasz zestaw danych jest statyczny w porównaniu do w pełni szczegółowego dziennika e-mail, musimy podzielić dane na segmenty czasowe i zmierzyć objętość w tych okresach, aby lepiej zrozumieć dynamikę czasową. Jak omówimy szczegółowo później, w tym ćwiczeniu po prostu uporządkujemy wszystkie wiadomości chronologicznie, a następnie podzielimy zestaw na pół. Pierwsza połowa zostanie wykorzystana do wyszkolenia algorytmu rankingowego, a druga połowa zostanie wykorzystana do przetestowania. W związku z tym objętość wiadomości z każdego adresu e-mail w całym okresie objętym danymi szkoleniowymi zostanie wykorzystana do szkolenia funkcji społecznościowych naszego szeregującego. Biorąc pod uwagę charakter naszych danych, może to być dobry początek, ale będziemy musieli osiągnąć głębsze zrozumienie, jeśli mamy nadzieję na dokładniejsze uszeregowanie wiadomości. Jednym ze sposobów podziału danych w celu uzyskania bardziej szczegółowego obrazu tej dynamiki jest identyfikacja wątków konwersacji, a następnie pomiar aktywności wewnątrz wątku. (Aby zidentyfikować wątki, możemy pożyczyć techniki używane przez innych klientów poczty e-mail i dopasować tematy wiadomości do kluczowych terminów wątków, takich jak „RE:”). Chociaż nie wiemy, jakie działania użytkownik podejmuje dla wątku, tutaj założenie jest takie, że jeśli jest bardzo aktywny, to prawdopodobnie będzie ważniejszy niż mniej aktywne wątki. Kompresując partycje czasowe na te małe kawałki, możemy uzyskać znacznie dokładniejszy serwer proxy dla funkcji wątków potrzebnych do modelowania priorytetu wiadomości e-mail. Następnie istnieje wiele funkcji treści, które możemy wyodrębnić z wiadomości e-mail, aby dodać je do naszego zestawu funkcji. W tym przypadku nadal będziemy utrzymywać względnie prostą sytuację, rozszerzając techniki eksploracji tekstu, których użyliśmy w Części 3 na ten kontekst. W szczególności, jeśli w tematach i treściach wiadomości e-mail otrzymywanych przez użytkownika występują wspólne terminy, przyszłe wiadomości e-mail zawierające te warunki w temacie i treści mogą być ważniejsze niż te, które ich nie zawierają. Jest to właściwie powszechna technika, o której wspomina krótko w opisie priorytetowej skrzynki odbiorczej Google. Dodając funkcje treści oparte na terminach dotyczących zarówno tematu, jak i treści wiadomości e-mail, napotkamy ciekawy problem ważenia. Zazwyczaj w temacie wiadomości e-mail jest znacznie mniej terminów niż w treści; dlatego nie powinniśmy w równym stopniu równoważyć względnego znaczenia wspólnych terminów w tych dwóch cechach. Wreszcie istnieje wiele funkcji używanych w implementacjach rozproszonych priorytetowych skrzynek odbiorczych dla przedsiębiorstw – takich jak Gmail – które są po prostu niedostępne w tym ćwiczeniu. Wspomnieliśmy już, że jesteśmy ślepi na znaczną część zestawu funkcji społecznościowych i dlatego musimy używać serwerów proxy do mierzenia tych interakcji. Ponadto istnieje wiele działań użytkowników, których nie mamy nawet możliwości oszacować. Na przykład działania użytkownika, takie jak etykietowanie lub przenoszenie wiadomości e-mail, są całkowicie niewidoczne dla naszego widoku. W implementacji priorytetowej skrzynki odbiorczej Google akcje te stanowią dużą część zestawu akcji, ale tutaj ich całkowicie brakuje. Ponownie, chociaż jest to słabość opisanego tutaj podejścia w porównaniu z tymi, które używają pełnych szczegółów dzienników e-mail, ponieważ nie są one dostępne w tym przypadku, fakt, że ich brakuje, nie wpłynie na nasze wyniki. Mamy teraz podstawowy plan zestawu funkcji, których użyjemy do stworzenia naszego systemu rankingu e-mail. Zaczynamy od uporządkowania wiadomości chronologicznie, ponieważ w tym przypadku większość tego, co jesteśmy zainteresowani w przewidywaniu, jest zawarta w wymiarze czasowym. Pierwsza połowa tych wiadomości służy do trenowania naszego rankingu, a następnie mamy cztery funkcje, których będziemy używać podczas szkolenia. Pierwsza to proxy funkcji społecznościowej, która mierzy objętość wiadomości od danego użytkownika w danych szkoleniowych. Następnie próbujemy skompresować pomiary czasowe, szukając wątków i oceniając aktywne wątki wyżej niż nieaktywne. Na koniec dodajemy dwie funkcje zawartości w oparciu o częste warunki w  tematach wiadomości e-mail i treść wiadomości. W następnej sekcji zaimplementujemy opisane wyżej podejście do priorytetowej skrzynki odbiorczej. Korzystając z wymienionych tutaj funkcji, określimy schemat ważenia, który próbuje szybko wypchnąć ważniejsze wiadomości na górę stosu. Tak jak poprzednio, jednak naszym pierwszym krokiem będzie pobranie nieprzetworzonych danych e-mail i wyodrębnienie odpowiednich elementów, aby pasowały do naszego zestawu funkcji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *