1
我試圖建立一個語義解析器使用python的NLTK庫和遵循新戴維森事件表示。我已經構建了我的語法,以包含正確解析的語義特徵,但我正在與協調的組成部分努力。例如,我的語法有:nltk與協調的語義解析
PropN[SEM=<\P.P(Mary)>] -> 'Mary'
PropN[SEM=<\P.P(John)>] -> 'John'
IV[SEM=<\x.exists e.(drinks(e) & drinker(e, x))>] -> 'drinks'
NP[SEM=?np] -> PropN[SEM=?np]
VP[SEM=?v] -> IV[SEM=?v]
S[SEM=<?subj(?vp)>] -> NP[SEM=?subj] VP[SEM=?vp]
因此,如果句子是 「約翰飲料」 的結果是:
exists e.(drinks(e) & drinker(e,John)).
但是,如果我添加一條規則,例如:
NP[SEM=<?p | ?q>] -> PropN[SEM=?p] CONJ PropN[SEM=?q]
如在「約翰或瑪麗」,我最終得到這個:
(\P.P(John) | \P.P(Mary))(\x.exists e.(drinks(e) & drinker(e,x)))
在NP中,lambda沒有被傳遞給動詞的參數。我試着四處看看,但在nltk語義分析中很少有關於協調的信息,甚至在使用lambda表達式時也更少。我知道這是可能的,因爲一個同學顯然有他的工作,但我不知道是什麼訣竅。
謝謝!這對我來說非常有幫助。 – erip