https://github.com/ap-atul/expert-system
Generic Expert System with a custom Knowledgebase and Clause mappings.
https://github.com/ap-atul/expert-system
artificial-intelligence backward-chaining expert expert-system forward-chaining generic-expert-system inference-engine knowledgebase
Last synced: about 2 months ago
JSON representation
Generic Expert System with a custom Knowledgebase and Clause mappings.
- Host: GitHub
- URL: https://github.com/ap-atul/expert-system
- Owner: AP-Atul
- License: mit
- Created: 2020-09-24T04:05:20.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-10T03:51:59.000Z (about 2 years ago)
- Last Synced: 2024-05-21T07:19:43.727Z (about 1 year ago)
- Topics: artificial-intelligence, backward-chaining, expert, expert-system, forward-chaining, generic-expert-system, inference-engine, knowledgebase
- Language: Python
- Homepage:
- Size: 38.1 KB
- Stars: 15
- Watchers: 4
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Expert System
* Generic expert system to generate rules and create relation between entries and knowledge base.
* Implemented using Forward Chaining and Backward chaining.
* Require to input well-formatted json files that correspond to the example in ```data``` folder
* The clauses should relate to the Knowledge base or it won't make any sense when run.
* Parsers are built to parse the json file and create objects on runtime.### Description
* The Rule is a string that can be compared.
* Knowledge is formed up of multiple rules
* Knowledge Base is formed up of multiple knowledge
* Clause is a set of questions
* Clause has 3 attributes clause, negative, positive
* For each clause, the knowledge base is searched, percent higher than Min Match is outputted
* The constants can be changed from ```utils/constants.py```
* Check out the examples ```data/```### Thought process
* Json format file that can clearly define a structure to parse.
* Reading the json file and building the Knowledge Base and the Clause Base.
* The user input for each clause is converted to Knowledge Base.
* Both Knowledge bases are compared and max percent matched is outputted.
* There may be multiple matches, we could display details with percentage.
* Finally answer is either True or False.
* Knowledge base syntax
```json
{
"target": [
{
"name": "Kidney disease",
"rules": {
"1": "head aches",
"2": "vomiting",
"3": "body ache",
"4": "no sleep"
}
},
{
"name": "Some target",
"rules": {
"1": "rule1",
"2": "rule2"
}
}
]
}
```* Clause base syntax
```json
{
"1": {
"question": "State your symptoms?",
"answer": {
"positive": "Yes, you are positive for ",
"negative": "We don't see any signs of "
}
},
"2": {
"question": "question/statement",
"answer": {
"positive": "positive statement with potential to add target at end",
"negative": "negative statement, target will be added at end"
}
}
}
```----------------------------------
### Example
* Backward Chaining
```console
Chankya >>> Tell me some features of this bird?
You >>> high flight, strong legs, yellow legs
[DEBUG] Target :: Falcons, Eagles ---> Matched :: 33.33333333333333[INFO] I am not sure if this is the bird Falcons, Eagles
[INFO] Hope that you are satisfied with your answers !
```* Forward Chaining
```console
Chankya >>> Tell me some features of this bird?
You >>> high flight, strong legs, yellow legs
[DEBUG] Target :: Falcons, Eagles ---> Matched :: 33.33333333333333
[DEBUG] Target :: Peacock ---> Matched :: 0.0
[DEBUG] Target :: Hen ---> Matched :: 0.0
[DEBUG] Target :: Albatrosses ---> Matched :: 0.0
[DEBUG] Target :: Paradise birds ---> Matched :: 0.0
[DEBUG] Target :: Crows ---> Matched :: 0.0
[DEBUG] Target :: Cuckoos ---> Matched :: 0.0
[DEBUG] Target :: Ducks, Geese and Swans ---> Matched :: 0.0[INFO] I am not sure if this is the bird Falcons, Eagles
[INFO] Hope that you are satisfied with your answers !
```