Sprachverarbeitung 100 Klopfen 2015 ["Kapitel 6: Englische Textverarbeitung"](http: //www.cl.ecei) Dies ist der 53. "Tokenization" Datensatz von .tohoku.ac.jp / nlp100 / # ch6). Endlich beginnt das Stanford Core NLP. Dies ist das Hauptthema von Kapitel 6. Diesmal ist die Installation die Hauptinstallation, und die Stanford Core NLP-Ausführung und der Python-Teil sind keine große Sache.
Verknüpfung | Bemerkungen |
---|---|
053_1.Tokenization.ipynb | AntwortprogrammGitHubLink(StanfordCoreNLP-AusführungsteilinBash) |
053_2.Tokenization.ipynb | AntwortprogrammGitHubLink(Python) |
100 Klicks Amateur-Sprachverarbeitung:53 | Kopieren Sie die Quelle vieler Quellteile und fügen Sie sie ein |
Stanford Core NLP Beamter | Schauen Sie sich zuerst die Stanford Core NLP-Seite an |
Art | Ausführung | Inhalt |
---|---|---|
OS | Ubuntu18.04.01 LTS | Es läuft virtuell |
pyenv | 1.2.16 | Ich benutze pyenv, weil ich manchmal mehrere Python-Umgebungen benutze |
Python | 3.8.1 | python3 auf pyenv.8.Ich benutze 1 Pakete werden mit venv verwaltet |
Stanford CoreNLP | 3.9.2 | Ich habe es vor einem Jahr installiert und erinnere mich nicht im Detail ... Es war das Neueste auch nach einem Jahr, also habe ich es so benutzt, wie es war |
openJDK | 1.8.0_242 | Ich habe das JDK, das installiert wurde, für andere Zwecke verwendet |
Ein Überblick über verschiedene grundlegende Technologien für die Verarbeitung natürlicher Sprache durch englische Textverarbeitung mit Stanford Core NLP.
Stanford Core NLP, Stemming, Teilwort-Tagging, Extraktion eindeutiger Ausdrücke, Co-Referenzanalyse, Abhängigkeitsanalyse, Klauselstrukturanalyse, S-Ausdruck
Führen Sie die folgende Verarbeitung für den englischen Text durch (nlp.txt).
Verwenden Sie Stanford Core NLP, um das Analyseergebnis des Eingabetextes im XML-Format zu erhalten. Lesen Sie auch diese XML-Datei und geben Sie den Eingabetext in Form eines Wortes pro Zeile aus.
"Stanford Core NLP" ist eine Bibliothek für die Verarbeitung natürlicher Sprache. Es gibt eine ähnliche namens "Stanford NLP", die Japanisch unterstützt. "Stanford NLP" wird seit [70. Klopfen] verwendet (https://qiita.com/FukuharaYohei/items/a78e9118c0be8a7f76a6). Der Unterschied wird im Artikel "Einführung in Stanford NLP mit Python" klar beschrieben. Mit Blick auf den [Release-Verlauf] von Stanford CoreNLP (https://stanfordnlp.github.io/CoreNLP/history.html) wurde es in letzter Zeit nicht viel aktualisiert.
Ich benutze es gemäß der offiziellen Seite.
Wenn Sie die Option "-annotators" nicht verwenden, bleiben Sie danach stecken (sicherlich die 57.).
Ich ordne 5G Speicher mit -Xmx5G
zu. Wenn es zu klein ist, ist ein Fehler aufgetreten.
Bei der Ausführung wird das Ergebnis an derselben Stelle ausgegeben, wobei die Erweiterung "xml" zur gelesenen Datei "nlp.txt" hinzugefügt wird.
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
Übrigens, wenn Sie die XML-Ausgabedatei in dasselbe Verzeichnis stellen und mit einem Browser lesen, lautet die "CoreNLP-to-HTML.xsl" in "/ usr / local / lib / stanford-corenlp-full-2018-10-05" wie folgt Sie können das Ergebnis wie folgt sehen (ich habe es in IE und Edge gesehen, aber nicht in Firefox und Chrome).
import xml.etree.ElementTree as ET
#Nur Wort extrahieren
for i, word in enumerate(ET.parse('./nlp.txt.xml').iter('word')):
print(i, '\t' ,word.text)
#Begrenzt, weil es viele gibt
if i > 30:
break
Ich verwende das Python-Standardpaket "xml" als XML-Parser. Es ist einfach zu bedienen, laden Sie einfach die von Stanford CoreNLP ausgegebene Ausgabe "nlp.txt.xml" mit der Funktion "parse" und laden Sie das Tag "word".
python
for i, word in enumerate(ET.parse('./nlp.txt.xml').iter('word')):
print(i, '\t' ,word.text)
Der Inhalt von xml ist wie folgt (Auszug von Anfang an). Die XML-Datei lautet [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(Auszug von Anfang an)
<?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>
Wenn das Programm ausgeführt wird, werden die folgenden Ergebnisse ausgegeben.
Ausgabeergebnis
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
Übrigens sind -LRB-und -RRB-Klammern, die von Stanford Core NLP konvertiert werden.
--- LRB- linke Klammer --- RRB- rechte Klammer
Recommended Posts