textlint rule check doubled joshi
npm install textlint-rule-no-doubled-joshi1つの文中に同じ助詞が連続して出てくるのをチェックするtextlintルールです。
文中で同じ助詞が連続すると文章が読みにくくなります。
例) でという助詞が連続している
> 材料不足で代替素材で製品を作った。
で という助詞が1つの文中に連続して書かれていため、次のようなエラーが報告されます。
``
一文に二回以上利用されている助詞 "で" がみつかりました。
次の助詞が連続しているため、文を読みにくくしています。
- 不足"で"
- 素材"で"
同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
`
OK:
``
私は彼が好きだ
オブジェクトを返す関数を公開した
これがiPhone,これがAndroidです。
言うのは簡単の法則。
NG:
`obj.method
私は彼は好きだ
材料不足で代替素材で製品を作った。
列車事故でバスで振り替え輸送を行った。
法律案は十三日の衆議院本会議で賛成多数で可決され、参議院に送付されます
これはは何をしているかを示します。`
これとあれとそれを持ってきて。
npm install textlint-rule-no-doubled-joshi
Via .textlintrc(推奨)
`json5`
{
"rules": {
"no-doubled-joshi": true
}
}
Via CLI
``
textlint --rule no-doubled-joshi README.md
.textlintrc options.
`json5`
{
"rules": {
"no-doubled-joshi": {
// 助詞のtoken同士の間隔値が1以下ならエラーにする
// 間隔値は1から開始されます
"min_interval" : 1,
// 例外を許可するかどうか
"strict": false,
// 助詞のうち「も」「や」は複数回の出現を許す
"allow": ["も","や"],
// 文の区切り文字となる配列
"separatorCharacters": [
".", // period
".", // (ja) 全角period
"。", // (ja) 句点
"?", // question mark
"!", // exclamation mark
"?", // (ja) 全角 question mark
"!" // (ja) 全角 exclamation mark
],
"commaCharacters": [
"、",
"," // 全角カンマ
]
}
}
}
- min_interval: 助詞の最低間隔値1
- Default: min_interval
- 指定した以内にある同じ助詞は連続しているとみなされますstrict
- 指定した間隔値以下で同じ助詞が出現した場合エラーが出力されます
- ⚠️ あまり変更を想定してないので、変更した場合は意図通りに動かない場合があります
- : 厳しくチェックするかどうかfalse
- Default: true
- 下記参照。例外として許容しているものもエラーとするかどうか
- にすると誤検知が発生しやすくなりますallow
- : 複数回の出現を許す助詞[]
- Default: "も"
- 並立の助詞など、複数回出現しても無視する助詞を指定します
- 例) を許可したい場合は { "allow": ["も"] }separatorCharacters
- : 文の区切り文字の配列[".", ".", "。", "?", "!", "?", "!"]
- Default: separatorCharacters
- を設定するとデフォルト値は上書きされます。
- のみを文の区切り文字にしたい場合は。{ "separatorCharacters" : ["。"] }のように指定しますcommaCharacters
- : 句点となる文字の配列["、", ","]
- Default:
- 読点として認識する文字の配列を指定します
- 読点は間隔値を+1する効果があります
修正方法としては、次のようなものがあります。
- 助詞の書き間違いなので、別の助詞に置き換える
- 例) 私は彼は好きだ → 私は彼が好きだ
- 複数のことを1つの文で書いている可能性があるため、助詞が連続している文を分割する
- 1文でまとめようとして、無理やり助詞で文を繋いでいる可能性があります
- 文自体を分けることで、同じ助詞が連続していることがなくなります
- 例) https://github.com/asciidwango/js-primer/pull/1598#discussion_r1110939474
- 助詞で無理やり文を繋げている可能性があるので、文の中で順番を入れ替える
- 助詞で文の中身を無理やり繋げようとしていて、使える助詞の選択肢が狭くなっている可能性があります
- 文の流れを箇条書きなどにして整理してみてください
- 例) https://github.com/asciidwango/js-primer/pull/1594#discussion_r1110973573
- 助詞が不要なら削除して、文を簡潔にする
- "実際に" などのように強調的な言葉を削除することで、助詞が不要になる可能性があります
- 技術文書では簡潔な文章を心がけることが多いため、強調的な単語自体を削除することもあります
- 日本語としても意味が通り、一般的な用法なのにエラーとなった
- ルールの実装に問題がある可能性があります
- 例文とともにIssueを作成してください
また、allowオプションで、特定の助詞が連続して出てくることを許可できます。
文自体を直す余地がない場合は、コメントなどを使ってエラーを無視してください。
ある助詞(かつ品詞細分類)が、最低間隔値(距離)以内に連続して書かれている場合をエラーとして検出します
> 材料不足で代替素材で製品を作った。
この文中の助詞 で 同士の間隔値 は 1 となります。min_interval
デフォルトの最低間隔値()は1となるなるため、このケースはエラーとして判定されます。
> これはペンです。これは鉛筆です。
この文は句点(。)によって2つの文として認識されます。は
そのため、それぞれの文中での助詞は1度のみの出現となりエラーとはなりません。
句点となる文字列は separatorCharacters オプションで指定できます。
このルールが助詞として認識するものは、次のサイトで確認できます。
> これがiPhone、これがAndroidです。
読点文字(、)が助詞の間にある場合、間隔値は+1されます。が
そのため、助詞の間隔値は2となりデフォルトではエラーとなりません。
読点文字は commaCharacters オプションで指定できます。
> 次のescapeHTML関数はタグ関数です(詳細は文字列の章を参照)
括弧((や))が助詞の間にある場合、間隔値は+1されます。は
そのため、この例の助詞の間隔値は2となりデフォルトではエラーとなりません。
括弧記号はkuromoji.jsで定義されている記号を元に判定しています。
以下の項目については、曖昧性があるため助詞が連続していてもデフォルトではエラーとして扱いません。
設定が { strict: true } ならばエラーとして報告されますが、デフォルトでは{ strict: false } となっているのでエラーとして報告されません。
"の" の重なりは例外として許可します。
- 第8回:読みやすさへの工夫 3(てにおは助詞) - たくみの匠
- 作文入門
- "の" の消し方について
> オブジェクトを返す関数を公開する
"を" の重なりは例外として許可します。
> 試していただいて
接続助詞 "て" の重なりは例外として許可します。
> 登ったり降りたりする
並立助詞(たり)が連続するのは、意図した助詞の使い方であるため許可します。
> これにするかどうか検討する
助詞(か)が連続していますが、"〜かどうか"の表現は一般的であるため許可します。
📝 次のように書き換えることで、助詞が連続していない形にできます。
> これにするかを検討する
- Issue: 質問: ~かどうか、について · Issue #62 · textlint-ja/textlint-rule-no-doubled-joshi
- 文節中の「か」の用法
- かどうか/疑問詞・・・か
- 連語(助詞) - 修飾語 - 品詞の分類 - Weblio 辞書_1 "連語(助詞) - 修飾語 - 品詞の分類 - Weblio 辞書")
連語は一つの助詞の塊として認識します。
``
OK: 文字列の長さを正確に測るにはある程度の妥協が必要になります。
NG: 文字列にはそこには*問題がある。
その他の助詞も例外として扱いたい場合は allow オプションを利用します。
デフォルトでは次の文はエラーとなる。
> 太字も強調も同じように無視されます。
オプションで"allow": ["も"]を指定することで、もを例として扱うことができます。
`json5`
{
"rules": {
"no-doubled-joshi": {
// 助詞のうち「も」は複数回の出現を許す
"allow": ["も"]
}
}
}
npm test
- Doubled Joshi Validator · Issue #460 · redpen-cc/redpen
- 事象の構造から見る二重デ格構文の発生
- 第8回:読みやすさへの工夫 3(てにおは助詞) - たくみの匠
- (Microsoft Word - JCLWorkshop2013_2\214\303\213{.doc) - JCLWorkshop_No3_02.pdf - JCLWorkshop_No3_02.pdf")
- 助詞の連続使用を避け分かりやすい文章を書こう! - 有限な時間の果てに
- 作文入門
- 形態素解析ツールの品詞体系
- Redpenの実装
- azu/kuromojin a wrapper of kuromoji.js
- azu/sentence-splitter
1. Fork it!
2. Create your feature branch: git checkout -b my-new-featuregit commit -am 'Add some feature'
3. Commit your changes: git push origin my-new-feature`
4. Push to the branch:
5. Submit a pull request :D
MIT