如何在Prolog中修改句子分析规则?
在分析字符串列表时,当前规则允许逗号位于句子末尾,而不允许逗号位于单词之间,这显然是不正确的。如何修改当前规则如何在Prolog中修改句子分析规则?,prolog,Prolog,在分析字符串列表时,当前规则允许逗号位于句子末尾,而不允许逗号位于单词之间,这显然是不正确的。如何修改当前规则 complexsentence --> [] ; simplesentence, complexsentence; simplesentence, delimiter, complexsentence. simplesentence --> noun, verb. delimiter --> [,].noun --> [su
complexsentence --> [] ; simplesentence, complexsentence;
simplesentence, delimiter, complexsentence.
simplesentence --> noun, verb.
delimiter --> [,].noun --> [sun].
verb --> [shines].
% TEST: phrase(complexsentence, [sun,shines]). %must be TRUE
% TEST: phrase(complexsentence, [sun,',',shines]). %must be TRUE
% TEST: phrase(complexsentence, [sun,shines,',']). %must be FALSE
更新: 试图这样解决它。它起作用了
complexsentence --> [] ; simplesentence,complexsentence.
simplesentence --> noun,verb;
noun,verb,delimiter,noun;
noun,verb,delimiter,noun,verb.
delimiter -->[,].noun-->[sun].
verb-->[shines].
% TEST: phrase(complexsentence, [sun,shines]). % TRUE
% TEST: phrase(complexsentence, [sun,',',shines]). % FALSE
% TEST: phrase(complexsentence, [sun,shines,',']). %FALSE
建议更改为DCG:
complexsentence --> simplesentence. %was []
complexsentence --> simplesentence, complexsentence.
complexsentence --> simplesentence, delimiter, complexsentence.
simplesentence --> noun, verb.
delimiter --> [,].noun --> [sun].
verb --> [shines].
然后:
我建议第二个测试应该是错误的,因为问题描述表明,…并且不允许单词之间使用逗号
虽然原始子句(
complexsentence-->[].
)为complexsentence
的递归定义提供了终止情况,但它有两个问题:(1)它将空句子定义为最简单的复句,(2)它允许在有效的复句上使用尾随定界符(通过第3个子句,因为您可以获得SimpleContent,delimiter,[]
。使用ComplexEntence-->SimpleContent.
作为基本案例更具逻辑意义,并修复了第二个问题作为奖励,因为您的其他案例在该上下文中是合乎逻辑的。建议更改为DCG:
complexsentence --> simplesentence. %was []
complexsentence --> simplesentence, complexsentence.
complexsentence --> simplesentence, delimiter, complexsentence.
simplesentence --> noun, verb.
delimiter --> [,].noun --> [sun].
verb --> [shines].
然后:
我建议第二个测试应该是错误的,因为问题描述表明,…并且不允许单词之间使用逗号
虽然原始子句(
complexsentence-->[].
)为complexsentence
的递归定义提供了终止情况,但它有两个问题:(1)它将空句子定义为最简单的复句,(2)它允许在有效的复句上使用尾随定界符(通过第3个子句,因为您可以获得SimpleContent,delimiter,[]
。使用ComplexEntence-->SimpleContent.
作为基本案例更具逻辑意义,并修复了第二个问题作为奖励,因为您的其他案例在该上下文中是合乎逻辑的。建议更改为DCG:
complexsentence --> simplesentence. %was []
complexsentence --> simplesentence, complexsentence.
complexsentence --> simplesentence, delimiter, complexsentence.
simplesentence --> noun, verb.
delimiter --> [,].noun --> [sun].
verb --> [shines].
然后:
我建议第二个测试应该是错误的,因为问题描述表明,…并且不允许单词之间使用逗号
虽然原始子句(
complexsentence-->[].
)为complexsentence
的递归定义提供了终止情况,但它有两个问题:(1)它将空句子定义为最简单的复句,(2)它允许在有效的复句上使用尾随定界符(通过第3个子句,因为您可以获得SimpleContent,delimiter,[]
。使用ComplexEntence-->SimpleContent.
作为基本案例更具逻辑意义,并修复了第二个问题作为奖励,因为您的其他案例在该上下文中是合乎逻辑的。建议更改为DCG:
complexsentence --> simplesentence. %was []
complexsentence --> simplesentence, complexsentence.
complexsentence --> simplesentence, delimiter, complexsentence.
simplesentence --> noun, verb.
delimiter --> [,].noun --> [sun].
verb --> [shines].
然后:
我建议第二个测试应该是错误的,因为问题描述表明,…并且不允许单词之间使用逗号
虽然原始子句(
complexsentence-->[].
)为complexsentence
的递归定义提供了终止情况,但它有两个问题:(1)它将空句子定义为最简单的复句,(2)它允许在有效的复句上使用尾随定界符(通过第三个子句,因为您可以获得SimpleContence,delimiter,[]
。使用ComplexEntence-->SimpleContence.
作为基本情况更有逻辑意义,并修复了第二个问题作为奖励,因为您的其他情况在该上下文中是合乎逻辑的。为什么第二个情况“必须为真”?为什么[]
一个有效的complexsentence
?他需要它来获得解决方案,但是(我认为)说simplesentence
比说[]
@DanielLyons更直观,是的,这就是我所想的complexsentence-->simplesentence.
比complexsentence-->[].
@mbrach解决了这个问题。你应该把它作为答案提交。当然,第二个测试不可能是真的,除非simplesentence//0
变成simplesentence-->名词;动词;名词,动词。
,因为写出来的句子必须有名词和动词,而第二个测试不是这样。为什么第二种情况“必须是真的”?为什么[]
是有效的complexEntence
?他需要它来获得解决方案,但是(我认为)说simpleContent
比[]更直观
@DanielLyons是的,这就是我所想的complexsentence-->simplecontence.
比complexsentence-->[].
@mbrach解决了这个问题。你应该把它作为答案提交。当然,第二个测试不可能是真的,除非simplesentence//0
变成simplesentence-->名词;动词;名词,动词。
,因为写出来的句子必须有名词和动词,而第二个测试不是这样。为什么第二种情况“必须是真的”?为什么[]
是有效的complexEntence
?他需要它来获得解决方案,但是(我认为)说simpleContent
比[]更直观
@DanielLyons是的,这就是我所想的complexsentence-->simplecontence.
比complexsentence-->[].
@mbrach解决了这个问题。你应该把它作为答案提交。当然,第二个测试不可能是真的,除非simplesentence//0
变成simplesentence-->名词;动词;名词,动词。
,因为写出来的句子必须有名词和动词,而第二个测试不是这样。为什么第二种情况“必须是真的”?为什么[]
是有效的complexEntence
?他需要它来获得解决方案,但是(我认为)说simpleContent
比[]更直观
@DanielLyons是的,这就是我所想的complexsentence-->simplecontence.
比complexsentence-->[]更有意义。
@mbrach Tha