Python 如何在语音助手中有效地利用nltk?

Python 如何在语音助手中有效地利用nltk?,python,nlp,nltk,voice-recognition,Python,Nlp,Nltk,Voice Recognition,第一个问题,如果我的礼节不好,请容忍我。我目前正在从事一个项目,目标是使用python实现语音助手。我们被建议使用自然语言处理来帮助助手更有效地解析问题,我已经为此成功安装了nltk。我对自然语言处理完全陌生,所以我遇到了一些困惑 现在,我的代码将对麦克风进行口头输入,例如: "what is the weather in Chicago?" 并成功标记它,移除停止字并按如下方式标记它: import nltk # importing the natural language tool

第一个问题,如果我的礼节不好,请容忍我。我目前正在从事一个项目,目标是使用python实现语音助手。我们被建议使用自然语言处理来帮助助手更有效地解析问题,我已经为此成功安装了nltk。我对自然语言处理完全陌生,所以我遇到了一些困惑

现在,我的代码将对麦克风进行口头输入,例如:

"what is the weather in Chicago?"
并成功标记它,移除停止字并按如下方式标记它:

    import nltk # importing the natural language toolkit
    from nltk import word_tokenize # this allows us to tokenize a sentence
    from nltk.corpus import stopwords # this allows us to filter out stopwords
    # Tokenizes the sentence
    tokens = word_tokenize(text)
    print(tokens)

    # Removes stopwords from the sentence
    sWords = set(stopwords.words('english'))
    cleanTokens = [w for w in tokens if not w in sWords]
    print(cleanTokens)

    # Tags the sentence
    tagged = nltk.pos_tag(cleanTokens)
    print(tagged)

    # Prints fully processed sentence with tags attatched
    print(nltk.ne_chunk(tagged))
输出:

['what', 'is', 'the', 'weather', 'in', 'Chicago']
['weather', 'Chicago']
[('weather', 'NN'), ('Chicago', 'NNP')]
(S weather/NN (GPE Chicago/NNP))
从本质上说,我的问题是,我不确定从这里走到哪里。我还没有找到任何好的例子来说明这样的文本应该如何与API一起使用,以实际返回芝加哥的天气

在这个伪代码中使用if/else语句是否正确

if tagged.contains("weather")
   city = searchForCities(tagged)
   return city.weatherReport
elif tagged.contains("time) ect...

总而言之,当您对nltk文本进行标记/标记时,您的代码确定下一步操作的最佳方式是什么,以便正确的库使用相关信息?

欢迎使用Stackoverflow。这个问题没有简单的答案,这可能会让你越是了解聊天机器人和语音助手就越清楚。这就是为什么这个问题实际上很好。当您非常熟悉最著名的语音助手系统,例如am***n al**a时,您会注意到,在内部,语音识别输出被映射到“意图”,例如“playMusicIntent”,它被参数化,例如歌曲标题和口译员。将重要单词(具有语义,而不是虚词)映射到不同的意图是一个很好的起点,但也意味着if/else方案的“硬编码”规则。大多数聊天机器人都绑定到特定的域,例如产品目录。
一个好的开始是学习单词的搭配,例如“wheather”和“in”,通过它你可以记录意图。这可以使用NLTK或Spacy完成。必须使用依赖语料库数据的分类器来实现很多功能,例如语音行为类型识别()。NLU(自然语言理解)在这里是最重要的,因为你有一个好的SR引擎。这可能需要查询大量的训练数据以进行意图识别。如果您提供您的域名信息,我们(SO上的人)可能会提供更多帮助。

欢迎来到Stackoverflow。这个问题没有简单的答案,这可能会让你越是了解聊天机器人和语音助手就越清楚。这就是为什么这个问题实际上很好。当您非常熟悉最著名的语音助手系统,例如am***n al**a时,您会注意到,在内部,语音识别输出被映射到“意图”,例如“playMusicIntent”,它被参数化,例如歌曲标题和口译员。将重要单词(具有语义,而不是虚词)映射到不同的意图是一个很好的起点,但也意味着if/else方案的“硬编码”规则。大多数聊天机器人都绑定到特定的域,例如产品目录。
一个好的开始是学习单词的搭配,例如“wheather”和“in”,通过它你可以记录意图。这可以使用NLTK或Spacy完成。必须使用依赖语料库数据的分类器来实现很多功能,例如语音行为类型识别()。NLU(自然语言理解)在这里是最重要的,因为你有一个好的SR引擎。这可能需要查询大量的训练数据以进行意图识别。如果您提供您所在领域的信息,我们(SO上的人)可能会提供更多帮助。

我认为您几乎做了所有事情。您只需要一个API来获取数据。
是一项向web服务和移动应用程序开发者提供天气数据的服务,包括当前天气数据、预测和历史数据。在那里创建一个帐户并获取API凭据。接下来的部分按照教程进行

我想你几乎什么都做了。您只需要一个API来获取数据。
是一项向web服务和移动应用程序开发者提供天气数据的服务,包括当前天气数据、预测和历史数据。在那里创建一个帐户并获取API凭据。接下来的部分请按照教程进行操作

好,这样您就可以在STT(语音到文本)界面中解析意图,最好是开源的。nltk并不是真正的意图或语音文本转换。“当您标记/标记了nltk文本时,您的代码确定下一步操作的最佳方式是什么,以便正确的库使用相关信息?”称为确定用户查询的意图

1) 这是一个正在使用的堆栈列表

2) 据我所知,Mycroft AI是领先的开源语音助手,该项目已经落后多年,甚至他们为了支持谷歌的STT而抛弃了Mozilla DeepSpeech。 :

  • (默认引擎:)谷歌的STT引擎(非开源)
  • Mozilla DeepSpeech
  • Kaldi(“用C++编写的语音识别工具包”)

好的,所以您希望在STT(语音到文本)接口中解析意图,最好是开源的。nltk并不是真正的意图或语音文本转换。“当您标记/标记了nltk文本时,您的代码确定下一步操作的最佳方式是什么,以便正确的库使用相关信息?”称为确定用户查询的意图

1) 这是一个正在使用的堆栈列表

2) 据我所知,Mycroft AI是领先的开源语音助手,该项目已经落后多年,甚至他们为了支持谷歌的STT而抛弃了Mozilla DeepSpeech。 :

  • (默认引擎:)谷歌的STT引擎(非开源)
  • Mozilla DeepSpeech
  • Kaldi(“用C++编写的语音识别工具包”)

您是否考虑过其他选项,例如在AI机器人工具上构建对话