Frage

Ich suche nach einer Klasse oder Methode, die eine lange Reihe von vielen 100s von Wörtern und tokenizes nimmt, entfernt die Stoppwörter und Stiele für die Verwendung in einem IR-System.

Zum Beispiel:

  

"Die große fette Katze, sagte: 'Ihr lustigste Kerl ich weiß' zum Känguru ..."

die tokenizer würde die Interpunktion entfernen und eine ArrayList von Wörtern zurückkehren

die Stoppwort-Entferner würden Worte wie „die“, „zu“, etc

entfernen

die stemmer würde jedes Wort reduzieren die ihre ‚Wurzel‘, zum Beispiel ‚lustigsten‘ würde lustig

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Lucene können tun, was Sie wollen. Mit StandardAnalyzer und StopAnalyzer Sie können auf das Stoppwort Entfernung. In Kombination mit dem Lucene contrib-snowball (die Arbeit umfasst von Schneeball ) Projekt, das Sie zu dem stamm tun können.

Aber ergeben betrachten auch diese Antwort an: Algorithmus abstammend, die produziert echte Worte

Andere Tipps

Dies sind Standardanforderungen in Natural Language Processing, so würde ich in einem solchen Toolkits aussehen. Da Sie Java erfordern würde ich mit OpenNLP starten: http://opennlp.sourceforge.net/

Wenn Sie in anderen Sprachen sehen kann, gibt es auch NLTK (Python)

Beachten Sie, dass „Ihr lustigste Typ, den ich kenne“ keine Standard-Syntax ist, und das macht es schwieriger zu verarbeiten als „Du bist der lustigste Typ, den ich kenne“. Nicht unmöglich, aber sehr viel schwieriger. Ich weiß nicht, von jedem System, das „Ihr“ auf „Sie“.

entspräche

Ich habe mit dem Thema auf einer Reihe von Aufgaben behandelt mit denen ich gearbeitet habe, so lassen Sie mich einen tokenizer Vorschlag geben. Da ich es nicht direkt als Antwort gegeben sehen, verwende ich oft edu.northwestern.at.utils.corpuslinguistics.tokenizer.* als meine Familie von Tokenizer. Ich sehe eine Reihe von Fällen, in denen ich die PennTreebankTokenizer Klasse verwendet. Hier ist, wie Sie es verwenden:

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

Der Link zu dieser Arbeit ist hier . Nur ein Haftungsausschluss, habe ich keine Verbindung mit der Northwestern, der Gruppe oder der Arbeit, die sie tun. Ich bin nur jemand, der den Code gelegentlich verwendet.

Hier ist umfassende Liste der NLP-Tools . Manchmal macht es Sinn, diese selbst zu schaffen, wie sie leichter sein wird, und würden Sie mehr Kontrolle das Innenleben haben: mit einfachen regulären Ausdruck für tokenizations. Für nur Stoppwörter in der Liste unten oder eine andere Liste in eine HashSet drücken:

Common-Englisch-words.txt

Dies ist eine von vielen Java-Implementierung von Porter Stemer ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top