In [20]:
import spacy
nlp = spacy.load('pl_core_news_sm')
In [21]:
text = "Krzysztof Kowalski żył w latach 1954-2015."
doc = nlp(text)
sprawdź ilość tokenów i wypisz je¶
In [22]:
print(f"Liczba tokenów: {len(doc)}")
print(*doc, sep="\n")
Liczba tokenów: 9 Krzysztof Kowalski żył w latach 1954 - 2015 .
dodatkowe atrybuty¶
- token.text lub token.orth = tekst tokena
- token.whitespace_ = zmienna, która zawiera białe znaki występujące po tokenie
- token.text_withws = połączenie pola token.text + token.whitespace
- token.orth = identyfikator w słowniku
In [23]:
for token in doc:
print(f"{token.text:<15} {token.orth_:<15} {len(token.whitespace_)} {token.text_with_ws:<12} {token.orth} ")
Krzysztof Krzysztof 1 Krzysztof 4980819922259476092 Kowalski Kowalski 1 Kowalski 6064732076458680349 żył żył 1 żył 17463462916583227822 w w 1 w 260667111241363922 latach latach 1 latach 8838775445208903749 1954 1954 0 1954 3806804293181247087 - - 0 - 9153284864653046197 2015 2015 0 2015 5268047934427719614 . . 0 . 12646065887601541794
In [24]:
doc.vocab[4980819922259476092].text
Out[24]:
'Krzysztof'
text_with_ws tworzy doc
In [25]:
"".join([t.text_with_ws for t in doc]) == text
Out[25]:
True
Potok przetwarzania¶
- tagger = tagowanie
- parser = parsowanie
- ner = rozpoznawanie nazw własnych
In [26]:
print(nlp.pipe_names) # jakie moduły występują w modelu
['tagger', 'parser', 'ner']
In [27]:
doc = nlp(text, disable=["tagger", "parser", "ner"]) # wyłączenie modułów z potoku przetwarzania
print(*doc, sep="\n")
Krzysztof Kowalski żył w latach 1954 - 2015 .
Porównaj czas wykonywania z właczonymi/wyłączonymi modułami potoku¶
In [28]:
%%time
for n in range(200):
doc = nlp(text)
print(len(doc))
9 CPU times: user 4.57 s, sys: 3.69 ms, total: 4.58 s Wall time: 4.57 s
In [29]:
%%time
for n in range(200):
doc = nlp(text, disable=["tagger", "parser", "ner"])
print(len(doc))
9 CPU times: user 8.78 ms, sys: 43 µs, total: 8.83 ms Wall time: 7.99 ms
reguły użyte podczas tokenizacji¶
In [32]:
for rule, token in nlp.tokenizer.explain("22:00 12/10/2020 imie.nazwisko@gmail.com #hashtag @user01 :-) adres.pl ."):
print(f"{token:<25} {rule}")
22:00 TOKEN 12/10/2020 TOKEN imie.nazwisko@gmail.com URL_MATCH # PREFIX hashtag TOKEN @user01 TOKEN :-) SPECIAL-1 adres.pl URL_MATCH . SUFFIX
wyświetl emotikony tekstowe¶
In [31]:
print(*nlp.tokenizer.rules)
") ' '' (*_*) (-8 (-: (-; (-_-) (._.) (: (; (= (>_<) (^_^) (o: (¬_¬) (ಠ_ಠ) (╯°□°)╯︵┻━┻ )-: ): -_- -__- 0.0 0.o 0_0 0_o 8) 8-) 8-D 8D :'( :') :'-( :'-) :( :(( :((( :() :) :)) :))) :* :-( :-(( :-((( :-) :-)) :-))) :-* :-/ :-0 :-3 :-> :-D :-O :-P :-X :-] :-o :-p :-x :-| :-} :/ :0 :1 :3 :> :D :O :P :X :] :o :o) :p :x :| :} ;) ;-) ;-D ;D ;_; <.< </3 <3 <33 <333 <space> =( =) =/ =3 =D =| >.< >.> >:( >:o ><(((*> @_@ C++ O.O O.o O_O O_o V.V V_V XD XDD [-: [: \") \n \t ^_^ ^__^ ^___^ o.0 o.O o.o o_0 o_O o_o v.v v_v xD xDD ¯\(ツ)/¯ ಠ_ಠ ಠ︵ಠ —