Verwenden Sie Stanford Core NLP von Python

Einführung

Stanford CoreNLP ist eine vollständige Bibliothek für die Verarbeitung von englischem Text in natürlicher Sprache. Dieses Mal werde ich die Verwendung von CoreNLP aus Python vorstellen.

Laden Sie Stanford Core NLP herunter und entpacken Sie es

herunterladen

Laden Sie die Version 3.2.0 (veröffentlicht am 20.06.2013) anstelle der neuesten Version über den unten stehenden Link herunter. Der Grund, warum es nicht die neueste Version ist, wird später beschrieben. http://nlp.stanford.edu/software/stanford-corenlp-full-2013-06-20.zip

$ curl -L -O http://nlp.stanford.edu/software/stanford-corenlp-full-2013-06-20.zip

Auftauen

In meinem Fall habe ich es in / usr / local / lib abgelegt.

$ unzip ./stanford-corenlp-full-2013-06-20.zip -d /usr/local/lib/

corenlp-install python

corenlp-python entwickelt von Torotoki basierend auf Dasmith's Es ist auch in PyPI registriert. In PyPI registriertes Corenlp-Python unterstützt jedoch nur CoreNLP Version 3.2.0 (zum Zeitpunkt des Schreibens dieses Artikels).

Installation

$ pip install corenlp-python

Grundlegende Verwendung

Generieren Sie einen Parser, indem Sie den Pfad angeben, in dem CoreNLP dekomprimiert wurde, den Text analysieren und das Ergebnis im JSON-Format zurückgeben.

corenlp_example.py


import pprint
import json
import corenlp

#Parser-Generierung
corenlp_dir = "/usr/local/lib/stanford-corenlp-full-2013-06-20/"
parser = corenlp.StanfordCoreNLP(corenlp_path=corenlp_dir)

#Analysieren und drucken Sie das Ergebnis hübsch
result_json = json.loads(parser.parse("I am Alice."))
pprint.pprint(result_json)

Ausführungsergebnis:

{u'coref': [[[[u'I', 0, 0, 0, 1], [u'Alice', 0, 2, 2, 3]]]],
 u'sentences': [{u'dependencies': [[u'nsubj', u'Alice', u'I'],
                                   [u'cop', u'Alice', u'am'],
                                   [u'root', u'ROOT', u'Alice']],
                 u'parsetree': u'(ROOT (S (NP (PRP I)) (VP (VBP am) (NP (NNP Alice))) (. .)))',
                 u'text': u'I am Alice.',
                 u'words': [[u'I',
                             {u'CharacterOffsetBegin': u'0',
                              u'CharacterOffsetEnd': u'1',
                              u'Lemma': u'I',
                              u'NamedEntityTag': u'O',
                              u'PartOfSpeech': u'PRP'}],
                            [u'am',
                             {u'CharacterOffsetBegin': u'2',
                              u'CharacterOffsetEnd': u'4',
                              u'Lemma': u'be',
                              u'NamedEntityTag': u'O',
                              u'PartOfSpeech': u'VBP'}],
                            [u'Alice',
                             {u'CharacterOffsetBegin': u'5',
                              u'CharacterOffsetEnd': u'10',
                              u'Lemma': u'Alice',
                              u'NamedEntityTag': u'PERSON',
                              u'PartOfSpeech': u'NNP'}],
                            [u'.',
                             {u'CharacterOffsetBegin': u'10',
                              u'CharacterOffsetEnd': u'11',
                              u'Lemma': u'.',
                              u'NamedEntityTag': u'O',
                              u'PartOfSpeech': u'.'}]]}]}

Grenzen Sie die Funktionen ein

Standardmäßig wird alles von der Syntaxanalyse / morphologischen Analyse bis zur Extraktion eindeutiger Ausdrücke ausgeführt. Wenn Sie jedoch nur einige Funktionen verwenden möchten, geben Sie Eigenschaften an. Durch Eingrenzen der Funktionen wird der Vorgang schneller (insbesondere der ner ist schwer).

Wenn Sie beispielsweise Wörter teilen möchten, erstellen Sie die folgende Datei user.properties.

user.properties


annotators = tokenize, ssplit

Übergeben Sie den Pfad dieser Datei beim Erstellen des Parsers an den Parameter properties.

corenlp_example2.py


import pprint
import json
import corenlp

#Parser-Generierung
corenlp_dir = "/usr/local/lib/stanford-corenlp-full-2013-06-20/"
properties_file = "./user.properties"
parser = corenlp.StanfordCoreNLP(
    corenlp_path=corenlp_dir,
    properties=properties_file) #Eigenschaften festlegen

#Analysieren und drucken Sie das Ergebnis hübsch
result_json = json.loads(parser.parse("I am Alice."))
pprint.pprint(result_json)

Ausführungsergebnis:

