Comment effectuer la Lemmatisation dans R?
Cette question est un double possible de Lemmatizer dans R ou python (suis, es, est ->?), mais je suis d'ajouter ce nouveau depuis le précédent a été fermé en disant qu'il était trop large et la seule réponse qu'il a n'est pas efficace (comme il accède à un site web externe pour ce, qui est trop lent comme je l'ai corpus de très grande taille pour trouver les lemmes). Ainsi, une partie de cette question sera semblable à celui ci-dessus mentionné la question.
Selon Wikipedia, la lemmatisation est défini comme:
Lemmatisation (ou lemmatisation) en linguistique, est le processus de regrouper les différentes formes fléchies d'un mot de sorte qu'ils peuvent être analysés comme un seul élément.
Une simple recherche sur Google pour la lemmatisation dans R seulement point pour le package wordnet
de R. Lorsque j'ai essayé ce paquet attendent à ce qu'un caractère de vecteur de c("run", "ran", "running")
entrée de la lemmatisation fonction entraînerait c("run", "run", "run")
, j'ai vu que ce paquet fournit des fonctionnalités similaires à grepl
fonction par le biais de différents noms de filtre et d'un dictionnaire.
Un exemple de code à partir de wordnet
paquet, ce qui donne le maximum de 5 mots commençant par "voiture", comme le nom du filtre explique lui-même:
filter <- getTermFilter("StartsWithFilter", "car", TRUE)
terms <- getIndexTerms("NOUN", 5, filter)
sapply(terms, getLemma)
Ci-dessus est PAS la lemmatisation que je suis à la recherche pour. Ce que je cherche, à l'aide de R
je veux trouver des vraies racines de ces mots: (Pour, par exemple, à partir de c("run", "ran", "running")
à c("run", "run", "run")
).
Je pense que cette question est légèrement différente de celle de la typique package/l'outil de recherche des questions qui seront à proximité. Elle demande comment effectuer la lemmatisation dans R, qui est une question de programmation. @StrikeR : je vous suggère de modifier la dernière ligne "il y a ..." afin d'éviter cette question se fermé.
merci pour la suggestion. Fait des changements en conséquence.
Ce n'est pas une question de programmation. La partie programmation de ce a une réponse simple - trouver/créer un dictionnaire et d'effectuer une recherche.
Je suis en désaccord avec votre commentaire que ce n'est pas une question de programmation. Dans votre commentaire, vous êtes en supposant qu'il existe une seule forme de lemmatisation à l'aide du dictionnaire, mais il existe aussi d'autres formes qui sont basés sur des règles. Alors, je pense que la partie programmation n'est pas aussi simple que vous le pensez. Je suis très bien avec toute réponse qui peut effectuer la lemmatisation, plus précisément dans R, un dictionnaire ou à base de règles. Mais la seule contrainte est qu'il ne doit pas être lent à traiter un grand corpus de textes.
OriginalL'auteur StrikeR | 2015-01-29
Vous devez vous connecter pour publier un commentaire.
Bonjour, vous pouvez essayer paquet
koRpus
qui permettent d'utiliser Treetagger :Voir le
lemma
colonne pour le résultat que vous demandez.Pas de problème, je comprends, utiliser un logiciel externe peut être délicat.
OriginalL'auteur
Comme un post précédent mentionné, la fonction lemmatize_words() du package R textstem pouvez effectuer cela et vous donner ce que je comprends que vos résultats souhaités:
OriginalL'auteur
Peut-être découlant est assez pour vous? Typique de traitement du langage naturel tâches à faire avec découle des textes. Vous pouvez trouver plusieurs paquets de CRAN Tâche de Vue de la PNL: http://cran.r-project.org/web/views/NaturalLanguageProcessing.html
Si vous avez vraiment besoin de quelque chose de plus complexe, il est spécialisé solutsions basé sur la cartographie des phrases pour les réseaux de neurones. Autant que je sache, ces besoin d'une quantité massive de données d'entraînement. Il y a beaucoup de logiciel ouvert créé et mis à disposition par Stanford PNL Groupe.
Si vous voulez vraiment creuser le sujet, vous pouvez creuser dans le cas des archives liées à la même Stanford PNL Groupe publications section. Il y a quelques livres sur le sujet.
OriginalL'auteur
Lemmatisation peut être fait dans la R facilement avec textStem paquet. Les étapes sont les suivantes:
1) Installer textstem
2) ajouter le package par
bibliothèque(textstem)
3) stem_word=lemmatize_words(word, dictionary = lexique: hash_lemmas)
#où stem_word est le résultat de la lemmatisation et la parole est le mot d'entrée.
OriginalL'auteur
@Andy et @Arunkumar sont corrects quand ils disent textstem bibliothèque peut être utilisée pour effectuer découlant et/ou de la lemmatisation. Cependant, lemmatize_words() ne fonctionne que sur un vecteur de mots. Mais dans un corpus, nous n'avons pas de vecteur de mots; nous avons des chaînes, chaque chaîne étant le contenu d'un document. Par conséquent, pour effectuer la lemmatisation sur un corpus, vous pouvez utiliser la fonction lemmatize_strings() comme un argument de tm_map() de tm paquet.
Ne pas oublier d'exécuter la ligne de code suivante après avoir fait la lemmatisation:
C'est parce que dans le but de créer un document-terme de la matrice, il faut avoir PlainTextDocument de type d'objet, qui est changé après l'utilisation de lemmatize_strings() (pour être plus précis, le corps de l'objet ne contient pas de contenu et les méta-données de chaque document plus - il est maintenant juste une structure contenant des documents au contenu; ce n'est pas le type d'objet que DocumentTermMatrix() prend comme argument).
Espérons que cette aide!
OriginalL'auteur