2016-08-04 5 views
6

Ich bin neu zu wissen spacy und ich möchte seine Lemmatizer-founction verwenden, aber ich weiß nicht, wie ich es benutze, wie ich in Strings of Word, die werden gebe die Zeichenfolge zurück, die die Grundform der Wörter hat. wie 'Wörter' => Wort, 'tat' => 'tun', danke.Wie spacy Lemmatizer zu verwenden, um ein Wort in die Grundform zu bekommen

+0

http://textminingonline.com/getting-started-with-spacy – RAVI

+1

https://spacy.io/docs – RAVI

+0

danke, ich diese Bahn vor sehen haben, aber sie haben keine Details darin erklärt, ok, ich werde den Webcode ausprobieren, danke nochmal. –

Antwort

9

Code:

import os 
from spacy.en import English, LOCAL_DATA_DIR 

data_dir = os.environ.get('SPACY_DATA', LOCAL_DATA_DIR) 

nlp = English(data_dir=data_dir) 

doc3 = nlp(u"this is spacy lemmatize testing. programming books are more better than others") 

for token in doc3: 
    print token, token.lemma, token.lemma_ 

Ausgang:

this 496 this 
is 488 be 
spacy 173779 spacy 
lemmatize 1510965 lemmatize 
testing 2900 testing 
. 419 . 
programming 3408 programming 
books 1011 book 
are 488 be 
more 529 more 
better 615 better 
than 555 than 
others 871 others 

Beispiel Ref: here

+0

nlp = Englisch (data_dir = data_dir): data_dir = data_dir, was bedeutet diese Bedeutung, sie sehen gleich aus. –

+0

Variable übergeben. Die Methode English() nimmt das Argument data_dir. So übergeben Sie "data_dir = local_variable_name". Es kann auch wie sein, d_dir = os.environ.get ('SPACY_DATA', LOCAL_DATA_DIR) nlp = Englisch (data_dir = d_dir) Seine nur grundlegende Python Zeug. – RAVI

+0

Ok, ich werde diese versuchen. –

11

vorherige Antwort ist verworren und nicht bearbeitet werden kann, so ist hier eine konventionellere ein.

# make sure your downloaded the english model with "python -m spacy download en" 

import spacy 
nlp = spacy.load('en') 

doc = nlp(u"Apples and oranges are similar. Boots and hippos aren't.") 

for token in doc: 
    print(token, token.lemma, token.lemma_) 

Ausgang:

Apples 6617 apples 
and 512 and 
oranges 7024 orange 
are 536 be 
similar 1447 similar 
. 453 . 
Boots 4622 boot 
and 512 and 
hippos 98365 hippo 
are 536 be 
n't 538 not 
. 453 . 

Vom official Lighting tour

+0

Müssen Sie den Text als Unicode angeben, bevor Sie ihn an 'nlp' übergeben? Siehe [hier] (https://spacy.io/docs/usage/lightning-tour#examples-resources) –

+1

@ PhilipO'Brien vielleicht mit Python 2, aber ich benutze Python 3 hier – damio

+1

Ah OK, mit Python 2 I muss explizit seinen Unicode angeben. Vielen Dank! (Ich sollte wirklich zu 3 wechseln!) –

0

Wenn Sie nur die Lemmatizer verwenden möchten. Sie können das auf folgende Weise tun.

from spacy.lemmatizer import Lemmatizer 
from spacy.lang.en import LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES 

lemmatizer = Lemmatizer(LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES) 
lemmas = lemmatizer(u'ducks', u'NOUN') 
print(lemmas) 

Ausgabe

['duck'] 
Verwandte Themen