[英]Is it possible to check if a subset of a dictionary comes from a main dictionary in python?
我正在使用 spaCy 处理 NLP 过程,并尝试获取一个字典的结果(分析结果)以与完整字典(由我预先确定)进行交叉检查。 我正在尝试取一个句子,通过 spaCy 运行它,看看它是否包含被视为正确英语句子的所有要求。
我尝试了 2 种不同的方法,但均无效。
设置 my_phrase
my_phrase = nlp(u"It is a beautiful day today.")
方法一
检查句子的 POS
for word in my_phrase:
print(f'{word.text:{12}} {word.pos_:{10}} {word.tag_:{8}} {spacy.explain(word.tag_)}')
创建字典
my_phrase_ = defaultdict()
for _, value in enumerate(my_phrase):
key = "part_of_speech: " + value.pos_
my_phrase_[key] = value
子集我要检查的 POS
english_sent = {
"DET": "Determiner",
"NOUN": "Noun",
"PRON": "Pronoun",
"PROPN": "Proper Noun",
"VERB": "Verb",
}
打印两个字典
print(english_sent)
print(my_phrase_)
检查是否至少有一个来自 english_sent 的每个必需的 POS 在 my_phrase_ 字典中
def checkKey(english_sent, my_phrase_):
if my_phrase in english_sent:
print("Present, ", end =" ")
print("value =", english_sent[my_phrase_])
else:
print("Not present")
checkKey(english_sent, my_phrase_)
它总是返回“不存在”; 我什至尝试翻动字典,所以完整的单词是关键,缩写是值。
方法二
我也尝试了一个简单的 if 语句,但也没有用
if "NOUN" and "PRON" and "VERB" and "DET" in my_phrase_:
print("Valid statement")
这不会返回任何东西。
my_phrase_
的键很奇怪 - 它们就像part of speech: NOUN
而它们应该像NOUN
。 你应该改变你的代码是这样的:
my_phrase_ = defaultdict()
for _, value in enumerate(my_phrase):
my_phrase_[value.pos_] = value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.