2009-11-03 7 views
18

szukam klasy lub metody, która bierze długi ciąg wielu 100s słów i tokenizes, usuwa słowa Stop i wynika z zastosowania w systemie IR.Tokenizer, Stop Usunięcie Słowo, wynikające w Javie

Na przykład:

"The Big Fat cat, powiedział: 'Twój najzabawniejszy facet wiem' na kangura ..."

tokenizera by usunąć znaki interpunkcyjne i powrotu ArrayList słów

słowo przystanek usuwania usunie słowa takie jak „ten”, „na”, itp

Stymulator zredukuje każde słowo w ich "katalogu głównym", na przykład "najśmieszniejszy" stanie się zabawny

Z góry dziękuję.

Odpowiedz

8

AFAIK Lucene może robić, co chcesz. Z StandardAnalyzer i StopAnalyzer można do usuwania słowa stop. W połączeniu z projektem Lucene contrib-snowball (który obejmuje pracę z projektu Snowball), możesz również wykonać jego działanie.

Ale wynikające również rozważyć tę odpowiedź: Stemming algorithm that produces real words

+0

hej! @jitter going Lucene nie pomaga?potrzebujesz bardziej konkretnego linku. – jsroyal

6

Są to standardowe wymagania w przetwarzaniu języka naturalnego, więc będę szukać w takich zestawów narzędzi. Ponieważ wymagają Java zacząłbym z OpenNLP: http://opennlp.sourceforge.net/

Jeśli można szukać w innych językach istnieje również NLTK (Python)

Zauważ, że „Twój najzabawniejszy facet wiem” nie jest to standardowe i składnia sprawia, że ​​trudniej to przetworzyć niż "Jesteś najzabawniejszym facetem, jakiego znam". Nie niemożliwe, ale znacznie trudniejsze. Nie znam żadnego systemu, który by utożsamiał "twoje" z "ty jesteś".

+0

http://en.wikipedia.org/wiki/Natural_language_processing_toolkits – Fedearne

+0

Czy istnieje temat modelowania w openNLP? nie widziałem tego w opisie. –

0

Oto niepełna lista NLP tools. Czasami warto tworzyć je samemu, ponieważ będą lżejsze i będziesz mieć większą kontrolę nad działaniem wewnętrznym: użyj prostego wyrażenia regularnego do tokenizacji. Na przystanku słowa po prostu wcisnąć listy poniżej lub jakąś inną listę HashSet:

common-english-words.txt

Oto jeden z wielu Java implementation of porter stemer).

1

I mieć do czynienia z problemem na wielu zadań z którymi pracowałem, więc pozwól mi dać sugestię tokenizer. Ponieważ nie widzę tego bezpośrednio jako odpowiedzi, często używam edu.northwestern.at.utils.corpuslinguistics.tokenizer.* jako mojej rodziny tokenizerów. Widzę wiele przypadków, w których użyłem klasy PennTreebankTokenizer. Oto jak z niego korzystać:

WordTokenizer wordTokenizer = new PennTreebankTokenizer(); 
    List<String> words = wordTokenizer.extractWords(text); 

Link do tej pracy to here. Tylko jedno zastrzeżenie, nie mam związku z Northwestern, grupą lub pracą, którą wykonują. Jestem po prostu kimś, kto używa tego kodu sporadycznie.

+0

skąd mogę pobrać tokenery północno-zachodnie od? – Hector

+0

@Hector Spróbuj na https://bitbucket.org/pibburns/morphadorner/src/9c3188655f6386e65c93f315f86b3a176607c8f7/src/edu/northwestern/at/morphadorner/corpuslinguistics/tokenizer/?at=default. Być może podałem niewłaściwy pakiet. Po 4 latach trudno jest sprawdzić, czy pakiet się zmienił, czy też nie miałem racji – demongolem