Laboratorul 6
(Deadline: -)
Daca nu sunteti logati exercitiile nu se mai afiseaza.
spaCy
Bibliografie:
Pentru instalare: pip install spacy
Pentru upgrade: pip install -U spacy
Pentru a folosi datele pentru limba engleza: python -m spacy download enIn toate programele in care procesati texte in limba engleza va trebui sa incarcati datele pentru limba engleza:
import spacy
sp_en = spacy.load('en')
Mai jos vom urmari operatiile pe care le-am facut si cu nltk, doar ca de data asta vom folosi spaCy.
Impartirea pe fraze:
>>> text_procesat=sp_en("I saw a cat. The cat was white. It was running on the street.")
>>> list(text_procesat.sents)
[I saw a cat., The cat was white., It was running on the street.]
Tokenizare:
>>> for token in text_procesat:
print(str(token.idx)+" "+token.text)
0 I
2 saw
6 a
8 cat
11 .
13 The
17 cat
21 was
25 white
30 .
32 It
35 was
39 running
47 on
50 the
54 street
60 .
>>>
Analiza morfologica
>>> for token in text_procesat:
print(token.pos_,end=" ")
PRON VERB DET NOUN PUNCT DET NOUN VERB ADJ PUNCT PRON VERB VERB ADP DET NOUN PUNCT
>>>
Analiza sintactica bazata pe dependente:
>>> text_procesat=sp_en("The mouse saw a beautiful white cat running on the street.")
>>> for token in text_procesat:
print(token.dep_, "(", token.head.text, ", ", token.text,")")
det ( mouse , The )
nsubj ( saw , mouse )
ROOT ( saw , saw )
det ( cat , a )
amod ( cat , beautiful )
amod ( cat , white )
dobj ( saw , cat )
acl ( cat , running )
prep ( running , on )
det ( street , the )
pobj ( on , street )
punct ( saw , . )
>>>
Folosirea tagurilor spacy (expandati sectiunea pentru limba engleza) pentru a obtine informatii despre tokeni. De exemplu:
- pentru substantive, numarul (singular, plural)
- pentru verbe - persoana, timpul
print(token.tag_,end=" ")
PRP VBD DT NN . DT NN VBD JJ . PRP VBD VBG IN DT NN .
>>>
>>> spacy.explain("PRP")
'pronoun, personal'
>>> spacy.explain("VBD")
'verb, past tense'
>>> spacy.explain("NN")
'noun, singular or mass'
>>>
Pentru a obtine forma unui substantiv la singular/plural, sau conjugarea unui verb pentru o anumita persoana si un anumit timp, folosim modulul pattern
. Se cloneaza/downloadeaza din folderul git
Pentru a instala pattern: pip install pattern
Daca aveti probleme la instalare, puteti lua modulul de pe git. Dupa ce ati instalat git, dati comanda: git clone -b development https://github.com/clips/pattern Si apoi instalati pattern.
Daca va da o eraore legata de faptul ca nu poate deschide mysql.h, downloadati whl-ul pentru Mysqlclient si reincercati instalarea modulului pattern
.
De exemplu, daca dorim sa obtinem forma la plural a substantivului "cat", scriem:
>>> import pattern.en
>>> pattern.en.pluralize("cat")
'cats'
iar pentru singularul lui "cats":
>>> pattern.en.singularize("cats")
'cat'
Atentie, pattern nu verifica daca exista cuvantul dat ca rgument ci doar ii aplica reguli de obtinere a pluralului, implementand si niste exceptii. De exemplu daca vrem pluralul pentru "cats" sau pentru sirul "abcdefghij":
>>> pattern.en.pluralize("cats")
'catss'
>>> pattern.en.pluralize("abcdefghij")
'abcdefghijs'
Putem folosi pattern si pentru a conjuga verbe:
>>> pattern.en.conjugate(verb="be",tense=pattern.en.PRESENT,number=pattern.en.SG)
'is'
>>> pattern.en.conjugate(verb="be",tense=pattern.en.PRESENT,number=pattern.en.PLURAL)
'are'
>>> pattern.en.conjugate(verb="run",tense=pattern.en.PAST,number=pattern.en.PLURAL)
'ran'
>>> pattern.en.conjugate(verb="run",tense=pattern.en.PARTICIPLE,number=pattern.en.PLURAL)
'running'
>>>