WSaiOS EOM模拟人工认知工程理论
第四十五章:WSaiOS MySQL认知知识库设计——对象、关系、记忆的数据结构实现
45.1 为什么需要认知知识库
前面章节完成:
软件结构:
PHP OOP
↓
MVC
↓
Service
↓
Smarty
但是:
一个人工认知系统必须保存:
- 认知对象;
- 对象属性;
- 对象关系;
- 历史经验;
- 用户学习结果。
因此:
需要数据存储层。
传统数据库:
保存:
用户表
订单表
商品表
WSaiOS知识库:
保存:
对象
↓
关系
↓
知识
↓
经验
↓
记忆
区别:
数据库保存:
数据。
知识库保存:
结构化认知信息。
45.2 WSaiOS知识库总体结构
数据库设计:
wsaios_database
├── cognitive_objects
│
├── object_attributes
│
├── relationships
│
├── knowledge
│
├── memories
│
├── experiences
│
└── matching_results
对应:
EOM:
Object
Attribute
Relation
Knowledge
Memory
Experience
45.3 Cognitive Object对象表设计
对象是核心。
表:
cognitive_objects
结构:
CREATE TABLE cognitive_objects
(
id INT AUTO_INCREMENT PRIMARY KEY,
object_type VARCHAR(50),
name VARCHAR(255),
description TEXT,
state VARCHAR(100),
created_at TIMESTAMP
);
例如:
保存:
供应商对象。
数据:
id:
1
type:
supplier
name:
ABC Factory
state:
active
45.4 Object Attribute属性表
为什么单独保存属性?
因为:
不同对象属性不同。
例如:
供应商:
产能
认证
地区
产品:
尺寸
材料
功能
设计:
CREATE TABLE object_attributes
(
id INT AUTO_INCREMENT PRIMARY KEY,
object_id INT,
attribute_name VARCHAR(100),
attribute_value TEXT
);
关系:
Object
|
Attribute
45.5 Relationship关系表设计
EOM认为:
关系比对象更重要。
因为:
理解来自:
对象之间连接。
例如:
Supplier
↓
Supply
↓
Product
数据库:
CREATE TABLE relationships
(
id INT AUTO_INCREMENT PRIMARY KEY,
source_id INT,
relation_type VARCHAR(100),
target_id INT,
weight INT DEFAULT 0
);
数据:
source:
ABC Factory
relation:
supply
target:
Electric Toothbrush
weight:
90
45.6 Knowledge知识表设计
知识:
由:
对象 + 关系 + 经验
形成。
表:
CREATE TABLE knowledge
(
id INT AUTO_INCREMENT PRIMARY KEY,
object_id INT,
relation_id INT,
knowledge_text TEXT,
confidence INT
);
例如:
对象:
ABC Factory
关系:
Supply
知识:
适合美国市场
可信度:
85
45.7 Memory记忆表设计
WSaiOS包含:
四种记忆。
第一:
短期记忆。
保存:
当前任务。
第二:
长期记忆。
保存:
稳定经验。
第三:
时序记忆。
保存:
变化过程。
第四:
概率记忆。
保存:
成功概率。
数据库:
CREATE TABLE memories
(
id INT AUTO_INCREMENT PRIMARY KEY,
object_id INT,
memory_type VARCHAR(50),
content TEXT,
weight FLOAT,
created_at TIMESTAMP
);
例如:
object:
Miami Market
type:
probability
content:
supplier success rate
weight:
0.85
45.8 Experience经验表设计
经验:
来源于运行。
例如:
一次匹配:
系统推荐供应商A
↓
用户选择
↓
成交
保存:
CREATE TABLE experiences
(
id INT AUTO_INCREMENT PRIMARY KEY,
object_id INT,
action VARCHAR(100),
result TEXT,
score INT,
created_at TIMESTAMP
);
45.9 Matching结果表
保存:
认知匹配历史。
例如:
用户查询:
electric toothbrush supplier Miami
结果:
供应商A
评分:
90
表:
CREATE TABLE matching_results
(
id INT AUTO_INCREMENT PRIMARY KEY,
input_text TEXT,
object_id INT,
score INT,
created_at TIMESTAMP
);
45.10 PHP Model访问知识库
MVC中:
Model负责:
数据库。
例如:
ObjectModel:
class ObjectModel
{
private $db;
public function findByName($name)
{
$sql="
SELECT *
FROM cognitive_objects
WHERE name='$name'
";
$result=
$this->db->query($sql);
return $result;
}
}
45.11 KnowledgeModel设计
class KnowledgeModel
{
public function getKnowledge($objectId)
{
$sql="
SELECT *
FROM knowledge
WHERE object_id=$objectId
";
return $this->db
->query($sql);
}
}
45.12 MemoryModel设计
class MemoryModel
{
public function recall($objectId)
{
$sql="
SELECT *
FROM memories
WHERE object_id=$objectId
";
return $this->db
->query($sql);
}
}
45.13 Service调用知识库
流程:
Controller
↓
CognitiveService
↓
MatchingService
↓
KnowledgeModel
↓
MemoryModel
↓
MySQL
代码:
class MatchingService
{
public function match($object)
{
$knowledge=
$this->knowledgeModel
->getKnowledge(
$object->id
);
$memory=
$this->memoryModel
->recall(
$object->id
);
return $this->calculate(
$knowledge,
$memory
);
}
}
45.14 知识库更新流程
系统运行:
产生经验。
流程:
用户行为
↓
Experience
↓
Memory
↓
Knowledge Update
↓
Object增强
例如:
原对象:
Supplier A
生产
Electric Toothbrush
新增:
Supplier A
成功进入
Miami Market
知识增强。
45.15 MySQL知识库与PHP OOP对应
| 数据库 | PHP对象 |
|---|---|
| cognitive_objects | CognitiveObject |
| attributes | Property |
| relationships | Relationship |
| knowledge | Knowledge |
| memories | Memory |
| experiences | Experience |
45.16 WSaiOS知识库特点
第一:
对象中心。
不是表中心。
第二:
关系驱动。
不是字段驱动。
第三:
经验积累。
不是静态数据。
第四:
支持用户私有知识。
45.17 本章总结
WSaiOS MySQL设计:
不是传统业务数据库。
它是:
面向对象认知知识库。
完整结构:
PHP Object
↓
Model
↓
MySQL Knowledge Base
↓
Memory
↓
Matching
最终形成:
EOM理论
+
PHP OOP
+
MVC
+
MySQL
=
WSaiOS认知工程数据库体系
下一章:
第四十六章:WSaiOS认知匹配引擎实现——基于对象、关系、知识库的PHP OOP匹配系统
重点研究:
- 为什么匹配是认知系统核心;
- Object Matching设计;
- Relationship Matching设计;
- Memory Matching设计;
- MatchingService完整PHP实现;
- GEO商业分析案例。