英語 翻訳プログラム 文型判断ロジック その2

文型の分類をするため、プログラムのアルゴリズムを考えながら英語文型を学習しています。

第2文型 SVC、第3文型 SVOの判断をするために、2つは何がちがうのかを調査しました。

SVC,SVOなのだから、3つ目の「C」、「O」で判断できないことは以前書きました。
こちら → 英語 翻訳プログラム 文型判断ロジック その1

では、どうするか?

主語は名詞なので、判断には使えそうにありません。

残るは、動詞です。

第2文型と、第3文型の例文を見比べてみます。

良く見ると、第2、第3文型では、動詞の種類が違っていることに気が付きました。

わかりやすいのが第3文型

第3文型の動詞は目的語が必要です。

目的語がないと何を伝えたいのか、わかりません。

I want a pen.

第3文型の動詞は補語をとらない他動詞で、

第2文型の動詞は補語をとる自動詞という違いがあるようですね。

知らなかった。授業でたぶん耳には入っていただろうけど、スルーでしたな。

自動詞、他動詞という言葉自体が嫌いで、すごく違和感満載なので昔からこの区別は嫌いでした。

自、他という置き換えがあまりピンときません。

この場合の意味は、自:大体自分だけでできるよ。他:他の人(単語)に頼らないとできないよ。

という意味の置き換えかなと思いますが。まぁでも、コンパクトに収めようとすると

仕方ないかもしれないですね。

呼び方はいいとして、文型によって変わるということは、アルゴリズム構築にとっては

良い条件です。

ここから、自動詞なら第2、他動詞なら第3という判定ができそうです。

単語リストに自動詞、他動詞のタグをつけて分類してリスト化しておき、

読み取った動詞がどっちかで文型を判断します。

あとは、確か自動詞にも他動詞にもなる「ヤツ」がいたはずなので、

この判別ができればなんとか動くものが作れそうです。

自動詞、他動詞にもなる「ヤツ」は下に記載したようなものがあります。

・Run 走る、経営
・Move 動く、動かす
・Stand 立つ、我慢する

例えば、こんな文章があったとして、どう判断するか?

①I run in the park.
②I run my company.

①の私は走るのみで、第2文型の特徴である、S=Cではない、

「in the park」は主語「I」のことではないので、第1文型。

②のrunは他動詞の経営する、なので、何を?の目的語が必要になり、第3文型。

人間ならこんな風に考えますが、プログラムにどう判断させるか?

う~ん、人間と同じように判断するしかない気がします。

つまり、runの後ろの名詞で判断する。

動詞がrunで、後にparkがきたら→走る、companyがきたら→経営する という風に。

となると、runなどのややこしい単語が来た時点で、プログラムとしては条件分岐して、

動詞の後の名詞により、動詞の訳を変えるとなります。

ということは、名詞の数だけリストとしてデータを登録しないといけない。

いやぁ、名詞登録するだけでもかなりのボリュームだし、漏れそうなのでやりたくないなぁ。

多分全部は無理なので、漏れる前提でやってみよう。