第1讲 人工智能导论
对人工智能的几种分类方法
从时间上
从方法论上
- Statistical
- Logic
{wo men xian zai}
将所有词语出现的概率乘起来,概率最高的就是正确的。
从问题范式上
- Relax Based Models
识别车、识别猫狗 - State Based Models
下棋、路线 - Optimization Models
经营最佳规划、梯度下降 - Logic Model
告诉事实更改判断
古老的规则驱动的力量——解释规则
Problem: 我们希望让计算机自动产生像人类说的话
Rule Parser Engine
rules = """
句子 = 主语 谓语 宾语
主语 = 你|我|他
谓语 = 吃|玩
宾语 = 桃子|皮球
"""
grammar = {}
for r in rules.split("\n"):
if r.strip() == '': continue
target, expand = r.split('=')
grammar[target.strip()] = [e.strip() for e in expand.split('|')]
grammar
Output:
{'句子': ['主语 谓语 宾语'],
'主语': ['你', '我', '他'],
'谓语': ['吃', '玩'],
'宾语': ['桃子', '皮球']}
import random
def generate(grammar, target='句子'):
if target not in grammar: return target
return ''.join([generate(grammar, t) for t in random.choice(grammar[target]).split()])
generate(grammar)
可以随机生成一个符合语法的句子
Output:
你吃桃子
我吃桃子
你玩桃子
你吃皮球
他玩桃子
我吃桃子
你玩皮球
他吃桃子
你吃桃子
我玩桃子
有了Rule Parser Engine,我们可以只更改规则来生成更复杂的句子
rules = """
复合句子 = 句子 , 连词 复合句子|句子
连词 = 而且|但是|不过
句子 = 主语 谓语 宾语
主语 = 你|我|他
谓语 = 吃|玩
宾语 = 桃子|皮球
"""
generate(grammar, target='复合句子')
Output:
你玩桃子
我吃皮球,但是你玩桃子,但是他吃皮球,而且你吃桃子,不过你吃皮球,而且我吃桃子,不过他吃桃子,不过他玩桃子,但是我吃桃子
你玩桃子
你玩皮球,但是你吃皮球
我玩皮球,但是你玩皮球,不过他玩皮球,而且你玩皮球
你玩皮球
我吃桃子
你吃皮球,而且他玩皮球,不过我玩皮球
你玩桃子
我吃桃子,但是你玩皮球