Tokenizer, stop rimozione Word, derivante in Java
-
12-09-2019 - |
Domanda
Cerco una classe o un metodo che prende una lunga serie di molti 100s di parole e tokenizza, rimuove le parole di stop e steli per l'utilizzo in un sistema a infrarossi.
Ad esempio:
"La grande gatto grasso, detto 'il tuo ragazzo più divertente che io so' per il canguro ..."
il tokenizzatore eliminerebbe la punteggiatura e restituire un ArrayList
di parole
la fermata parola rimozione eliminerebbe parole come "il", "a", ecc
la Stemmer ridurrebbe ogni parola della loro 'root', ad esempio 'più divertente' sarebbe diventato divertente
Molte grazie in anticipo.
Soluzione
Lucene può fare quello che vuoi. Con StandardAnalyzer
e StopAnalyzer
possibile per la rimozione di arresto di parola. In combinazione con il Lucene contrib-snowball
(che comprende il lavoro da Snowball ) del progetto è possibile effettuare le derivante troppo.
Ma per derivante anche considerare questa risposta a: Stemming algoritmo che produce parole vere
Altri suggerimenti
Questi sono i requisiti standard in Natural Language Processing quindi vorrei guardare in questi toolkit. Dal momento che hai bisogno di Java mi piacerebbe iniziare con OpenNLP: http://opennlp.sourceforge.net/
Se si può guardare in altri lingue c'è anche NLTK (Python)
Si noti che "il vostro ragazzo più divertente che io so" non è la sintassi standard, e questo rende più difficile da gestire rispetto a "Tu sei il ragazzo più divertente che io so". Non impossibile, ma molto più difficile. Non so di qualsiasi sistema che equiparare la "tua" a "sei".
ho affrontato il problema in una serie di attività con cui ho lavorato, per cui vorrei dare un suggerimento tokenizzatore. Come io non lo vedo dato direttamente come una risposta, io spesso uso edu.northwestern.at.utils.corpuslinguistics.tokenizer.*
come la mia famiglia di tokenizers. Vedo un certo numero di casi in cui ho usato la classe PennTreebankTokenizer
. Ecco come lo si utilizza:
WordTokenizer wordTokenizer = new PennTreebankTokenizer();
List<String> words = wordTokenizer.extractWords(text);
Il link per questo lavoro è qui . Basta un disclaimer, non ho alcuna affiliazione con Northwestern, il gruppo, o il lavoro che fanno. Sono solo una persona che utilizza il codice di tanto in tanto.
Qui è la lista completa di strumenti di PNL . A volte ha senso per creare questi stessi in quanto saranno più leggeri e si dovrebbe avere un maggiore controllo per il funzionamento interno: utilizzare semplice espressione regolare per tokenizations. Per le parole di stop solo spingere la lista qui sotto o qualche altra lista per un HashSet:
Ecco uno dei tanti implementazione Java di portiere Stemer ).