Utiliser la PNL Stanford Core à partir de Python

introduction

Stanford CoreNLP est une bibliothèque complète pour le traitement en langage naturel du texte anglais. Cette fois, je vais vous présenter comment utiliser CoreNLP à partir de Python.

Téléchargez et décompressez Stanford Core NLP

Télécharger

Téléchargez la version 3.2.0 (publiée le 20/06/2013) au lieu de la dernière version à partir du lien ci-dessous. La raison pour laquelle ce n'est pas la dernière version sera décrite plus loin. 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

Dégivrer

Dans mon cas, je l'ai mis dans / usr / local / lib.

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

corenlp-installer python

corenlp-python développé par Torotoki basé sur dasmith's Il est également enregistré dans PyPI. Cependant, corenlp-python enregistré dans PyPI ne prend en charge que CoreNLP version 3.2.0 (au moment de la rédaction de cet article).

Installation

$ pip install corenlp-python

Utilisation de base

Générez un analyseur en spécifiant le chemin d'accès où CoreNLP a été décompressé, analysez le texte et le résultat sera renvoyé au format JSON.

corenlp_example.py


import pprint
import json
import corenlp

#Génération d'analyseur
corenlp_dir = "/usr/local/lib/stanford-corenlp-full-2013-06-20/"
parser = corenlp.StanfordCoreNLP(corenlp_path=corenlp_dir)

#Analyser et imprimer le résultat joli
result_json = json.loads(parser.parse("I am Alice."))
pprint.pprint(result_json)

Résultat de l'exécution:

{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'.'}]]}]}

Affiner les fonctions

Par défaut, il fait tout, de l'analyse syntaxique / analyse morphologique à l'extraction d'expressions uniques, mais si vous souhaitez n'utiliser que certaines fonctions, spécifiez les propriétés. En réduisant les fonctions, l'opération devient plus rapide (surtout le ner est lourd).

Par exemple, si vous souhaitez séparer des mots, créez le fichier user.properties suivant.

user.properties


annotators = tokenize, ssplit

Passez le chemin de ce fichier au paramètre properties lors de la création de l'analyseur.

corenlp_example2.py


import pprint
import json
import corenlp

#Génération d'analyseur
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) #Définir les propriétés

#Analyser et imprimer le résultat joli
result_json = json.loads(parser.parse("I am Alice."))
pprint.pprint(result_json)

Résultat de l'exécution:

{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'}]]}]}

Liste des annotateurs

Dans ce qui précède, seuls tokenize et ssplit sont utilisés, mais comme il existe divers autres annotateurs, ils sont brièvement résumés.

annotator une fonction Annotateur dépendant
tokenize Partage de mots (Aucun)
cleanxml Suppression de balises XML tokenize
ssplit Séparation des phrases tokenize
pos Analyse morphologique (Détails du tag tokenize, ssplit
lemma Conversion de mots clés tokenize, ssplit, pos
ner Extraction d'expression unique tokenize, ssplit, pos, lemma
regexner Extraction d'expressions uniques par expression régulière tokenize, ssplit
sentiment Analyse des mots émotionnels (inconnue)
truecase Normalisation des cas tokenize, ssplit, pos, lemma
parse Analyse tokenize, ssplit
dcoref Analyse directive tokenize, ssplit, pos, lemma, ner, parse

Recommended Posts

Utiliser la PNL Stanford Core à partir de Python
Utilisez Thingsspeak de Python
Utiliser fluentd de python
Utilisez MySQL depuis Python
Utiliser MySQL depuis Python
Utilisez BigQuery depuis Python.
Utilisez mecab-ipadic-neologd de Python
Utiliser MySQL depuis Anaconda (python)
Utilisez l'API e-Stat de Python
Lire et utiliser des fichiers Python à partir de Python
Utiliser de force Google Translate à partir de python
Utilisez l'API kabu Station® de Python
Utiliser Azure Blob Storage à partir de Python
Utilisez l'API Flickr de Python
Utiliser le modèle entraîné fastText de Python
Utiliser l'API Google Analytics de Python
Utiliser le type de données PostgreSQL (jsonb) à partir de Python
Utiliser le groupe d'API d'apprentissage automatique A3RT de Python
Je veux utiliser jar de python
Utiliser l'API Google Cloud Vision de Python
Utiliser Django à partir d'un script Python local
Utilisation des fonctions C ++ de python avec pybind11
sql à sql
MeCab de Python
Firebase: utilisez Cloud Firestore et Cloud Storage depuis Python
Étude de Python Hour7: Comment utiliser les classes
[Bash] Obtenez la puissance de python de bash en utilisant la documentation ici
Envelopper C avec Cython pour une utilisation à partir de Python
Utilisez Python dans votre environnement depuis Win Automation
Je veux utiliser le solveur ceres de python
Utilisons différentes versions de SQLite3 de Python3!
Envelopper C ++ avec Cython pour une utilisation à partir de Python
Utilisez le module Python nghttp2 de Homebrew de Python de pyenv
Utilisez Tor pour vous connecter depuis urllib2 [Python] [Mac]
Python: décompressez depuis l'entrée standard en utilisant zipfile
Utiliser le package d'estimation du ratio de densité R densratio de Python
Utilisez config.ini avec Python
Exploitez Filemaker depuis Python
[Python] Utiliser JSON avec Python
Utiliser des dates en Python
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Python depuis ou import
Utiliser Valgrind avec Python
Utiliser mecab avec Python 3
Utiliser le client LiquidTap Python ③
Exécutez Python à partir d'Excel
Installer Python à partir de la source
Utiliser DynamoDB avec Python
Exécuter des commandes depuis Python
Je voulais utiliser la bibliothèque Python de MATLAB
Faites fonctionner le neutron de Python!
Utilisez Python 3.8 avec Anaconda
Utilisation méthodique du format [Python]
Utiliser python avec docker
Commençons Python à partir d'Excel. Je n'utilise pas VBA.
Faire fonctionner LXC depuis Python
Utiliser le client LiquidTap Python ②
Manipuler riak depuis python
Forcer Python depuis Fortran