Schaalbaarheid en performance

Geavanceerde NLP met spaCy

Ines Montani

spaCy core developer

Grote hoeveelheden tekst verwerken

  • Gebruik de methode nlp.pipe
  • Verwerkt teksten als een stream, levert Doc-objecten op
  • Veel sneller dan nlp per tekst aanroepen

SLECHT:

docs = [nlp(text) for text in LOTS_OF_TEXTS]

GOED:

docs = list(nlp.pipe(LOTS_OF_TEXTS))
Geavanceerde NLP met spaCy

Context meegeven (1)

  • as_tuples=True op nlp.pipe laat je (text, context)-tuples doorgeven
  • Levert (doc, context)-tuples op
  • Handig om metadata aan de doc te koppelen
data = [
    ('This is a text', {'id': 1, 'page_number': 15}),
    ('And another text', {'id': 2, 'page_number': 16}),
]

for doc, context in nlp.pipe(data, as_tuples=True): print(doc.text, context['page_number'])
This is a text 15
And another text 16
Geavanceerde NLP met spaCy

Context meegeven (2)

from spacy.tokens import Doc

Doc.set_extension('id', default=None)
Doc.set_extension('page_number', default=None)

data = [ ('This is a text', {'id': 1, 'page_number': 15}), ('And another text', {'id': 2, 'page_number': 16}), ] for doc, context in nlp.pipe(data, as_tuples=True): doc._.id = context['id'] doc._.page_number = context['page_number']
Geavanceerde NLP met spaCy

Alleen de tokenizer gebruiken

Illustratie van de spaCy-pipeline

  • draai niet de hele pipeline!
Geavanceerde NLP met spaCy

Alleen de tokenizer gebruiken (2)

  • Gebruik nlp.make_doc om tekst om te zetten naar een Doc-object

SLECHT:

doc = nlp("Hello world")

GOED:

doc = nlp.make_doc("Hello world!")
Geavanceerde NLP met spaCy

Pipelinecomponenten uitschakelen

  • Gebruik nlp.disable_pipes om tijdelijk één of meer pipes uit te zetten
# Disable tagger and parser
with nlp.disable_pipes('tagger', 'parser'):
    # Process the text and print the entities
    doc = nlp(text)
    print(doc.ents)
  • herstelt ze na het with-blok
  • draait alleen de overgebleven componenten
Geavanceerde NLP met spaCy

Laten we oefenen!

Geavanceerde NLP met spaCy

Preparing Video For Download...