[PYTHON] 100 Sprachverarbeitung Knock-53: Tokenisierung

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.

Referenzlink

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

Umgebung

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

Kapitel 6: Abhängigkeitsanalyse

Inhalt des Studiums

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

Inhalt anklopfen

Führen Sie die folgende Verarbeitung für den englischen Text durch (nlp.txt).

53. Tokenization

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.

Problemergänzung (Über "Stanford Core NLP")

"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.

Antworten

Antwortprogramm (Stanford Core NLP-Ausführungsteil in Bash) [053_1.Tokenization.ipynb](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 / 053_1.Tokenization.ipynb)

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).

image.png

Antwortprogramm (Python-Teil) [053_1.Tokenization.ipynb](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 / 053_1.Tokenization.ipynb)

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

Kommentar beantworten

XML-Perspektive

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>

Ausgabeergebnis (Ausführungsergebnis)

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

100 Sprachverarbeitung Knock-53: Tokenisierung
100 Sprachverarbeitungsklopfen (2020): 38
100 Sprachverarbeitung klopfen 00 ~ 02
100 Sprachverarbeitung klopfen 2020 [00 ~ 39 Antwort]
100 Sprachverarbeitung klopfen 2020 [00-79 Antwort]
100 Sprachverarbeitung klopfen 2020 [00 ~ 69 Antwort]
100 Sprachverarbeitung Knock 2020 Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 17
100 Sprachverarbeitung klopfen 2020 [00 ~ 49 Antwort]
100 Sprachverarbeitung Knock-52: Stemming
100 Sprachverarbeitung Knock Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 07
100 Sprachverarbeitung Knock 2020 Kapitel 2
100 Amateur-Sprachverarbeitungsklopfen: 47
100 Amateur-Sprachverarbeitungsklopfen: 97
100 Sprachverarbeitung klopfen 2020 [00 ~ 59 Antwort]
100 Amateur-Sprachverarbeitungsklopfen: 67
100 Sprachverarbeitungsklopfen mit Python 2015
100 Sprachverarbeitung Knock-51: Wortausschnitt
100 Sprachverarbeitung Knock-58: Extraktion von Taple
100 Sprachverarbeitung Knock-57: Abhängigkeitsanalyse
100 Sprachverarbeitung Knock-50: Satzumbruch
100 Sprachverarbeitung Knock Kapitel 2 (Python)
100 Sprachverarbeitung Knock-25: Vorlagenextraktion
Sprachverarbeitung 100 Knock-87: Wortähnlichkeit
Lösen von 100 Sprachverarbeitungsklopfen 2020 (01. "Patatokukashi")
100 Amateur-Sprachverarbeitungsklopfen: Zusammenfassung
100 Sprachverarbeitung Knock 2020 Kapitel 2: UNIX-Befehle
100 Sprachverarbeitung Knock 2015 Kapitel 5 Abhängigkeitsanalyse (40-49)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
100 Sprachverarbeitung Knock Kapitel 1 in Python
100 Sprachverarbeitung Knock 2020 Kapitel 4: Morphologische Analyse
100 Sprachverarbeitung Knock 2020 Kapitel 9: RNN, CNN
100 Sprachverarbeitung Knock-76 (mit Scicit-Learn): Beschriftung
100 Sprachverarbeitung Knock-55: Extraktion eindeutiger Ausdrücke
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 3
100 Sprachverarbeitung Knock-82 (Kontextwort): Kontextextraktion
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
100 Sprachverarbeitungsklopfen: Kapitel 1 Vorbereitungsbewegung
100 Sprachverarbeitung Knock 2020 Kapitel 6: Maschinelles Lernen
100 Sprachverarbeitung Knock Kapitel 4: Morphologische Analyse
Sprachverarbeitung 100 knock-86: Wortvektoranzeige
100 Sprachverarbeitung Knock 2020 Kapitel 10: Maschinelle Übersetzung (90-98)
100 Sprachverarbeitung Knock 2020 Kapitel 5: Abhängigkeitsanalyse
100 Sprachverarbeitung Knock-28: Entfernen des MediaWiki-Markups
100 Sprachverarbeitung Knock 2020 Kapitel 7: Word Vector
100 Sprachverarbeitung Knock-59: Analyse der S-Formel
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)
Sprachverarbeitung 100 Knocks-31 (mit Pandas): Verben
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 1
100 Sprachverarbeitung Knock 2020 Kapitel 1: Vorbereitende Bewegung
100 Sprachverarbeitung Knock-73 (mit Scikit-Learn): Lernen
100 Sprachverarbeitung Knock Kapitel 1 von Python
100 Sprachverarbeitung Knock 2020 Kapitel 3: Reguläre Ausdrücke
100-Sprachverarbeitung knock-24: Dateireferenz extrahieren
100 Language Processing Knock 2015 Kapitel 4 Morphologische Analyse (30-39)
100 Sprachverarbeitung Knock-74 (mit Scicit-Learn): Vorhersage
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 2
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 4
100 Sprachverarbeitung Knock-38 (mit Pandas): Histogramm
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (00 ~ 04)