{u'sentences': [{u'dependencies': [],
                 u'parsetree': [],
                 u'text': u'I am Alice.',
                 u'words': [[u'I',
                             {u'CharacterOffsetBegin': u'0',
                              u'CharacterOffsetEnd': u'1'}],
                            [u'am',
                             {u'CharacterOffsetBegin': u'2',
                              u'CharacterOffsetEnd': u'4'}],
                            [u'Alice',
                             {u'CharacterOffsetBegin': u'5',
                              u'CharacterOffsetEnd': u'10'}],
                            [u'.',
                             {u'CharacterOffsetBegin': u'10',
                              u'CharacterOffsetEnd': u'11'}]]}]}

Annotatorliste

Oben werden nur Tokenize und Ssplit verwendet. Da es jedoch verschiedene andere Annotatoren gibt, werden sie kurz zusammengefasst.

annotator Funktion Abhängiger Annotator
tokenize Wort geteilt (Keiner)
cleanxml Entfernen von XML-Tags tokenize
ssplit Satzaufteilung tokenize
pos Morphologische Analyse(Tag-Details tokenize, ssplit
lemma Headword-Konvertierung tokenize, ssplit, pos
ner Einzigartige Ausdrucksextraktion tokenize, ssplit, pos, lemma
regexner Extraktion eindeutiger Ausdrücke durch regulären Ausdruck tokenize, ssplit
sentiment Emotionale Wortanalyse (Unbekannt)
truecase Fallnormalisierung tokenize, ssplit, pos, lemma
parse Parsing tokenize, ssplit
dcoref Richtlinienanalyse tokenize, ssplit, pos, lemma, ner, parse

Recommended Posts

Verwenden Sie Stanford Core NLP von Python
Verwenden Sie thingspeak aus Python
Verwenden Sie fließend Python
Verwenden Sie MySQL aus Python
Verwenden Sie MySQL aus Python
Verwenden Sie BigQuery aus Python.
Verwenden Sie mecab-ipadic-neologd von Python
Verwenden Sie MySQL von Anaconda (Python)
Verwenden Sie die e-Stat-API von Python
Lesen und verwenden Sie Python-Dateien aus Python
Verwenden Sie zwangsweise Google Translate aus Python
Verwenden Sie die kabu Station® API von Python
Verwenden Sie Azure Blob Storage aus Python
Verwenden Sie die Flickr-API von Python
Verwenden Sie das von fastText trainierte Modell von Python
Verwenden Sie die Google Analytics-API von Python
Verwenden Sie den PostgreSQL-Datentyp (jsonb) von Python
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
Ich möchte ein Glas aus Python verwenden
Verwenden Sie die Google Cloud Vision-API von Python
Verwenden Sie Django aus einem lokalen Python-Skript
Verwenden von C ++ - Funktionen aus Python mit pybind11
SQL zu SQL
MeCab von Python
Firebase: Verwenden Sie Cloud Firestore und Cloud Storage von Python
Studie aus Python Hour7: Verwendung von Klassen
[Bash] Holen Sie sich die Kraft von Python aus Bash mithilfe der folgenden Dokumentation
Wickeln Sie C mit Cython für Python ein
Verwenden Sie Python in Ihrer Umgebung von Win Automation
Ich möchte Ceres Solver aus Python verwenden
Verwenden wir verschiedene Versionen von SQLite3 aus Python3!
Wrap C ++ mit Cython zur Verwendung von Python
Verwenden Sie das nghttp2 Python-Modul von Homebrew aus pyenvs Python
Verwenden Sie Tor, um eine Verbindung von urllib2 [Python] [Mac] herzustellen.
Python: Entpacken Sie die Standardeingabe mit zipfile
Verwenden Sie das Paketdichtungsverhältnis für das R-Dichteverhältnis von Python
Verwenden Sie config.ini mit Python
Bedienen Sie Filemaker von Python aus
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Datumsangaben in Python
Greifen Sie über Python auf Bitcoind zu
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Python aus oder importieren
Verwenden Sie Valgrind mit Python
Verwenden Sie Mecab mit Python 3
Verwenden Sie LiquidTap Python Client ③
Führen Sie Python aus Excel aus
Installieren Sie Python von der Quelle
Verwenden Sie DynamoDB mit Python
Führen Sie Befehle aus Python aus
Ich wollte die Python-Bibliothek von MATLAB verwenden
Bedienen Sie Neutronen von Python!
Verwenden Sie Python 3.8 mit Anaconda
Methodische Verwendung im [Python] -Format
Verwenden Sie Python mit Docker
Beginnen wir Python aus Excel. Ich benutze kein VBA.
Betreiben Sie LXC von Python aus
Verwenden Sie LiquidTap Python Client ②
Manipuliere Riak aus Python
Erzwinge Python aus Fortran