困在为聊天机器人实现对话管理器[处于保留状态]

问题描述 投票:-1回答:1

我正在尝试使用python将输出列表转换为json。

输入:

[intents:['abc']]

输出:

{"some" : [ {"var":"intents"}, {"==":[{"var":"intent"}, "abc"]}

输入:

[EntityNode:['abc']]

输出:

{"some" : [ {"var":"entities"}, {"==":[{"var":"entity"}, "abc"]}

输入:

[EntityNode:['abc', 'hjk']]

输出:

{"some" : [ {"var":"entities"}, {"==":[{"var":"entity"}, "abc"]}
{"some" : [ {"var":"entities"}, {"==":[{"var":"value"}, "hjk"]}

我应该使用哪种方法?请帮我用python编码。

python python-3.x chatbot pyparsing
1个回答
0
投票

[一般来说,向Python库提出建议的SO问题通常会被关闭,因为会对此问题或特定模块提供意见。这个问题尤其广泛,因为您针对该请求的尝试解决方案发布了广泛的请求,而不是特定的问题。

不管您最终使用什么模块,都应该从为您的小语言编写BNF开始。它将用作解析器设计的路线图,并在完成其组成部分时为您提供明确的目标和指示。没有它,就很容易在细节上摸索,永远也无法获得可行的项目。

根据您发布的示例,我为您检查了BNF。它不是过于正式或严格,甚至可能无法准确地表示您想要的语法。但是充实并使用它可能会帮助您逐步构建思想和解析器设计:

statement ::= if_statement | say_statement | set_statement
if_statement ::= 'IF' logical_expression ':' (statement | statement_block)
say_statement ::= 'SAY' string_expression
set_statement ::= 'SET' lvalue 'TO' rvalue
lvalue ::= dollar_ident
rvalue ::= string_expression | numeric_expression | logical_expression | at_ident | hash_ident
comparison_op ::= '>' | '<' | '<=' | '>='
equality_op ::= '==' | '!='
comparison_expression ::= infix(rvalue, [equality_op, comparison_op])
logical_expression ::= infix(comparison_expression, ['NOT', 'AND', 'OR'])
numeric_expression ::= infix(numeric_value, [('*', '/'), ('+', '-')])
string_expresion ::= quoted_string ['+' quoted_string]...
dollar_ident ::= '$' identifier
at_ident ::= '@' identifier [':' paren_expression ]
hash_ident ::= '#' identifier
paren_expression ::= '(' word... ')'
word ::= alphanumeric character...
© www.soinside.com 2019 - 2024. All rights reserved.