NLP - 句子不遵循句法分析中的任何语法规则
NLP - Sentence does not follow any of the grammar rule in Syntactic parsing
我从 nltk 库的 Treebank 数据集中提取了语法。现在解析器将使用这些规则来解析句子。因此,例如我有如下语法:
A->B C
B->'b'
C->'c'
D->'d'
现在假设我有像 b c
这样的句子,那么解析器将生成如下所示的解析树
A
/ \
B C
| |
b c
这样我就拥有了训练数据集中的所有语法。现在进行测试,假设有一个全新的句子,例如 "c d"
上面句子的解析树将是
C D
| |
c c
解析器将停止,因为没有 A->C D
的规则
所以如何解析这类句子,因为训练语法没有像A -> C D
这样的语法
所以问题是如果句子是全新的并且训练数据集中不存在语法规则,如何解析句子?我正在使用概率语法。
您可以尝试的一件事是切掉无法解析的输入句子的不同部分并扣除一定的置信度分数,然后尝试将其与现有语法匹配。如果置信度低于某个阈值,您只会 return 一条关于无法解析和删除该句子的消息。同时你可以记录这些句子并提出新的语法。
这就是我为其中一个个人助理项目所做的,试图对所有看不见的甚至无效的输入给出答案实际上是不可能的。
我从 nltk 库的 Treebank 数据集中提取了语法。现在解析器将使用这些规则来解析句子。因此,例如我有如下语法:
A->B C
B->'b'
C->'c'
D->'d'
现在假设我有像 b c
这样的句子,那么解析器将生成如下所示的解析树
A
/ \
B C
| |
b c
这样我就拥有了训练数据集中的所有语法。现在进行测试,假设有一个全新的句子,例如 "c d"
上面句子的解析树将是
C D
| |
c c
解析器将停止,因为没有 A->C D
所以如何解析这类句子,因为训练语法没有像A -> C D
所以问题是如果句子是全新的并且训练数据集中不存在语法规则,如何解析句子?我正在使用概率语法。
您可以尝试的一件事是切掉无法解析的输入句子的不同部分并扣除一定的置信度分数,然后尝试将其与现有语法匹配。如果置信度低于某个阈值,您只会 return 一条关于无法解析和删除该句子的消息。同时你可以记录这些句子并提出新的语法。
这就是我为其中一个个人助理项目所做的,试图对所有看不见的甚至无效的输入给出答案实际上是不可能的。