Tokenizer, Arrêter suppression Word, Découlant en Java
-
12-09-2019 - |
Question
Je suis à la recherche d'une classe ou une méthode qui prend une longue série de beaucoup de 100s des mots et tokenizes, supprime les mots d'arrêt et les tiges pour une utilisation dans un système IR.
Par exemple:
"Le grand gros chat, dit votre gars le plus drôle je sais» au Kangourou ..."
le tokenizer supprimerait la ponctuation et retourner un ArrayList
de mots
le décapant de mot d'arrêt supprimerait des mots comme « le », « à », etc
l'égrappoir réduirait chaque mot le leur « racine », par exemple « plus drôle » deviendrait drôle
Un grand merci à l'avance.
La solution
Lucene peut faire ce que vous voulez. Avec StandardAnalyzer
et StopAnalyzer
vous pouvez à la suppression des mots d'arrêt. En combinaison avec le Lucene contrib-snowball
(qui comprend le travail de boule de neige ) projet, vous pouvez faire l'issu aussi.
Mais pour endiguer cette réponse considèrent également à: algorithme de lemmatisation qui produit de vrais mots
Autres conseils
Ce sont des exigences standard dans le traitement du langage naturel, donc je rechercherais dans ces boîtes à outils. Depuis vous avez besoin de Java je commencerais avec OpenNLP: http://opennlp.sourceforge.net/
Si vous pouvez regarder d'autres langues il y a aussi NLTK (Python)
Notez que « votre mec le plus drôle je sais » n'est pas la syntaxe standard, ce qui rend plus difficile à traiter que « Tu es le gars plus drôle que je sais ». Pas impossible, mais beaucoup plus difficile. Je ne sais pas d'un système qui équivaudrait « votre » à « vous êtes ».
Je l'ai abordé la question sur un certain nombre de tâches que j'ai travaillé, alors laissez-moi donner une suggestion tokenizer. Comme je ne vois pas donné directement comme une réponse, je l'utilise souvent edu.northwestern.at.utils.corpuslinguistics.tokenizer.*
comme ma famille de tokenizers. Je vois un certain nombre de cas où je la classe PennTreebankTokenizer
. Voici comment vous l'utilisez:
WordTokenizer wordTokenizer = new PennTreebankTokenizer();
List<String> words = wordTokenizer.extractWords(text);
Le lien vers ce travail est . Juste un avertissement, je n'ai aucune affiliation avec le Nord-Ouest, le groupe ou le travail qu'ils font. Je suis juste quelqu'un qui utilise le code de temps en temps.
Voici la liste complète des outils PNL . Parfois, il est logique de créer vous-même ces car ils seront plus légers et vous auriez plus de contrôle au fonctionnement interne: une utilisation simple expression régulière pour tokenizations. Pour les mots d'arrêt poussent juste la liste ci-dessous ou une autre liste à un HashSet:
Voici un des nombreux implémentation Java de porter Stemer).