Spikex ist eine Sammlung von Rohren, die bereit sind, in eine Spacton -Pipeline eingesteckt zu werden. Ziel ist es, mit fast Null-Anstrengungen zu helfen, Wissensextraktionstools aufzubauen.
Wikigraph war noch nie so blitzschnell:
Doc basierend auf einem benutzerdefinierten Attributnamen und Phrasenmustern. Beispiele sind Nounphrasex und Verbphrasex , die Substantivphrasen bzw. Verbphrasen extrahierenEinige Anforderungen werden von Spacy geerbt:
Einige Abhängigkeiten verwenden Cython und muss vor Spikex installiert werden:
pip install cythonDenken Sie daran, dass eine virtuelle Umgebung immer empfohlen wird, um die Änderung des Systemzustands zu vermeiden.
Zu diesem Zeitpunkt ist die Installation von Spikex über PIP ein Eins -Zeilen -Befehl:
pip install spikexSpikex -Rohre funktionieren mit Spacy, daher musste ein Modell installiert werden. Befolgen Sie hier offizielle Anweisungen. Der brandneue Spacy 3.0 wird unterstützt!
Ein WikiGraph wird aus einigen wichtigen Komponenten von Wikipedia hergestellt: Seiten , Kategorien und Beziehungen zwischen ihnen.
Das Erstellen eines WikiGraph kann Zeit in Anspruch nehmen, je nachdem, wie groß das Wikipedia -Dump ist. Aus diesem Grund stellen wir Wikigraphen zur Verfügung, die zur Verwendung bereit sind:
| Datum | Wikigraph | Lang | Größe (komprimiert) | Größe (Speicher) | |
|---|---|---|---|---|---|
| 2021-05-20 | ENWIKI_CORE | En | 1,3 GB | 8 GB | |
| 2021-05-20 | SimpleWiki_Core | En | 20mb | 130 MB | |
| 2021-05-20 | itwiki_core | ES | 208mb | 1,2 GB | |
| Weitere Kommen ... |
Spikex bietet einen Befehl zum Herunterladen und Installieren eines WikiGraph (Linux oder MacOS, Windows, das noch nicht unterstützt wird):
spikex download-wikigraph simplewiki_core Ein WikiGraph kann aus der Befehlszeile erstellt werden, in der angegeben wird, welche Wikipedia -Dump zu sich nehmen und wo sie sie retten sollen:
spikex create-wikigraph
< YOUR-OUTPUT-PATH >
--wiki < WIKI-NAME, default: en >
--version < DUMP-VERSION, default: latest >
--dumps-path < DUMPS-BACKUP-PATH > Dann muss es gepackt und installiert werden:
spikex package-wikigraph
< WIKIGRAPH-RAW-PATH >
< YOUR-OUTPUT-PATH >Befolgen Sie die Anweisungen am Ende des Verpackungsprozesses und installieren Sie das Verteilungspaket in Ihrer virtuellen Umgebung. Jetzt sind Sie bereit, Ihren Wikigraph zu verwenden, wie Sie möchten:
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_linguisticsDer Match ist identisch mit der Spacy's One, aber schneller, wenn es darum geht, viele Muster gleichzeitig (Reihenfolge von Tausenden) zu behandeln. Befolgen Sie also die offiziellen Nutzungsanweisungen hier.
Ein triviales Beispiel:
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 Die WikiPageX -Pipe verwendet einen WikiGraph , um Stücke in einem Text zu finden, der mit Wikipedia -Seitentiteln übereinstimmt.
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)' ] Das ClusterX -Rohr nimmt Substantivbrocken in einen Text und klingt sie mit einem Radial Ball Mapper -Algorithmus.
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 ]Die ABBRX -Rohre findet Abkürzungen und Akronyme im Text und verbinden kurze und lange Formen miteinander:
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 Das LabelX -Rohr passt und beschriftet Muster im Text und löst Überlagerungen, Abkürzungen und Akronyme.
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 ] Die PhraseX -Pipe erstellt die Unterstricheerweiterung eines benutzerdefinierten Doc , die mit Übereinstimmungen aus Phrasenmustern erfüllt.
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
> >> McIntoshDie Sentx Pipe teilt die Sätze in einem Text auf. Es modifiziert Tokens ' IS_SENT_START -Attribut, sodass es obligatorisch ist, es vor Parserrohr in der Spacy -Pipeline hinzuzufügen:
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 .Fühlen Sie sich frei zu beitragen und Spaß zu haben!