Strutture dati: Vocab, Lexeme e StringStore

NLP avanzato con spaCy

Ines Montani

spaCy core developer

Vocab condiviso e string store (1)

  • Vocab: memorizza dati condivisi tra più documenti
  • Per risparmiare memoria, spaCy codifica tutte le stringhe in hash
  • Le stringhe sono salvate una sola volta nello StringStore tramite nlp.vocab.strings
  • String store: tabella di lookup in entrambe le direzioni
coffee_hash = nlp.vocab.strings['coffee']
coffee_string = nlp.vocab.strings[coffee_hash]
  • Gli hash non sono reversibili – per questo serve il vocab condiviso
# Genera un errore se non abbiamo visto prima la stringa
string = nlp.vocab.strings[3197928453018144401]
NLP avanzato con spaCy

Vocab condiviso e string store (2)

  • Cerca stringa e hash 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
  • Anche doc espone vocab e strings
doc = nlp("I love coffee")
print('hash value:', doc.vocab.strings['coffee'])
hash value: 3197928453018144401
NLP avanzato con spaCy

Lexeme: voci nel vocabolario

  • Un oggetto Lexeme è una voce del vocabolario
doc = nlp("I love coffee")
lexeme = nlp.vocab['coffee']

# stampa gli attributi lessicali print(lexeme.text, lexeme.orth, lexeme.is_alpha)
coffee 3197928453018144401 True
  • Contiene info indipendenti dal contesto su una parola
    • Testo: lexeme.text e lexeme.orth (hash)
    • Attributi lessicali come lexeme.is_alpha
    • Non include POS, dipendenze o entità dipendenti dal contesto
NLP avanzato con spaCy

Vocab, hash e lexeme

Illustrazione delle parole "I", "love" e "coffee" tra Doc, Vocab e StringStore

NLP avanzato con spaCy

Passons à la pratique !

NLP avanzato con spaCy

Preparing Video For Download...