en_vectors_web_lg和glow vectors(spaCy)之间的差异

2024-05-29 02:19:20 发布

您现在位置:Python中文网/ 问答频道 /正文

https://spacy.io/models/en#en_vectors_web_lg 说这个模型有1.1米的钥匙,但是 https://nlp.stanford.edu/projects/glove/ 说明手套载体包含2.2米的声音

我能知道缺了什么人声吗?在

非常感谢。在


Tags: httpsio模型webnlpspacymodelsen
1条回答
网友
1楼 · 发布于 2024-05-29 02:19:20

通过查看spaCy.vocab属性/对象,并将其与GloVe文件中的单词进行比较,您可以自己检查spaCy和GloVe模型的词汇表。首先将数据加载到两个列表中:

import spacy
nlp = spacy.load('en_vectors_web_lg')
spacy_words = [word for word in nlp.vocab.strings]
glove_filename = 'glove.840B.300d.txt'
glove_words = [line.split()[0].decode('utf-8') for line in open(glove_filename)]

然后检查集合差,得到“缺少”的单词:

^{pr2}$

缺少220万-110万~110万字:

>>> len(set(glove_words) - set(spacy_words))
1528158

注意nlp.vocab.strings和{}中的内容有区别。你可以用

vector_words = []
for key, vector in nlp.vocab.vectors.items():
    try:
        vector_words.append(nlp.vocab.strings[key])
    except KeyError:
        pass

(关于try/except:我不清楚为什么vocab.strings中缺少一些密钥)

有了这个列表,你可以得到:

>>> list(set(glove_words) - set(vector_words))[:10]
[u'Inculcation', u'Dholes', u'6-night', u'AscensionMidkemia', u'.90.99',  
 u'USAMol', u'USAMon', u'Connerty', u'RealLife', u'NaughtyAllie']

更新:词汇之间的差异问题已经在这里提出https://github.com/explosion/spaCy/issues/1985。在

相关问题 更多 >

    热门问题