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'
>>>