技术问询:如何从spaCy Vocab中提取所有(单词,向量)对?
从spaCy Vocab提取所有(单词,向量)对的正确方法
你之前直接迭代nlp.vocab的方式会返回Vocab中的所有词汇条目,其中包含大量标点、特殊符号、无预训练向量的内部标记,因此会得到那些奇怪的内容,且仅展示了少量条目。要提取有效的(单词,向量)对,需按以下步骤操作:
1. 加载带预训练词向量的模型
spaCy的小体量模型(如en_core_web_sm)不含预训练词向量,只有中/大体量模型(如en_core_web_lg、en_core_web_trf)自带完整的预训练词向量库。先正确加载模型:
import spacy # 示例加载英文大模型,其他语言对应带预训练向量的模型即可 nlp = spacy.load("en_core_web_lg")
2. 筛选并提取目标词汇对
通过has_vector属性筛选出带有预训练向量的词汇条目,还可通过is_alpha过滤掉非字母类符号(按需选择):
- 提取所有带向量的条目(含缩写、特殊格式词汇等):
word_vector_pairs = [(lex.text, lex.vector) for lex in nlp.vocab if lex.has_vector]
- 仅提取纯字母类单词的向量对:
word_vector_pairs = [(lex.text, lex.vector) for lex in nlp.vocab if lex.has_vector and lex.is_alpha]
验证结果数量
可通过以下代码查看符合条件的词汇总数:
print(len(word_vector_pairs)) # 以en_core_web_lg为例,输出约68000左右
内容的提问来源于stack exchange,提问作者sten
相关产品推荐
相关产品推荐

