Datastructuren: Vocab, Lexemes en StringStore

Geavanceerde NLP met spaCy

Ines Montani

spaCy core developer

Gedeelde vocab en StringStore (1)

  • Vocab: slaat data op die gedeeld wordt door meerdere documenten
  • Om geheugen te sparen, codeert spaCy alle strings als hashwaarden
  • Strings worden maar één keer opgeslagen in de StringStore via nlp.vocab.strings
  • StringStore: tweerichtings-lookup-tabel
coffee_hash = nlp.vocab.strings['coffee']
coffee_string = nlp.vocab.strings[coffee_hash]
  • Hashes zijn niet omkeerbaar – daarom heb je de gedeelde vocab nodig
# Geeft een error als we de string nog niet eerder hebben gezien
string = nlp.vocab.strings[3197928453018144401]
Geavanceerde NLP met spaCy

Gedeelde vocab en StringStore (2)

  • Zoek de string en hash op in nlp.vocab.strings
doc = nlp("I love coffee")
print('hash value:', nlp.vocab.strings['coffee'])

print('string value:', nlp.vocab.strings[3197928453018144401])
hash value: 3197928453018144401

string value: coffee
  • De doc biedt ook toegang tot vocab en strings
doc = nlp("I love coffee")
print('hash value:', doc.vocab.strings['coffee'])
hash value: 3197928453018144401
Geavanceerde NLP met spaCy

Lexemes: items in de vocabulary

  • Een Lexeme-object is een item in de vocabulary
doc = nlp("I love coffee")
lexeme = nlp.vocab['coffee']

# print de lexicale attributen print(lexeme.text, lexeme.orth, lexeme.is_alpha)
coffee 3197928453018144401 True
  • Bevat context-onafhankelijke info over een woord
    • Woordtekst: lexeme.text en lexeme.orth (de hash)
    • Lexicale attributen zoals lexeme.is_alpha
    • Geen contextafhankelijke woordsoorten, afhankelijkheden of entiteitslabels
Geavanceerde NLP met spaCy

Vocab, hashes en lexemes

Illustratie van de woorden "I", "love" en "coffee" in de Doc, Vocab en StringStore

Geavanceerde NLP met spaCy

Laten we oefenen!

Geavanceerde NLP met spaCy

Preparing Video For Download...