課題番号: 06-04
このアプリケーションは非演繹推論である帰納を支援します。 与えられた入力文を満たす帰納した文を生成し出力します。 現在対応しているデータベースは日本語WordNetのみです。
入力文は標準入力であたえ、--max_step
引数で何層まで上位語を探索するかをあたえます。
$ cat data/text1.txt
フランス人はチーズを作ります
日本人はラーメンを食べます
$ cat data/text1.txt | python query.py --max_step 3
市民はチーズを作ります
市民はラーメンを食べます
$ cat data/text2.txt
猿は柿をとっていました
赤ずきんは森に向かいました
$ cat data/text2.txt | python query.py --max_step 2
猿は本質をとっていました
赤ずきんは本質に向かいました
- 日本語WordNetからsqlite3形式のデータをダウンロードし、
wnjpn.db
をコードと同じディレクトリに配置してください。 requirements.txt
に記載されているライブラリをインストールしてください。pip install -r requirements.txt
分かち書きにJanomeを使い、入力文から名詞と認識された語自体と位置を取得します。次に、その語をWordNetで上位語を指定された層数まで探索します。この処理を入力文の数だけ繰り返すと、それぞれの文に、文のなかのそれぞれの名詞とその上位語の集合が求まります。この上位語の集合で共通集合をもとめると、帰納として使える上位語が取得できるので、その上位語を使って差し換えた文を出力します。
- 「〜は〜」という日本語の単文のみ対応しています。現状英文は対応していません。 これは日本語の分かち書きを採用しているためで、言語ごとに切り換え英文も使えるようにしたい。
- 対応する文法のバリエーションを増やし、複雑な文でも受け入れられるようにしたい。 ニ格ヲ格など。