2017-01-10 7 views
4

入力を解析するためにProlog DCGを使用すると、文法の付随するBNFを持つことがうれしいです。例えば非終端記号の引数を持つBNFはありますか?

:として

BNF

<Sentence> ::= <Noun_phrase> <Verb_phrase> 
<Noun_phrase> ::= <Determiner> <Noun> 
<Verb_phrase> ::= <Verb> <Phrase> 
<Determiner> ::= a 
<Determiner> ::= the 
<Noun> ::= cat 
<Noun> ::= mouse 
<Verb> ::= scares 
<Verb> ::= hates 

PrologのDCG

sentence --> noun_phrase, verb_phrase. 
verb_phrase --> verb, noun_phrase. 
noun_phrase --> determiner, noun. 
determiner --> [a]. 
determiner --> [the]. 
noun --> [cat]. 
noun --> [mouse]. 
verb --> [scares]. 
verb --> [hates]. 

しかしPrologのDCGもsingularplural

この例 Number
として引数を持つことができます
sentence(Number) --> noun_phrase(Number), verb_phrase(Number). 
verb_phrase(Number) --> verb(Number), noun_phrase(Number). 
noun_phrase(Number) --> determiner(Number), noun(Number). 
determiner(singular) --> [a]. 
determiner(singular) --> [the]. 
determiner(plural) --> [the]. 
noun(singular) --> [cat]. 
noun(plural) --> [cats]. 
noun(singular) --> [mouse]. 
noun(plural) --> [mice]. 
verb(singular) --> [scares]. 
verb(plural) --> [scare]. 
verb(singular) --> [hates]. 
verb(plural) --> [hate]. 

非ターミナルの引数を含むBNFの標準または受け入れ拡張がありますか?

もしそうなら、私はそれへのリンクが必要です。

私は、ATN(Augmented Transition Networks)がボールパーク内にあり、唯一の標準的な答えかもしれないと思っていますが、私は、何らかの形の頂点/エッジグラフとは対照的に線形テキストを期待しています。

+0

対象:[PrologコードでFSA、RTNなどを含む入門NLPコース](http://www.ccunix.ccu.edu.tw/~lngwujs/Courses/CL/NLP_prolog_Blackburn.pdf) –

答えて

2

私はfeature structuresのコンセプトがあなたが探しているものだと思います。あなたの例で示した引数の共有は、より一般的な機能構造統一アプローチの特殊なケースです。

私はBNFのフィーチャー構造拡張を特に認識していませんが、他の文法形式にフィーチャー構造拡張を追加するための合理的に認められた表記法があります。 NLTK(Python自然言語処理ライブラリ)のドキュメントには、彼らが使用する記法のan example hereがあります。ここではあなたの例から最初の数作品にほぼ対応し、そのルールのいくつかされています

S -> NP[CASE=nom, AGR=?a] VP[AGR=?a] 
VP[AGR=?a] -> TV[OBJCASE=?c, AGR=?a] NP[CASE=?c] 
NP[CASE=?c, AGR=?a] -> Det[CASE=?c, AGR=?a] N[CASE=?c, AGR=?a] 

?xは、論理変数のための彼らの表記法です。 NLTKマニュアルの全体の章には、フィーチャ構造の一般的な記述が含まれており、いくつかの文献が含まれています。

+0

I Prolog DCGがこれらの概念を線形テキストで表現するより良い方法であると私は信じるようになりました。私は、エッジ/頂点グラフが優れていると思いますが、ソースコードなどのテキストのみの方法で文書化すると、ダイアグラムが機能しないため、必要があります。あなたの答えは私が学ぶのを助けています。 –

+0

興味深い:[NLP入門 - 機能の構造と統一](https://courses.engr.illinois.edu/cs498jh/Slides/Lecture16.pdf)と[シラバス](https://courses.engr .illinois.edu/cs498jh/syllabus.html)Julia Hockenmaier著 –

+0

興味深い:[機能構造の統一文法](http://ai-depot.com/ska/paper/node25.html) - 「FSUGは非常にコンパクトであり、 DCGと比較して抽象的であり、その違いはCFGと比較してさらに顕著である。 –

関連する問題