Je veux faire des choses comme l'analyse morphologique japonaise (MeCab) en anglais, donc j'utilise Apache OpenNLP
OS: Windows7 64bit Langue: Java8 IDE: Eclipse4.6.1
Lors de l'utilisation de MeCab sur la ligne de commande
Il fait beau aujourd'hui. ↓ ↓ Aujourd'hui "Nomenclature, Avocat possible, \ *, \ *, \ *, \ *, Aujourd'hui, Kyo, Kyo" Est "auxiliaire, affiliation, \ *, \ *, \ *, \ *, ha, ha, wa" Bon "Adjectif, Indépendance, \ *, \ *, Adjectif / Bon, Forme de base, Bon, Bon, Bon" Météo "Nomenclature, Général, \ *, \ *, \ *, \ *, Météo, Tenki, Tenki" "Verbe auxiliaire, \ *, \ *, \ *, mort spéciale, forme de base, est, mort, mort" Ne "Auxiliaire, auxiliaire final, \ *, \ *, \ *, \ *, ne, ne, ne" .. "Symboles, signes de ponctuation, \ *, \ *, \ *, \ *,.,.,."
Et la morphologie et les informations de morphologie sont affichées
A partir de ces informations, nous obtenons trois «morphologie», «une partie des mots» et «forme de base» et les utilisons pour l'analyse.
Je veux faire la même chose en anglais, donc j'utilise OpenNLP pour obtenir la «morphologie», les «parties» et la «forme de base» à partir de phrases anglaises.
Depuis OpenNLP lui-même prend en charge plusieurs langues, il a les fonctions suivantes.
Cette fois, parce que je veux acquérir «élément de forme», «paroles de partie» et «forme de base»
Manipuler
Créez un projet maven et ajoutez ce qui suit à pom.xml
<dependency>
<groupId>org.apache.opennlp</groupId>
<artifactId>opennlp-tools</artifactId>
<version>1.8.4</version>
</dependency>
Téléchargez également les fichiers suivants à partir du site OpenNLP et placez-les dans le projet afin que le chemin passe.
en-token.bin
Fichier binaire utilisé pour Tokenizer
Télécharger la destination http://opennlp.sourceforge.net/models-1.5/
en-pos-maxent.bin(en-pos-perceptron.bin)
Fichier binaire utilisé pour Part-of-Speech Tagger
Télécharger la destination http://opennlp.sourceforge.net/models-1.5/
en-lemmatizer.txt
Dictionnaire prototype des mots utilisés dans Lemmatizer
Télécharger la destination https://raw.githubusercontent.com/richardwilly98/elasticsearch-opennlp-auto-tagging/master/src/main/resources/models/en-lemmatizer.dict
En-lemmatizer.txt utilise les données liées comme données texte.
//Paramètres de Tokenizer
InputStream modelIn = new FileInputStream("~/en-token.bin");
TokenizerModel model = new TokenizerModel(modelIn);
Tokenizer tokenizer = new TokenizerME(model);
message = "It is a fine day today.";
String[] morphemes = tokenizer.tokenize(message);
System.out.println(Arrays.asList(morphemes));
>> [It, is, a, fine, day, today, .]
// Part-of-définition du baliseur vocal
InputStream posModelIn = new FileInputStream("~/en-pos-maxent.bin");
POSModel posModel = new POSModel(posModelIn);
POSTaggerME posTagger = new POSTaggerME(posModel);
//Utiliser des données séparées
String [] tags = posTagger.tag(morphemes);
System.out.println(Arrays.asList(tags));
>> [PRP, VBZ, DT, JJ, NN, NN, .]
//Paramètres du lemmatiseur
InputStream dictLemmatizer = new FileInputStream("~/en-lemmatizer.txt");
DictionaryLemmatizer lemmatizer = new DictionaryLemmatizer(dictLemmatizer);
//Utilisez des données séparées et des données à temps partiel
String [] lemmas = lemmatizer.lemmatize(morphemes, tags);
System.out.println(Arrays.asList(lemmas));
>> [it, be, a, fine, day, today, O]
Puisque le résultat du prototypage de mots est souvent "O" plus que ce à quoi je m'attendais, il est nécessaire de faire des ajustements tels que le remplacer par des données morphologiques.
Recommended Posts