首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >nlp.vocab和nlp.vocab.strings有什么区别?

nlp.vocab和nlp.vocab.strings有什么区别?
EN

Stack Overflow用户
提问于 2021-08-21 11:33:31
回答 2查看 602关注 0票数 1

我正在学习NLP,我想看看我用spacy下载的词汇量。

代码语言:javascript
运行
AI代码解释
复制
import spacy

nlp = spacy.load('en_core_web_trf')
nlp2 = spacy.load('en_core_web_sm')

在导入Spacy并同时加载较大和较小的包后,我检查了以下内容:

代码语言:javascript
运行
AI代码解释
复制
len(nlp.vocab)

给770,

代码语言:javascript
运行
AI代码解释
复制
len(nlp2.vocab)

给761,

代码语言:javascript
运行
AI代码解释
复制
len(nlp.vocab.strings)

给了83934

代码语言:javascript
运行
AI代码解释
复制
len(nlp2.vocab.strings)

给了83914。

两者有何不同,为何不同?如何检查每个包裹的总词汇量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-22 23:52:00

在spaCy v2.3或v3中没有真正的“语音”计数。您应该主要将nlp.vocabnlp.vocab.strings看作缓存,其中总计数不是有意义的值。nlp.vocab Vocab不是静态的,而是在使用管道处理文本时增长的。

词汇表是Lexeme对象的缓存,nlp.vocab.strings StringStore是字符串哈希的缓存。该词汇表包含以前在管道处理过的某些文本中看到的标记的词,字符串存储包含以前看到的字符串,这些字符串是作为标记或注释(POS标签、引引词、依赖项标签)出现的。

字符串存储不是100%的缓存,可能包含在培训期间添加的字符串,这些字符串以前在当前加载的管道中从未使用过,但是字符串存储的大小没有告诉您任何关于管道性能的信息。

票数 3
EN

Stack Overflow用户

发布于 2021-08-22 08:36:16

len(nlp.vocab)是缓存词的数量,因此,当您对某些单词使用模型时,缓存的词数可能会有所不同。

len(nlp.vocab.strings)将字符串映射到哈希值,反之亦然。它可以给出不同字符串的数目。例如,对于模型en_core_web_md,这将为您提供701800

如果您想访问这些单词,请尝试:

代码语言:javascript
运行
AI代码解释
复制
words=[]
for x in nlp.vocab.strings:
    words.append(x)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68876169

复制
相关文章

相似问题

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