2016-11-07 5 views
3
from spacy.en import English 
from numpy import dot 
from numpy.linalg import norm 

parser = English() 

# 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_) 

の例の問題をベクトル:言葉は、私は上記の例を実行しようとしていますが、以下のエラーを取得していますスペイシー

Traceback (most recent call last): 
File "C:\Users\bulusu.kiran\Documents\WORK\nlp\wordVectors1.py", line 8, in <module> 
nasa = parser.vocab['NASA'] 
File "spacy/vocab.pyx", line 330, in spacy.vocab.Vocab.__getitem__ (spacy/vocab.cpp:7708) 
orth = id_or_string TypeError: an integer is required 

から取られた例:このエラーの原因となっている何Intro to NLP with spaCy

+0

あなたが投稿した素晴らしい例は、ドキュメントにそのようなことがあっただけです。 – cardamom

答えて

6

あなたはどのバージョンのPythonを使用していますか?これは、Unicodeエラーの結果である可能性があります。私はあなたがこのエラーを取得します

nasa = parser.vocab[u'NASA'] 

nasa = parser.vocab['NASA'] 

を置き換えることによって、それは、Python 2.7で動作するようになった:

AttributeError: 'spacy.lexeme.Lexeme' object has no attribute 'has_repvec' 

ありsimilar issue on the SpaCy repoだが、これらは、両方を固定することができます。 has_repvechas_vectorと置き換え、repvecvectorと置き換えてください。また、そのGitHubスレッドについてもコメントします。

私が使用した完全な、更新されたコード:

import spacy 

from numpy import dot 
from numpy.linalg import norm 

parser = spacy.load('en') 
nasa = parser.vocab[u'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_vector and w.orth_.islower() and w.lower_ != "nasa"}) 

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

は、この情報がお役に立てば幸い!

+1

ありがとうエリック、それは魅力的なように働いた。 – phani

関連する問題