Traitement linguistique 100 coups 2015 ["Chapitre 6: Traitement de texte anglais"](http: //www.cl.ecei) Il s'agit du 53e "Tokenization" enregistrement de .tohoku.ac.jp / nlp100 / # ch6). Enfin, la PNL de Stanford Core est sur le point de commencer. C'est le sujet principal du chapitre 6. Cette fois, l'installation est la principale, et l'exécution de Stanford Core NLP et la partie Python ne sont pas un gros problème.
Lien | Remarques |
---|---|
053_1.Tokenization.ipynb | LienGitHubduprogrammederéponse(Partied'exécutiondeStanfordCoreNLPdansBash) |
053_2.Tokenization.ipynb | LienGitHubduprogrammederéponse(Python) |
100 coups de traitement du langage amateur:53 | Copiez et collez la source de nombreuses pièces source |
Officiel PNL de Stanford Core | Premier regard sur la page PNL de Stanford Core |
type | version | Contenu |
---|---|---|
OS | Ubuntu18.04.01 LTS | Il fonctionne virtuellement |
pyenv | 1.2.16 | J'utilise pyenv car j'utilise parfois plusieurs environnements Python |
Python | 3.8.1 | python3 sur pyenv.8.J'utilise 1 Les packages sont gérés à l'aide de venv |
Stanford CoreNLP | 3.9.2 | Je l'ai installé il y a un an et je ne me souviens pas en détail ... C'était le dernier même après un an, alors je l'ai utilisé tel quel |
openJDK | 1.8.0_242 | J'ai utilisé le JDK qui a été installé à d'autres fins tel quel |
Un aperçu des différentes technologies de base pour le traitement du langage naturel grâce au traitement de texte anglais à l'aide de la PNL Stanford Core.
Stanford Core NLP, Stemming, Part-word tagging, Unique expression extraction, Co-reference analysis, Dependency analysis, Clause structure analysis, S expression
Effectuez le traitement suivant sur le texte anglais (nlp.txt).
Utilisez Stanford Core NLP pour obtenir le résultat de l'analyse du texte d'entrée au format XML. Lisez également ce fichier XML et sortez le texte d'entrée sous la forme d'un mot par ligne.
"Stanford Core NLP" est une bibliothèque pour le traitement du langage naturel. Il existe un système similaire appelé "Stanford NLP", qui prend en charge le japonais. "Stanford NLP" a été utilisé depuis 70ème coup. La différence est clairement décrite dans l 'article «Introduction à Stanford NLP with Python». En regardant l '[Historique des versions] de Stanford CoreNLP (https://stanfordnlp.github.io/CoreNLP/history.html), il n'a pas été beaucoup mis à jour récemment.
Je l'utilise selon la page officielle.
Si vous n'utilisez pas l'option -annotators
, vous serez bloqué par la suite (certainement le 57e).
J'alloue 5G de mémoire avec -Xmx5G
. S'il est trop petit, une erreur s'est produite.
Une fois exécuté, le résultat sera envoyé au même emplacement avec l'extension xml
ajoutée au fichier de lecture nlp.txt
.
java -cp "/usr/local/lib/stanford-corenlp-full-2018-10-05/*" \
-Xmx5g \
edu.stanford.nlp.pipeline.StanfordCoreNLP \
-annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref \
-file nlp.txt
À propos, si vous placez le fichier XML de sortie dans le même répertoire et que vous le lisez avec un navigateur, le CoreNLP-to-HTML.xsl
qui se trouvait dans / usr / local / lib / stanford-corenlp-full-2018-10-05
est le suivant Vous pouvez voir le résultat comme (je l'ai vu dans IE et Edge, mais pas dans Firefox et Chrome).
import xml.etree.ElementTree as ET
#Extraire uniquement le mot
for i, word in enumerate(ET.parse('./nlp.txt.xml').iter('word')):
print(i, '\t' ,word.text)
#Limité car il y en a beaucoup
if i > 30:
break
J'utilise le package standard Python xml
comme analyseur XML. C'est facile à utiliser, il suffit de lire la sortie nlp.txt.xml
de Stanford CoreNLP avec la fonction parse
et de lire la balise word
.
python
for i, word in enumerate(ET.parse('./nlp.txt.xml').iter('word')):
print(i, '\t' ,word.text)
Le contenu de xml est le suivant (extrait du début). Le fichier XML est [GitHub](https://github.com/YoheiFukuhara/nlp100/blob/master/06.%E8%8B%B1%E8%AA%9E%E3%83%86%E3%82%AD% E3% 82% B9% E3% 83% 88% E3% 81% AE% E5% 87% A6% E7% 90% 86 / nlp.txt.xml).
xml:nlp.txt.xml(Extrait du début)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="CoreNLP-to-HTML.xsl" type="text/xsl"?>
<root>
<document>
<docId>nlp.txt</docId>
<sentences>
<sentence id="1">
<tokens>
<token id="1">
<word>Natural</word>
<lemma>natural</lemma>
<CharacterOffsetBegin>0</CharacterOffsetBegin>
<CharacterOffsetEnd>7</CharacterOffsetEnd>
<POS>JJ</POS>
<NER>O</NER>
<Speaker>PER0</Speaker>
</token>
<token id="2">
<word>language</word>
<lemma>language</lemma>
<CharacterOffsetBegin>8</CharacterOffsetBegin>
<CharacterOffsetEnd>16</CharacterOffsetEnd>
<POS>NN</POS>
<NER>O</NER>
<Speaker>PER0</Speaker>
</token>
Lorsque le programme est exécuté, les résultats suivants sont affichés.
Résultat de sortie
0 Natural
1 language
2 processing
3 From
4 Wikipedia
5 ,
6 the
7 free
8 encyclopedia
9 Natural
10 language
11 processing
12 -LRB-
13 NLP
14 -RRB-
15 is
16 a
17 field
18 of
19 computer
20 science
21 ,
22 artificial
23 intelligence
24 ,
25 and
26 linguistics
27 concerned
28 with
29 the
30 interactions
31 between
En passant, «-LRB-» et «-RRB-» sont des parenthèses, qui sont converties par Stanford Core NLP.
--- LRB- support gauche --- RRB- support droit
Recommended Posts