我正致力于语言处理。我收到一个字符串(例如来自语音识别)。该字符串包含一些必须找到的命令。我把我自己的系统放在一起,但我无法为它计算算法(我是编程和python的新手)。
简单的例子:
received_string = 'I want to turn on machine'
# idea dictionary in dictionary
# commands
def function1():
pass
def function2():
pass
commands = \
{
'I want to turn on ': {
'machine': function1,
'lights': function2
},
'Open the ': {
#####
#####
}
}
所以基本上我收到了例如'我想打开机器'。 “我想打开”是可以应用于多个对象之一的命令。我想将这些对象存储在commands
字典中的dictionary_中。有没有可能找到并实现一些聪明的算法来处理'我想打开机器'到'我想打开'然后找到对象'机器'并执行function1()
?
我真的不想让算法在字符串中删除最后一个单词然后搜索。原因是我希望字典有问题等等,而且没有必要削减它。事实上,我想要非常复杂的系统,这个带有命令和不同对象的字典阻碍了我的进步。我知道有一个解决方案可以制作两个独立的命令'我想打开机器'和'我想打开灯',但这有点不专业而且不切实际吗?
答案 0 :(得分:1)
您可以尝试这样的事情:
received_string = 'I want to turn on machine'
# idea dictionary in dictionary
# commands
def function1():
print 'Function 1'
def function2():
print 'Function 2'
commands = \
{
'I want to turn on ': {
'machine': function1,
'lights': function2
},
'Open the ': {
#####
#####
}
}
for command in commands:
if command in received_string:
item = received_string.split(command)[-1].strip()
cmd_out = commands[command][item]
break
cmd_out()
这将返回:
Function 1
基本上,您可以查看命令中的密钥是否在您收到的字符串中。然后,您可以解析命令以查看正在执行命令的内容,并将变量设置为字典最后部分中的函数。一旦你离开循环,你可以调用你的函数变量。
目前,这假设您的字符串将在您的字典中找到,因此如果需要对其进行任何错误处理,则需要添加它。但是这通常适用于你知道在词典中的输入。