2013-07-08 32 views
16

Próbuję zgrupować strumień na Twitterze. Chcę umieścić każdy tweet w klastrze, który mówi o tym samym temacie. Próbowałem połączyć strumień za pomocą algorytmu klastrowania online z podobieństwem tf/idf i cosinus, ale odkryłem, że wyniki są dość złe.Lepsze klastrowanie dokumentów tekstowych niż podobieństwo tf/idf i cosinus?

Główne wady stosowania tf/idf polega na tym, że klastry dokumentów są podobne do słów kluczowych, dlatego dobrze jest zidentyfikować prawie identyczne dokumenty. Na przykład rozważ następujące zdania:

1- Strona Stackoverflow to miłe miejsce. 2- Stackoverflow to strona internetowa.

Przedostatnie dwa zdania będą prawdopodobnie grupowane razem z rozsądną wartością progową, ponieważ mają wiele słów kluczowych. Ale teraz rozważ następujące dwa zdania:

1- Strona Stackoverflow to miłe miejsce. 2- Regularnie odwiedzam witrynę Stackoverflow.

Teraz za pomocą tf/idf algorytm grupowania zakończy się niepowodzeniem, ponieważ udostępnia tylko jedno słowo kluczowe, nawet jeśli oboje mówią o tym samym temacie.

Moje pytanie: czy istnieją lepsze techniki łączenia dokumentów?

+4

@ThomasJungblut również, TF-IDF ma być systemem ważącym, który już zwiększa wagę właściwych słów kluczowych. Jeśli chodzi o rysunek, problem polega na tym, że tweety są tak małymi fragmentami tekstu, że nie można oczekiwać, że podobieństwo działa na nich bardzo dobrze poza "bliską tożsamością". Większość tweetów nie jest nawet pełnymi zdaniami, więc NLP prawdopodobnie również się nie powiedzie. –

+1

Jedna rzecz do oglądania z LSI/LDA/NMF itp. To temat dryfu. Szkolenie modelu na znanym zbiorze danych przyniesie dobre wyniki, jeśli twój rurociąg nie zostanie poprawnie wykonany. Jeśli zastosujesz model do zupełnie niewidocznego zestawu danych, możesz zauważyć znaczny spadek wydajności dzięki dopasowaniu oryginalnych danych treningowych. Ponieważ tekst Twittera jest tak krótki, reprezentacja będzie wymagać trochę manipulowania, ponieważ może nie być wystarczająco dużo tekstu, aby właściwie trenować model. – Steve

+0

@steve są jakieś rozwiązania tego? –

Odpowiedz

2

Długa odpowiedź:

TfxIdf jest obecnie jednym z najbardziej znanych metod wyszukiwania. Potrzebne są niektóre preprocessing z Natural Langage Processing (NLP). Istnieje wiele zasobów, które mogą Ci pomóc w języku angielskim (na przykład lib 'nltk' w python).

Przed indeksowaniem musisz użyć analizy NLP zarówno na swoich pytaniach (pytaniach), jak i na swoich dokumentach.

Chodzi o to, że podczas gdy tfxidf (lub tfxidf^2 jak w lucene) jest dobry, powinieneś używać go na zasobie z adnotacjami z informacjami o metajęzykach. To może być trudne i wymaga dużej wiedzy na temat podstawowej wyszukiwarki, analizy gramatyki (składni) i domeny dokumentu.

Krótka odpowiedź: Lepszą techniką jest użycie TFxIDF z adnotacjami NLP lekkiej gramatyki oraz ponowne pisanie kwerend i indeksowanie.

9

Z mojego doświadczenia wynika, że ​​podobieństwo cosinusa do wektorów latent semantic analysis (LSA/LSI) działa o wiele lepiej niż surowy tf-idf do grupowania tekstu, chociaż przyznaję, że nie wypróbowałem go na danych Twittera. W szczególności zajmuje się problemami z rzadkością, z którymi się spotykasz, gdzie dokumenty nie zawierają wystarczającej liczby wspólnych terminów.

Modele tematyczne, takie jak LDA, mogą działać jeszcze lepiej.

+0

są modelami klastrów modeli tematycznych? czy reprezentacja funkcji? –

+0

@guckogucko: reprezentacje cech. –

6

Jak wspomniano w innych komentarzach i odpowiedziach. Korzystanie z LDA może dawać dobre tweety-> wagi tematów.

Jeśli te wagi są niewystarczające dla potrzeb klastra, można przyjrzeć się grupowaniu tych dystrybucji tematów za pomocą algorytmu grupowania.

Choć jest to zależny od treningu LDA może z łatwością łączyć tweety ze stackoverflow, przepełnieniem stosu i przepełnieniem stosu w tym samym temacie. Jednak "mój stos pudełek wkrótce się przepełni" może zamiast tego przejść do innego tematu dotyczącego pudeł.

Kolejny przykład: tweet ze słowem Apple może dotyczyć wielu różnych tematów (firma, owoce, Nowy Jork i inne). LDA przyjrzy się innym słowom w tweecie, aby określić odpowiednie tematy.

  1. „Steve Jobs był CEO w Apple” jest wyraźnie o firmie
  2. „jem najsmaczniejsze jabłko” jest wyraźnie o owocach
  3. „Ja jadę do wielkiego jabłka kiedy podróżuję do USA "najprawdopodobniej odwiedza Nowy Jork