Closed takahashim closed 8 years ago
なるほど。
ものすごく安直な実装だと、
を間隔値(+1)することで
「右がiPhone、左がAndroidです。」
"が" と "が" で間隔値は2になるのでパスできます。(デフォルトでは間隔値2以上はセーフとゆるめ)
彼女は困り切った表情で、小声で尋ねた。
この変更の仕方だと上記のような"、"の使い方も単純に間隔値が増えるのでスルーされてしまいます。("で"の間隔値が2となる)
なので、仰るとおり助詞以外の単語も含めたポイント性にしてデフォルト値をもう少しあげるなりする必要が出てきそうな気はします。(今は助詞同士のみを見てる)
以前、文中の、
の最大数をチェックするルールを書いた時に、、
を箇条書きのように使うケースは例外するようなものを入れたりしてました。
、
も前後のコンテキストによって、
の重みは違う気がしているので、その辺を考慮する仕組みがあれば両立できるのかもしれないですね。。
(単純にまだテストケースが足りてない感じがするので、色々探す必要がありそう)
最初にあげた2つの例は、
という、それぞれ違う許容の仕方になっているんですよね…。逆に言うと、
をチェックできるとよいのですが、そうすると単語(文節)の依存関係(係り受け)解析+格の意味解析が必要になるので、kuromojiではできなさそうです。
現状では、ある程度NGなものも許容するのは仕方ないとして、明らかにダメなものをチェックするようになるとうれしいです。以前RedPenを試してみたときの経験では、許容したいのにNGになるケースが多発するとチェッカーとして使う気力がなくなるので、false positiveは極力避けてくれれば…と思いました。
許容したいのにNGになるケースが多発するとチェッカーとして使う気力がなくなるので、false positiveは極力避けてくれれば
自分が書いてるルール大体この方向ですね。
強くチェックしたらいならstrict: true
してくださいという感じにしています。
なので、、
を間隔値を増やす要素として追加してデフォルトをゆるやかにして、現状の挙動はstrict
の方に残そうと思います。
「右がiPhone、左がAndroidです。」や「ナイフで切断した後、ハンマーで破砕した。」といったように、同一の格助詞が読点で句切られている文を許容したいです。
単純には、splitSentencesの引数に使われているcharRegExpに
、
を追加すれば良さそうですが、「なんでも読点を打てばよいというのはいかがなものか」ということもあるかと思います。その場合は間隔値の算出をポイント制にして、通常の単語は1ポイント、、
が間に挟まる場合は5ポイントといったような計算をするようにしてもよいかもしれません(ポイント値は適当です)。