Spikex es una colección de tuberías listas para ser conectadas en una tubería SPACY. Su objetivo es ayudar a construir herramientas de extracción de conocimiento con un esfuerzo casi cero.
Wikigraph nunca ha sido tan rápido:
Doc basada en un nombre de atributo personalizado y patrones de frase. Ejemplos son sustiofrasex y verbfrasex , que extraen frases de sustantivos y frases verbales, respectivamenteAlgunos requisitos se heredan de Spacy:
Algunas dependencias usan Cython y debe instalarse antes de SPIKEX:
pip install cythonRecuerde que siempre se recomienda un entorno virtual para evitar modificar el estado del sistema.
En este punto, la instalación de Spikex a través de PIP es un comando de una línea:
pip install spikexLas tuberías de Spikex funcionan con Spacy, por lo tanto, un modelo es necesario instalar. Siga las instrucciones oficiales aquí. ¡El nuevo Spacy 3.0 es compatible!
Se construye un WikiGraph a partir de algunos componentes clave de Wikipedia: páginas , categorías y relaciones entre ellos.
Crear un WikiGraph puede llevar tiempo, dependiendo de cuán grande sea su volcado Wikipedia. Por esta razón, proporcionamos wikigraphs listos para ser utilizados:
| Fecha | Wikigraph | Lang | Tamaño (comprimido) | Tamaño (memoria) | |
|---|---|---|---|---|---|
| 2021-05-20 | enwiki_core | Interno | 1.3GB | 8GB | |
| 2021-05-20 | SimpleWiki_core | Interno | 20 MB | 130 MB | |
| 2021-05-20 | itwiki_core | ÉL | 208MB | 1.2GB | |
| Más viene ... |
Spikex proporciona un comando para descargar e instalar un WikiGraph (Linux o macOS, Windows aún no es compatible):
spikex download-wikigraph simplewiki_core Se puede crear un WikiGraph desde la línea de comandos, especificando qué volcado de Wikipedia tomar y dónde guardarlo:
spikex create-wikigraph
< YOUR-OUTPUT-PATH >
--wiki < WIKI-NAME, default: en >
--version < DUMP-VERSION, default: latest >
--dumps-path < DUMPS-BACKUP-PATH > Entonces debe ser embalado e instalado:
spikex package-wikigraph
< WIKIGRAPH-RAW-PATH >
< YOUR-OUTPUT-PATH >Siga las instrucciones al final del proceso de embalaje e instale el paquete de distribución en su entorno virtual. Ahora estás listo para usar tu wikigraph como desees:
from spikex . wikigraph import load as wg_load
wg = wg_load ( "enwiki_core" )
page = "Natural_language_processing"
categories = wg . get_categories ( page , distance = 1 )
for category in categories :
print ( category )
> >> Category : Speech_recognition
> >> Category : Artificial_intelligence
> >> Category : Natural_language_processing
> >> Category : Computational_linguisticsEl Matcher es idéntico al de la Spacy, pero más rápido cuando se trata de manejar muchos patrones a la vez (orden de miles), así que siga las instrucciones de uso oficial aquí.
Un ejemplo trivial:
from spikex . matcher import Matcher
from spacy import load as spacy_load
nlp = spacy_load ( "en_core_web_sm" )
matcher = Matcher ( nlp . vocab )
matcher . add ( "TEST" , [[{ "LOWER" : "nlp" }]])
doc = nlp ( "I love NLP" )
for _ , s , e in matcher ( doc ):
print ( doc [ s : e ])
> >> NLP La tubería WikiPageX utiliza un WikiGraph para encontrar trozos en un texto que coincida con los títulos de la página de Wikipedia.
from spacy import load as spacy_load
from spikex . wikigraph import load as wg_load
from spikex . pipes import WikiPageX
nlp = spacy_load ( "en_core_web_sm" )
doc = nlp ( "An apple a day keeps the doctor away" )
wg = wg_load ( "simplewiki_core" )
wpx = WikiPageX ( wg )
doc = wpx ( doc )
for span in doc . _ . wiki_spans :
print ( span . _ . wiki_pages )
> >> [ 'An' ]
> >> [ 'Apple' , 'Apple_(disambiguation)' , 'Apple_(company)' , 'Apple_(tree)' ]
> >> [ 'A' , 'A_(musical_note)' , 'A_(New_York_City_Subway_service)' , 'A_(disambiguation)' , 'A_(Cyrillic)' )]
> >> [ 'Day' ]
> >> [ 'The_Doctor' , 'The_Doctor_(Doctor_Who)' , 'The_Doctor_(Star_Trek)' , 'The_Doctor_(disambiguation)' ]
> >> [ 'The' ]
> >> [ 'Doctor_(Doctor_Who)' , 'Doctor_(Star_Trek)' , 'Doctor' , 'Doctor_(title)' , 'Doctor_(disambiguation)' ] La tubería ClusterX toma trozos de sustantivos en un texto y los agrupa usando un algoritmo de mapeador de bola radial.
from spacy import load as spacy_load
from spikex . pipes import ClusterX
nlp = spacy_load ( "en_core_web_sm" )
doc = nlp ( "Grab this juicy orange and watch a dog chasing a cat." )
clusterx = ClusterX ( min_score = 0.65 )
doc = clusterx ( doc )
for cluster in doc . _ . cluster_chunks :
print ( cluster )
> >> [ this juicy orange ]
> >> [ a cat , a dog ]La tubería ABBRX encuentra abreviaturas y acrónimos en el texto, que une formas cortas y largas:
from spacy import load as spacy_load
from spikex . pipes import AbbrX
nlp = spacy_load ( "en_core_web_sm" )
doc = nlp ( "a little snippet with an abbreviation (abbr)" )
abbrx = AbbrX ( nlp . vocab )
doc = abbrx ( doc )
for abbr in doc . _ . abbrs :
print ( abbr , "->" , abbr . _ . long_form )
> >> abbr - > abbreviation La tubería LabelX coincide y etiqueta los patrones en texto, resolviendo superposiciones, abreviaturas y acrónimos.
from spacy import load as spacy_load
from spikex . pipes import LabelX
nlp = spacy_load ( "en_core_web_sm" )
doc = nlp ( "looking for a computer system engineer" )
patterns = [
[{ "LOWER" : "computer" }, { "LOWER" : "system" }],
[{ "LOWER" : "system" }, { "LOWER" : "engineer" }],
]
labelx = LabelX ( nlp . vocab , [( "TEST" , patterns )], validate = True , only_longest = True )
doc = labelx ( doc )
for labeling in doc . _ . labelings :
print ( labeling , f"[ { labeling . label_ } ]" )
> >> computer system engineer [ TEST ] La tubería PhraseX crea una extensión subrayada de Doc personalizada que cumple con los coincidencias de los patrones de frases.
from spacy import load as spacy_load
from spikex . pipes import PhraseX
nlp = spacy_load ( "en_core_web_sm" )
doc = nlp ( "I have Melrose and McIntosh apples, or Williams pears" )
patterns = [
[{ "LOWER" : "mcintosh" }],
[{ "LOWER" : "melrose" }],
]
phrasex = PhraseX ( nlp . vocab , "apples" , patterns )
doc = phrasex ( doc )
for apple in doc . _ . apples :
print ( apple )
> >> Melrose
> >> McIntoshLa tubería SENTX divide las oraciones en un texto. Modifica el atributo IS_SENT_START de los tokens, por lo que es obligatorio agregarlo antes de la tubería del analizador en la tubería de Spacy:
from spacy import load as spacy_load
from spikex . pipes import SentX
from spikex . defaults import spacy_version
if spacy_version >= 3 :
from spacy . language import Language
@ Language . factory ( "sentx" )
def create_sentx ( nlp , name ):
return SentX ()
nlp = spacy_load ( "en_core_web_sm" )
sentx_pipe = SentX () if spacy_version < 3 else "sentx"
nlp . add_pipe ( sentx_pipe , before = "parser" )
doc = nlp ( "A little sentence. Followed by another one." )
for sent in doc . sents :
print ( sent )
> >> A little sentence .
> >> Followed by another one .¡Siéntete libre de contribuir y divertirte!