我正在尝试实现一个 Web 应用程序,该应用程序将允许用户定义规则并根据一组规则提出问题以查看语句是合法的还是非法的。我想到的领域是小型社区或俱乐部的规则。
例如,假设一个可能的规则集包含以下规则:
Only cars with valid registration tags may park anywhere indefinitely.
Cars without valid registration tags may only park in a visitor spot for up to 3 days.
然后有人问"Can I park my Honda here?"
系统将尝试通过首先遵循类似于以下的问答树来回答:
"Is a Honda a car?"
=>Yes
"Does it have a valid registration tag?"
=>Yes
"Yes"
=>No
"Are you parking in a visitor spot?"
=>Yes
"Have you parked in that spot for more than 3 days?"
=>Yes
"No"
=>No
"Yes"
=>No
"No"
=>Define "visitor spot"?
"A visitor spot is a parking spot. A parking spot is spatial rectangular area of asphault with a width of 8 feet and a length of 15 feet with a variation of 1 foot. It has either another parking spot or a curb adjacent to it. It has the words "Visitor" painted on it. It ressembles <img>."
=>Define "parking"?
"Parking is the act of placing a vehicle within the spatial area of a parking spot. The state of a parked image ressembles <img>."
=>Define "valid registration tag"?
"A valid registration tag ressembles <img>"
=>No
"No"
=>Define "car"?
"A car is a 4 wheeled vehicle weighing less than 3 tons."
用户在每个节点选择一个答案,系统会根据一个答案提出下一个问题,直到到达一个叶子节点,代表一个“最终”的答案。
在每个节点,用户可以要求系统解释或定义问题中使用的术语。解释将是一系列包含术语的陈述,这些术语本身可以进一步解释或定义。
在获得足够的经验后,系统可以自动跳过某些节点,例如第一个“本田是汽车吗?” 当它了解到在“停车”的上下文中,“本田”总是意味着“汽车”。
尽管此树中未显示,但某些树可能具有“未定义”叶节点,表示规则没有提供足够覆盖范围以完全创建树的情况,需要将问题重定向给人类专家以澄清或更正规则。
目标是在数据库中定义规则,然后根据需要动态生成这些问答树。
尽管此处显示的规则和问题表示为自然语言,但初始系统将使用符号逻辑代替,因为除了这种逻辑解析之外进行 NLP 会使初始系统变得非常复杂。这些规则最初可能是作为自然语言起草的,但在输入系统之前,它们会被手动转换为离散规则。问题将显示为简单的自然语言陈述,答案将是多项选择。
这看起来像是一个实用的项目吗?有没有先有技术?到目前为止,我还没有阅读过类似的内容,但我不确定哪些搜索关键字能够充分描述这个系统。
我应该使用什么工具?我不确定是否应该使用决策树或某种专家系统来将问题与规则匹配并缩小问题的范围。