如何以及在何处设置环境变量 SPACY_WARNING_IGNORE=W008

How and where to set the environment variable SPACY_WARNING_IGNORE=W008

我有下面的代码,它试图在两个列表之间找到相似的词。为此,我使用了 spacy 的 .similarity 函数。

import en_vectors_web_lg
nlp = en_vectors_web_lg.load()
listx =['HSBC', 'JP Morgan',......] #500 words lists
listy = ['Currency','Blockchain'.......] #1000 words lists
s_words = []
for token1 in listy:
    list_to_sort = [] 
    for token2 in listx:    
        list_to_sort.append((token1, token2,nlp(str(token1)).similarity(nlp(str(token2)))))
        sorted_list = sorted(list_to_sort, key = itemgetter(2), reverse=True)[0][:2]
        s_words.append(sorted_list)

在 运行 上面的代码中,我不断收到警告:UserWarning: [W008] Evaluating Doc.similarity based on empty vectors

我遇到了一些解决方案,比如设置环境变量 "SPACY_WARNING_IGNORE=W008" 来抑制错误 "UserWarning: [W008] Evaluating Doc.similarity based on empty vectors"

我的问题是在哪里以及如何设置这个环境变量?

我正在使用 windows 10、Spyder IDE、Python 3.7 和 Spacy 2.2.5。

您需要在代码中添加以下行以设置该环境变量:

import os
os.environ['SPACY_WARNING_IGNORE'] = 'W008'

从 spacy 2.3 开始,您应该使用 python 中的标准 warnings 模块来过滤掉警告:

import warnings
warnings.filterwarnings("ignore", message=r"\[W008\]", category=UserWarning)

migration guide 中所述。

我在使用 pytest 时遇到了使用 Spacy 2.1 过滤警告的问题。我无法通过设置环境变量让它工作,但以下方法有效:

import spacy
spacy.errors.SPACY_WARNING_IGNORE.append('W008')