【发布时间】:2019-10-18 19:45:38
【问题描述】:
我正在从文档中的 spaCy 的令牌创建输出。使用真值表,我需要输出所有可能的场景进行测试。输入的数量可能因输入而异。如果可能的话,我希望以这种方式灵活地进行 3+ 输入:((a 和 b) 或 c)。
每个场景都有其输入的正(真)或负(假)方面(即当设置输入时或当未设置输入时),因为必须检查所有可能的情况。 对于 2 输入场景,目标是以下结果:
输入:当“输入 1 已设置”或“输入 2 不可用”时,则“检测到故障”。
输出:
-
案例一:
- 输入 1 已设置
- 输入 2 不可用
- 检测到故障
-
案例 2:
- 输入 1 未设置
- 输入 2 不可用
- 检测到故障
-
案例 3:
- 输入 1 已设置
- 输入 2 可用
- 检测到故障
-
案例 4:
- 输入 1 未设置
- 输入 2 可用
- 未检测到故障
对于 3 个或更多输入,它将成倍增加。
我没有问题将数组或列表中的字符串值格式化/提取为我的输出的正确格式。我的主要问题是通过 n 个输入和混合类型的逻辑进行迭代。
def truth_table(n):
table = list(itertools.product([False, True], repeat=n))
print(table)
truth_table(3)
这对我不起作用,因为它只处理输入而不是结果输出。
我考虑过将输入添加为元组,分配值 1 或 0 作为其正或负“版本”的指示符,并将我的真值表定义为 2D 列表。然后遍历真值表的每个位置,并使用指定的输入语句替换 0 和 1 值创建一个新的二维数组。
or_2 = [[0,0,0],
[0,1,1],
[1,0,1],
[1,1,1]]
and_2 = [[0,0,0],
[0,1,0],
[1,0,0],
[1,1,1]]
【问题讨论】:
-
您需要为每个测试因子表征您的输出集。然后在这些集合上使用
itertools.product来生成所有组合。 -
感谢您的评论。我知道你要去哪里,但我不清楚我将如何描述我的输出集。它似乎没有包含结果,所以我不知道该怎么做。
标签: python io logic itertools spacy