如何根据属性问题区分动物之间的区别

时间:2014-10-18 12:23:31

标签: python attributes artificial-intelligence

我正在创建一个程序,A.I。事实上,通过一系列问题来了解动物之间的差异,这些将决定动物心中拥有的属性。所以我想要的是一种用一系列属性问题来存储动物的方法,例如:

dog : does it have a wet nose?
      does it have whiskers?

所有这些回答“是”的问题都是狗的属性......任何想法?还要记住,有些动物具有相同的属性,例如:

dog : does it have a wet nose?
      does it have whiskers?
cat : does it purr?
      does it have whiskers?

所以我希望程序能够提出多个问题,并确定哪个动物是哪个。

2 个答案:

答案 0 :(得分:1)

我认为您可以使用decision tree来执行此任务,您可以使用它根据自己的属性对动物进行分类,也可能有助于查看 Classification And Regression Tree (CART),这将有所帮助您可以决定进行分类的最佳属性。

答案 1 :(得分:1)

您可以做的最简单的事情是使用字典,它将保持属性和具有该属性的动物列表之间的关系,例如:

attributes=[bite,scratch,purr,whiskers,...]
dic={
whiskers:[cat,dog]
purr:[cat]
scratch:[cat]
bite:[cat,dog,rat]}
dose it scratch

基于您的问题格式,例如:

   for each question:
     for each word in question :
       if word in attributes:
         attributesFound.append(word)
   animal=set(dic[attributesFound[0]])
   for each attribute in attributesFound:
   animal=animal.intersection(dict[attribute ])

说我们有这个案例

      does it purr?
      does it have whiskers?

属性创建将是[purr,whiskers],动物将是[cat,dog]然后我们为每个属性循环输入

 for each attribute in [cat,dog] :
   animal=set(animal.intersection(dict[attribute ]))//in the first iteration animal would still be [cat,dog].

//然而在第二次迭代集([cat,dog] intersection([cat]))会给你一个只有一个元素的集合