prolog二分木における副詞の扱い

副詞の扱いに問題があることが判明した。例えば、「ロボットとともに人工知能も注目された」という二分木がこんな感じになってしまう。

testdoc(testline_0_0,
    node(と,
        [[ロボット, 'C:人工物-その他'], ともに],
        node(も,
            [[人工, 'C:抽象物'], [知能, 'C:抽象物']],
            node([],
                [[[注目, 'C:抽象物'], [さ, 'V:する']], れた],
                [ ]
            )
        )
    )
).

これがおかしいのは、「ロボットともに」が左の葉で、ノード値が「と」になっていることだ。もともと、「ロボットとともに」が一つの句の中にあったのに、「と」が助詞で、ノード値に入れられたのちに、副詞の「ともに」が現れ、副詞は一般に左右の葉の値となるものなので、ロボットに継ぎ足されたのである。

一般の副詞の場合、例えば次のようになる。

testdoc(testline_0_0,
    node(の,
        node(には,
            [広場, 'C:場所-施設'],
            かなり
        ),
        node(が,
            [人, 'C:人'],
            node([],
                [[集まって, 'V:集まる'], いた],
                [ ]
            )
        )
    )
).

この場合、「かなり」が副詞で、右の葉に入っていて、不自然さはない。

そこで、すでに、助詞がノード値として入っているときに副詞があらわれたら、それはノード値につなげるようにした。もともと、ノード値は、基本的に、体言や用言のリーフ値をつなげるものなので、品詞で厳密に分けているのではないから、それでいい。

そのようにフォーマットを変えると、次のようになる。

testdoc(testline_0_0,
    node(とともに,
        [ロボット, 'C:人工物-その他'],
        node(も,
            [[人工, 'C:抽象物'], [知能, 'C:抽象物']],
            node([],
                [[[注目, 'C:抽象物'], [さ, 'V:する']], れた],
                [ ]
            )
        )
    )
).

大きな問題はない。これでいこう。ただ、もう少し改定点がまとまってから、wikipediaやtwitterの作り直しをやろう。