Prolog中readLine谓词的使用

Prolog中readLine谓词的使用,prolog,swi-prolog,natural-language-processing,Prolog,Swi Prolog,Natural Language Processing,在Blackburn和Bos的“自然语言的表示和推理——计算语义学的第一门课程”中,他们给出了以下谓词: parse :- readLine(Sentence), s(LambdaExpression,Sentence,[]), betaConvert(LambdaExpression,Formula), printRepresentation(Formula). 它应该启动分析句子和创建语义表示的过程。我省略了所有其他定义,因为我相信它们与我的问题无关。我很

在Blackburn和Bos的“自然语言的表示和推理——计算语义学的第一门课程”中,他们给出了以下谓词:

parse :- 
    readLine(Sentence),
    s(LambdaExpression,Sentence,[]),
    betaConvert(LambdaExpression,Formula),
    printRepresentation(Formula).
它应该启动分析句子和创建语义表示的过程。我省略了所有其他定义,因为我相信它们与我的问题无关。我很好奇如何使用这个谓词
parse

我尝试了
解析([Bob,walks])
,但收到了错误消息

你认为应该如何使用这个
parse

Prolog中readLine谓词的使用

Readline是一个单独的模块,需要包含在使用Readline的代码中,例如

:- use_module(readLine,[readLine/1]).
文件名为
readline.pl

您认为应该如何使用此解析

还有一个单独的测试文件。我会看看那些


评论如下:

您知道在SWI Prolog中哪里可以找到readline模块吗

注意到的
readline
不在SWI Prolog中,它是本书附带源代码的一部分

这本书有两个版本,每个版本都有相似但不同的代码。这两个版本的代码都可以从俄亥俄州的课程页面免费下载

第1册代码()
第2册代码()

对于“自然语言的表示和推理——计算语义学的第一门课程”,有一本书,附有到源代码的链接

这本书的一个版本可以作为


该代码设计用于Linux。如果您使用的是Windows,并且想要使用代码,我将远离Cygwin,而使用WSL(),它将为您提供一个Linux shell,我使用()。然后在Linux shell中安装SWI Prolog(),然后安装本书的源代码


注意:我经常使用WSL,并在WSL上使用SWI Prolog。我还没有尝试在这方面使用图书代码,所以我不能说它会起作用,但如果我想在书中使用源代码,我会采取相同的行动。

您只需使用
解析来调用它。
这里没有参数。
readLine
是一个查询输入的谓词。据我所知,
readLine
可能会提示您输入。@WillemVanOnsem所以我只需键入
parse。
输入,然后我就可以键入
[Bob,walks]
。您知道SWI prolog中readLine的模拟值是多少吗?请尝试
read\u string(用户“\n”、“\r”、\u字符串),
@GuyCoder,谢谢,您对本书给出了正确的参考。我只是自己读。第50页是正确的。我将尝试你关于
阅读字符串
的建议。我在陈述问题时做出了妥协,试图避免问题太长。您知道在SWI Prolog中哪里可以找到
readline
模块吗?就是这个:谢谢你这么详细的回答。我现在正在努力寻找
printmentrepresentation
的定义。在本书的代码中有一个文件
comsemPredicates
,它包含
printmentresentations
。我从单数改为复数,但仍然使用
[mia,snort]
返回
失败
进行解析,我不知道如何进行故障排除,因为
跟踪
无法使用
读线
。虽然betaConvert工作得很好,但我很感谢您的邀请,不过我现在太忙了,没有时间尝试研究这个问题。我建议你把它作为一个新问题发布,并给出细节。我仍然需要检查最近对我几周前的一个问题的回答的有效性。您还应该注意,该代码设计为在Linux上运行,以及您正在使用的操作系统上运行。如果使用Windows,请注意如何使其在Windows上运行。