Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allow doubling particles separated with punctuation #2

Closed
takahashim opened this issue Feb 14, 2016 · 4 comments · Fixed by #3
Closed

allow doubling particles separated with punctuation #2

takahashim opened this issue Feb 14, 2016 · 4 comments · Fixed by #3
Labels
Type: Feature New Feature

Comments

@takahashim
Copy link
Contributor

「右がiPhone、左がAndroidです。」や「ナイフで切断した後、ハンマーで破砕した。」といったように、同一の格助詞が読点で句切られている文を許容したいです。

単純には、splitSentencesの引数に使われているcharRegExpにを追加すれば良さそうですが、「なんでも読点を打てばよいというのはいかがなものか」ということもあるかと思います。その場合は間隔値の算出をポイント制にして、通常の単語は1ポイント、が間に挟まる場合は5ポイントといったような計算をするようにしてもよいかもしれません(ポイント値は適当です)。

@azu azu added the Type: Feature New Feature label Feb 14, 2016
@azu
Copy link
Member

azu commented Feb 16, 2016

なるほど。

ものすごく安直な実装だとを間隔値(+1)することで

「右がiPhone、左がAndroidです。」

"が" と "が" で間隔値は2になるのでパスできます。(デフォルトでは間隔値2以上はセーフとゆるめ)

彼女は困り切った表情で、小声で尋ねた。

この変更の仕方だと上記のような"、"の使い方も単純に間隔値が増えるのでスルーされてしまいます。("で"の間隔値が2となる)

なので、仰るとおり助詞以外の単語も含めたポイント性にしてデフォルト値をもう少しあげるなりする必要が出てきそうな気はします。(今は助詞同士のみを見てる)

以前、文中のの最大数をチェックするルールを書いた時に、を箇条書きのように使うケースは例外するようなものを入れたりしてました。
も前後のコンテキストによっての重みは違う気がしているので、その辺を考慮する仕組みがあれば両立できるのかもしれないですね。。
(単純にまだテストケースが足りてない感じがするので、色々探す必要がありそう)

@takahashim
Copy link
Contributor Author

最初にあげた2つの例は、

  • 意味的に対になるものが並立している場合
  • 文が複文になっていて、同じデ格の格助詞がそれぞれ別の動詞にかかっている場合

という、それぞれ違う許容の仕方になっているんですよね…。逆に言うと、

  • 同じ格助詞が一つの動詞に複数かかっていないか、またはかかっていても意味的に並立している場合

をチェックできるとよいのですが、そうすると単語(文節)の依存関係(係り受け)解析+格の意味解析が必要になるので、kuromojiではできなさそうです。

現状では、ある程度NGなものも許容するのは仕方ないとして、明らかにダメなものをチェックするようになるとうれしいです。以前RedPenを試してみたときの経験では、許容したいのにNGになるケースが多発するとチェッカーとして使う気力がなくなるので、false positiveは極力避けてくれれば…と思いました。

@azu
Copy link
Member

azu commented Feb 18, 2016

許容したいのにNGになるケースが多発するとチェッカーとして使う気力がなくなるので、false positiveは極力避けてくれれば

自分が書いてるルール大体この方向ですね。
強くチェックしたらいならstrict: trueしてくださいという感じにしています。

なので、を間隔値を増やす要素として追加してデフォルトをゆるやかにして、現状の挙動はstrictの方に残そうと思います。

@azu
Copy link
Member

azu commented Feb 18, 2016

ひとまず、デフォルトでは"、"を許容するようにして3.0.0をリリースしました。

続きは別のIssueを立てました #4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Feature New Feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants