![人工知能 人工知能](https://srad.jp/static/topics/ai_64.png)
yasuokaの日記: 「昨日は誰も来なかった」の主語は「昨日」なのか「誰」なのか 8
1月3日の日記で公開したUniDic-COMBOをチューン・アップすべく、色々な文章を試しているのだが、「昨日は誰も来なかった」という文で悩みこんでしまった。現時点のUniDic-COMBO 1.0.6だと、私(安岡孝一)の手元では、以下のような結果になる。
>>> import unidic_combo
>>> nlp=unidic_combo.load()
>>> doc=nlp("昨日は誰も来なかった")
>>> import deplacy
>>> deplacy.render(doc,Japanese=True)
昨日 PRON ═╗<════╗ nsubj(主語)
は ADP <╝ ║ case(格表示)
誰 PRON ═╗<══╗ ║ obl(斜格補語)
も ADP <╝ ║ ║ case(格表示)
来 VERB ═╗═╗═╝═╝ ROOT(親)
なかっ AUX <╝ ║ aux(動詞補助成分)
た AUX <══╝ aux(動詞補助成分)
一方、1月11日の日記でも紹介したspaCy-SynChaだと、私の手元では以下の結果になる。
>>> import spacy_syncha
>>> nlp=spacy_syncha.load()
>>> doc=nlp("昨日は誰も来なかった")
>>> import deplacy
>>> deplacy.render(doc,Japanese=True)
昨日 NOUN ═╗<════╗ obl(斜格補語)
は ADP <╝ ║ case(格表示)
誰 PRON ═╗<══╗ ║ nsubj(主語)
も ADP <╝ ║ ║ case(格表示)
来 VERB ═╗═╗═╝═╝ ROOT(親)
なかっ AUX <╝ ║ aux(動詞補助成分)
た AUX <══╝ aux(動詞補助成分)
つまり、UniDic-COMBO 1.0.6は「昨日」を主語だとみなしているのに対し、spaCy-SynCha 0.8.1は「誰」を主語だとみなしているわけだ。これは、まあ、日本語の主語というのがかなり曖昧で、いわゆるトピック主語の「昨日」も、いわゆる不定称動作主語の「誰」も、どっちも気ままに使えてしまうことにあるのだろう。うーん、英語との対応を考えるなら、動作主語を優先した方がいいのだけど、古典中国語(漢文)との対応を考えるなら、トピック主語も扱いたい気がする。さて、さて、どうしたものやら。
面白いですね (スコア:1)
そもそも自然言語(?)には曖昧さがあって,話し手(書き手)が想定している主語と,聞き手(読み手)が解釈した主語が一致する保証さえないはずです.
個人的には,文章を人間が味わうなら,その個人が納得できる一つの解釈を考えるべきなんでしょうが
文章を計算機で扱うなら,多義性を数値化して,むしろ複数の解釈がありうることを示したり,その確率分布で文章を解析する方が価値があるように思います.
・昨日は花子さんは来なかった (スコア:1)
対比するなら
・昨日は花子さんが来た
ではなく、
・昨日は花子さんは来なかった
なのではないですか?
そうすると、(花子さんは病気したんだろうか)と同じニュアンスが感じられることも可能なので変えてしまったのでしょうか?
Re:・昨日は花子さんは来なかった (スコア:1)
いや、文頭に重要度を付けるという主張をしているのは理解していますが、少なくとも日本語の場合はそんな単純なものではないと思いますよ。
・昨日は花子さんは来なかった
・花子さんは昨日は来なかった
この例は短文なので初めの主語が重要度が高い解釈が順当かもしれませんがもう少し長い文になると、日本語は文末の方で「来た」(肯定)か「来なかった」(否定)が決定する文法なので、最後のほうに来る主語が文末の動詞と強力に結びつく解釈がしっくりとくる気がします。
Re:・昨日は花子さんは来なかった (スコア:1)
ええ、意味とニュアンスは区別していますよ。
私は日本語はあなたの主張するような単純なニュアンスではないといっています。
日本語はあなたの主張するような単純なニュアンスではないと私はいっています。
あなたはこのニュアンスがわかりますか?