Admite la última biblioteca Corenlp 4.5.3 (a partir de 2023-03-10).
La extracción de información abierta (abierta, es decir) se refiere a la extracción de relaciones estructuradas triples del texto plano, de modo que el esquema para estas relaciones no necesita especificarse de antemano. Por ejemplo, Barack Obama nació en Hawai, crearía un triple (Barack Obama; was born in; Hawaii) , correspondiente a la relación de dominio abierta "nació". CORENLP es una implementación de Java de un sistema de IE abierto como se describe en el documento:
Se puede encontrar más información aquí. La Biblioteca Openie solo está disponible en inglés.
Necesita instalados Python3 y Java (JRE). Java es utilizado por la Biblioteca Corenlp.
Asegúrese de que Java esté instalado primero.
java -versionLuego instale la lib.
pip install stanford_openie from openie import StanfordOpenIE
# https://stanfordnlp.github.io/CoreNLP/openie.html#api
# Default value of openie.affinity_probability_cap was 1/3.
properties = {
'openie.affinity_probability_cap' : 2 / 3 ,
}
with StanfordOpenIE ( properties = properties ) as client :
text = 'Barack Obama was born in Hawaii. Richard Manning wrote this sentence.'
print ( 'Text: %s.' % text )
for triple in client . annotate ( text ):
print ( '|-' , triple )
graph_image = 'graph.png'
client . generate_graphviz_graph ( text , graph_image )
print ( 'Graph generated: %s.' % graph_image )
with open ( 'corpus/pg6130.txt' , encoding = 'utf8' ) as r :
corpus = r . read (). replace ( ' n ' , ' ' ). replace ( ' r ' , '' )
triples_corpus = client . annotate ( corpus [ 0 : 5000 ])
print ( 'Corpus: %s [...].' % corpus [ 0 : 80 ])
print ( 'Found %s triples in the corpus.' % len ( triples_corpus ))
for triple in triples_corpus [: 3 ]:
print ( '|-' , triple )
print ( '[...]' )Salida esperada
|- {'subject': 'Barack Obama', 'relation': 'was', 'object': 'born'}
|- {'subject': 'Barack Obama', 'relation': 'was born in', 'object': 'Hawaii'}
|- {'subject': 'Richard Manning', 'relation': 'wrote', 'object': 'sentence'}
Graph generated: graph.png.
Corpus: According to this document, the city of Cumae in Ćolia, was, at an early period [...].
Found 1664 triples in the corpus.
|- {'subject': 'city', 'relation': 'is in', 'object': 'Ćolia'}
|- {'subject': 'Menapolus', 'relation': 'son of', 'object': 'Ithagenes'}
|- {'subject': 'Menapolus', 'relation': 'was Among', 'object': 'immigrants'}
Generará un Dot GraphViz en graph.png :

Nota : Asegúrese de que GraphViz esté instalado de antemano. Intente ejecutar el comando dot para ver si este es el caso. Si no, ejecute sudo apt-get install graphviz si se está ejecutando en Ubuntu. En MacOS, es brew install graphviz .
@misc{StanfordOpenIEWrapper,
author = {Philippe Remy},
title = {Python wrapper for Stanford OpenIE},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/philipperemy/Stanford-OpenIE-Python}},
}