gpt4 book ai didi

python - 使用 NLTK 进行语义解析

转载 作者:太空狗 更新时间:2023-10-30 01:34:29 25 4
gpt4 key购买 nike

我正在尝试使用 NLTK 对语音导航命令进行语义解析,例如“去旧金山”、“给我指路去 123 Main Street”等。

这可以用一个相当简单的 CFG 语法来完成,例如

S -> COMMAND LOCATION
COMMAND -> "go to" | "give me directions to" | ...
LOCATION -> CITY | STREET | ...

问题是这涉及非原子(超过一个字长)文字,例如“go to”,NLTK 似乎没有为它设置(如果我错了请纠正我)。解析任务以标记为先决条件,所有标记器似乎总是标记单个单词。所以,我的选择似乎是:

a) 定义一个自定义标记器,它可以将非句法标记分配给单词序列而不是单个单词(例如,“go to”:“COMMAND”)。b) 使用特征来增强语法,例如:

COMMAND -> VB[sem='go'] P[sem='to'] | ...

c) 使用分块器提取子结构,如 COMMAND,然后对结果应用解析器。 NLTK 是否允许 chunker->parser 级联?

其中一些选项似乎令人费解(黑客)。有什么好办法吗?

最佳答案

您似乎想要确定命令。

This answer 已经对此进行了调查,并包含一个类似于您的选项 (a) 的解决方案,但有点不同,因为它让标记器完成大部分工作。 (b) 确实看起来有点老套……但您正在创建一个非常自定义的应用程序,所以它可以工作!我会做 (c) 相反的事情——解析然后基于 (a) 中的 CFG 分块。

但总的来说,正如另一个答案所解释的那样,似乎还没有完美的方法来做到这一点

您可能还想看看 pattern.en (另见 their GitHub repo )。他们的

mood() function tries to identify a parsed Sentence as indicative, imperative, conditional or subjunctive

关于python - 使用 NLTK 进行语义解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18681052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com