2017-05-22 4 views
0

ich mit NLP ein Beispiel haben in spacigen Code für die Arbeit:Wie arbeite ich mit SpaCy Parser?

from numpy import dot 
from numpy.linalg import norm 

# you can access known words from the parser's vocabulary 
nasa = parser.vocab['NASA'] 

# cosine similarity 
cosine = lambda v1, v2: dot(v1, v2)/(norm(v1) * norm(v2)) 

# gather all known words, take only the lowercased versions 
allWords = list({w for w in parser.vocab if w.has_repvec and w.orth_.islower() and w.lower_ != "nasa"}) 

# sort by similarity to NASA 
allWords.sort(key=lambda w: cosine(w.repvec, nasa.repvec)) 
allWords.reverse() 
print("Top 10 most similar words to NASA:") 
for word in allWords[:10]: 
    print(word.orth_) 

# Let's see if it can figure out this analogy 
# Man is to King as Woman is to ?? 
king = parser.vocab['king'] 
man = parser.vocab['man'] 
woman = parser.vocab['woman'] 

result = king.repvec - man.repvec + woman.repvec 

# gather all known words, take only the lowercased versions 
allWords = list({w for w in parser.vocab if w.has_repvec and w.orth_.islower() and w.lower_ != "king" and w.lower_ != "man" and w.lower_ != "woman"}) 
# sort by similarity to the result 
allWords.sort(key=lambda w: cosine(w.repvec, result)) 
allWords.reverse() 
print("\n------------------\nTop 3 closest results for king - man + woman:") 
for word in allWords[:3]: 
    print(word.orth_) 

Bevor ich alle Wörterbücher für spacigen installiert:

$ sudo python -m spacy.en.download all 
$ python -m spacy.en.download parser 
$ python -m spacy.en.download glove 

sondern als Ergebnisse, habe ich einen Fehler:

Traceback (most recent call last): 
    File "/home/vv/PythProj/sp_ex_1.py", line 5, in <module> 
    nasa = parser.vocab['NASA'] 
NameError: name 'parser' is not defined 

Bitte, wo ist mein Fehler? Danke

Antwort

1

Ich glaube, Sie diese fehlen:

# Set up spaCy 
from spacy.en import English 
parser = English() 
+0

Es funktioniert jetzt! –