首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空间中的词向量示例问题

空间中的词向量示例问题
EN

Stack Overflow用户
提问于 2016-11-07 13:23:14
回答 1查看 2.3K关注 0票数 3
代码语言:javascript
复制
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_)

我正在尝试运行上面的示例,但是在下面得到了错误:

代码语言:javascript
复制
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

示例摘自:用spaCy介绍NLP

是什么导致了这个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-04 01:39:31

您使用的是什么版本的Python?这可能是Unicode错误的结果;我用Python2.7替换了

代码语言:javascript
复制
nasa = parser.vocab['NASA']

使用

代码语言:javascript
复制
nasa = parser.vocab[u'NASA']

然后,您将得到以下错误:

代码语言:javascript
复制
AttributeError: 'spacy.lexeme.Lexeme' object has no attribute 'has_repvec'

有一个关于SpaCy回购的类似问题,但是可以通过用has_vector替换has_repvec和用vector替换repvec来解决这两个问题。我还将对这个GitHub线程进行评论。

我使用的完整的、更新的代码:

代码语言:javascript
复制
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_)

希望这能有所帮助!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40466285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档