繁体   English   中英

是否可以检查字典的子集是否来自 python 中的主字典?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM