基于句子在嵌套字典中查找函数

时间:2017-02-02 17:39:29

标签: python algorithm dictionary nlp

我正致力于语言处理。我收到一个字符串(例如来自语音识别)。该字符串包含一些必须找到的命令。我把我自己的系统放在一起,但我无法为它计算算法(我是编程和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()

我真的不想让算法在字符串中删除最后一个单词然后搜索。原因是我希望字典有问题等等,而且没有必要削减它。事实上,我想要非常复杂的系统,这个带有命令和不同对象的字典阻碍了我的进步。我知道有一个解决方案可以制作两个独立的命令'我想打开机器'和'我想打开灯',但这有点不专业而且不切实际吗?

1 个答案:

答案 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

基本上,您可以查看命令中的密钥是否在您收到的字符串中。然后,您可以解析命令以查看正在执行命令的内容,并将变量设置为字典最后部分中的函数。一旦你离开循环,你可以调用你的函数变量。

目前,这假设您的字符串将在您的字典中找到,因此如果需要对其进行任何错误处理,则需要添加它。但是这通常适用于你知道在词典中的输入。