2012-01-01 9 views
11

Chcę utworzyć listę ~ 6 słów kluczowych (lub nawet lepiej: para słów kluczowych) dla każdej wiadomości na forum wiadomości.Algorytm (lub biblioteka C#) do identyfikowania "słów kluczowych" w zbiorze wiadomości?

  • Głównym zastosowaniem słów kluczowych jest zastąpienie wierszy tematu w niektórych przypadkach. Na przykład: Wiadomość z Terry wysłane 5 gru słowa kluczowe: Norweigan niebieski, upierzenie, nie martwe
  • w super idealny świat słów kluczowych by zidentyfikować zarówno unikalne faz i zwrotów, które klastrze dyskusję na „tematy”, czyli słowa, które są bardzo istotne dla danego komunikatu i kilka innych wiadomości na forum, ale nie są często spotykane na forum jako całości.
  • Spodziewam się pojawienia fałszywych zwrotów, nic wielkiego.
  • nie może być zbyt kosztowne obliczeniowo: Potrzebuję czegoś, które mogą obsługiwać kilkaset wiadomości w ciągu kilku sekund, jak będę musiał ponownie uruchomić to za każdym razem nowa wiadomość przychodzi

Ktoś wie. dobra biblioteka C# do realizacji tego? Może istnieje sposób na nakłonienie Lucene.NET do dostarczenia tego rodzaju informacji?

Czy, jeśli to nie możliwe, ktoś może zaproponować algorytm (lub zestaw algos) do czytania? Jeśli wdrażam siebie, potrzebuję czegoś niecodziennie skomplikowanego, mogę się z tym uporać, jeśli tylko uda się go przeprowadzić w ciągu tygodnia. W tej chwili najlepsze, co znalazłem pod względem prostego, ale skutecznego, to TF-IDF.

UPDATE: Mam przesłanych wyników przy użyciu tfidf wybrać 5 najlepszych słów kluczowych z rzeczywistym zbiorze tutaj: http://jsbin.com/oxanoc/2/edit#preview

Wyniki są przeciętne, ale nie całkowicie bezużyteczne ... może z dodanie wykrywających frazy wielowyrazowe, byłoby to wystarczająco dobre.

+0

Jeśli chcesz, aby również przyłapano na literach takich jak twój przykład, potrzebujesz modułu sprawdzania pisowni, a Twój algorytm będzie kosztowny pod względem obliczeniowym! –

+0

Jestem w porządku z nadchodzącymi literotypami. Skupiam się bardziej na "upewnieniu się, że przynajmniej kilka użytecznych słów kluczowych pojawi się na liście", zamiast "upewnij się, że nie ma nic głupiego na liście słów kluczowych". – Seth

+0

Umieściłem dane wyjściowe słów kluczowych z naiwnej implementacji TF-IDF w prawdziwych wiadomościach (wiadomość wyświetlana po najechaniu kursorem): [TF-IDF wybrał słowa kluczowe z rzeczywistych danych] (http://jsbin.com/oxanoc/2/edit #zapowiedź). Wyniki są w porządku, ale nie gwiezdne. Myślę, że ujawniają prawdziwą potrzebę frazesów zawierających wiele słów. – Seth

Odpowiedz

2

I zostały wdrożone algorytm ekstrakcji słów kluczowych w Javie kilka tygodni temu na uni. projekt i użył modelu tf-idf.

Algorytm:
Najpierw szukaliśmy wszystkich bigrams w akapicie, a wyodrębnione sensownych nich. (*)
Następnie wzięliśmy zestaw unigramów i bigramów, a każdy z nich oceniono na podstawie odpowiedniego wyniku tf-idf. Wynik idf każdego terminu był "liczbą dokumentów" pobranych przez Bing API.

(*) Podejmowanie decyzji, który bi-gram ma znaczenie:
użyliśmy różne heurystyki do znalezienia które bi-gram można uznać za znaczące. Na koniec najlepsze wyniki osiągnięto przez "zadawanie" wikipedii: szukaliśmy bimetalu. Jeśli istnieje artykuł zawierający ten bi-gram, uznaliśmy, że jest znaczący.

Ocena:
Oceniliśmy algorytmu na zestawie 50 abstraktów z przypadkowych artykułów i wyjął precision and recall tych algorytmów.
Rezultatem było ~ 40% przypomnienia i ~ 35% precyzji, co nie jest złe.

Powiązane problemy