我想编写一个程序来询问有关天气的问题。我应该开始研究哪些算法和技术。
例:芝加哥这个周末会晴吗?我想知道意图= 天气查询,日期= 本周末,位置= 芝加哥。
用户可以以多种形式表达相同的查询。
我想解决一些受限制的形式并寻找有关如何开始的想法。解决方案需要足够好。
我想编写一个程序来询问有关天气的问题。我应该开始研究哪些算法和技术。
例:芝加哥这个周末会晴吗?我想知道意图= 天气查询,日期= 本周末,位置= 芝加哥。
用户可以以多种形式表达相同的查询。
我想解决一些受限制的形式并寻找有关如何开始的想法。解决方案需要足够好。
由于您的输入是自然语言形式,因此开始研究它的最佳方法是首先解析句子结构。并通过 NER(命名实体识别器)运行句子。
解析句子可以让你想出一些规则,例如,某些类型的依赖总是给你意图。运行 NER 可以让您识别地点和日期。如果想出对意图进行分类的规则并不简单,您也可以使用分类器使用从输入句子中形成的特征向量来做同样的事情。事实上,一些解析器输出可以用于制定特征向量。
对于这两者,都存在来自斯坦福 NLP 集团的软件
也许你可以看看:
解析句子后,您就有意图和其他信息来回答问题。
例如:我接受了你的一句话“芝加哥这个周末会是晴天吗?” 并通过Online Stanford NER Tagger运行它。这给了我以下信息:
Will it be sunny this <DATE>weekend</DATE> in <LOCATION>Chicago</LOCATION>
现在您已经确定了日期和地点。
我希望这有帮助。我知道答案很笼统,可能对刚开始有所帮助。
我认为这个 api 正是你正在寻找的。使用起来既简单又棒。
此外,https://www.luis.ai/是一个很好的 NLP 框架实现。他们有一个 API 以及一个 nuget SDK。我们已经使用它们一段时间了。它们比我们看到的其他选择便宜。即wit.ai。
所以你的例子 -
例如:本周末芝加哥是否会晴天 -> 将映射到名为 WeatherQuery 的 LUIS 意图。date -> 将映射到预构建的 LUIS dateTime 实体位置 -> 芝加哥 -> 将映射到预构建的 LUIS 实体 -> 我认为的地理或地址。