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

问题描述 投票:0回答:2

这里有史以来第一个问题,请问我的礼节是否恶劣。我目前正在一个项目中,目标是使用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文本时,代码是确定下一步操作以便使正确的库使用相关信息的最佳方法是什么?

python nlp nltk voice-recognition
2个回答
0
投票

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


0
投票

我认为您几乎完成了所有操作。您只需要一个API即可获取数据。openweathermap是一项服务,向Web服务和移动应用程序的开发人员提供天气数据,包括当前天气数据,预报和历史数据。在此处创建一个帐户并获取您的API凭据。遵循this教程进行其余操作

© www.soinside.com 2019 - 2024. All rights reserved.