0

一連の英文を取り、それらを一連の関係に変換したいと思います。例えば

「パイロットは飛行機を操縦します。」次のような関係にマップされます。

flies(pilot, airplane)

「ボブはアリスとダグの父親です。」にマップされます

father(Bob, Alice)
father(Bob, Doug)

以前にこのようなことを行うPythonライブラリを見たことがあることは知っていますが、検索をすべて行ったにもかかわらず、それを見つけることができませんでした. NLP プログラミングをしたことがないので、用語を間違って使用している可能性があります。謝罪いたします。

更新: これはプロローグを生成するための取り組みではなく、言説の世界に関するバイナリ (およびその他の) 事実を生成するための取り組みです。これらのファクトはオブジェクト ロール モデルに挿入され、データベース スキーマの生成に役立ちます。上記の「ハエ」の事実は説明のためのものであり、出力の構文に関する要件はありません。通常の出力でなければなりません。

言語的に言えば、2 つの事実を捉えるために動詞句と 2 つの名詞句を見たいと思います。それらが構造化される方法は、自動化された方法で構造を識別できるほど重要ではありません。

4

1 に答える 1

1

自然言語をProlog(XSB?)に変換しているようです。一般に、このプロセスを自動化する簡単な (またはかなり難しい) 方法はありません。ただし、質問のような単純な文の場合は、型付き依存関係の解析を使用する必要があります。これにより、主語、目的語、動詞が得られます。これらを取得したら、簡単なスクリプトを記述してタプルを取得できます。

Python の自然言語ツールキット (NLTK) は、型の依存関係をサポートしていません。(この回答を参照してください

スタンフォードのパーサーがそれを手助けしてくれます (Prateek がコメントで述べているように)。型付き依存関係を使用する必要があることに注意してください。

あなたの例文は「パイロットが飛行機を操縦する」です。譲ります

det(pilot-2, A-1)
nsubj(flies-3, pilot-2)
root(ROOT-0, flies-3)
det(airplane-5, an-4)
dobj(flies-3, airplane-5)

rootは述語 (主な動詞) でありnsubj、主語をdobj示し、直接目的語を示します。

お役に立てれば :-)

于 2013-11-10T09:53:17.570 に答える