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.

È stato utile?

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:

comune-inglese-words.txt

Ecco uno dei tanti implementazione Java di portiere Stemer ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top