Closed shirayu closed 5 years ago
(ちょっとグローバルに入れないといけないのが面倒ですが)、technological-book-corpus-jaのコーパスでテストしてみました。
# ルールとコーパスをglobalへインストール
$ npm i -g . textlint technological-book-corpus-ja
# コーパスに対してルールを実行する
$ technological-book-corpus-ja | xargs textlint --rule textlint-rule-ja-no-redundant-expression -f pretty-error
ja-no-redundant-expression: "処理を行う"は冗長な表現です。"処理する"など簡潔な表現にすると文章が明瞭になります。参考: http://www.atmarkit.co.jp/ait/articles/1001/19/news106_2.html
/Users/azu/.nodebrew/node/v11.5.0/lib/node_modules/technological-book-corpus-ja/source/Hatena-Textbook/swift-development-apps.md:669:43
v
668.
669. Storyboard で設定された segue の identifier に合わせて処理を行うことができる。
670.
ja-no-redundant-expression: "することが可能です"は冗長な表現です。"することが可能"を省き簡潔な表現にすると文章が明瞭になります。参考: http://qiita.com/takahi-i/items/a93dc2ff42af6b93f6e0
/Users/azu/.nodebrew/node/v11.5.0/lib/node_modules/technological-book-corpus-ja/source/js-primer/object/README.md:60:32
v
59. オブジェクトは、一度作成した後もその値自体を変更できるためミュータブル(mutable)の特性を持ちます。
60. そのため、作成したオブジェクトに対して、後からプロパティを追加することが可能です。
61.
^
これとかは少し意味がおかしくなりそうなケースですね。 (たしかこういうのがありそうなので、確実だろうという感じの少し冗長なtokenに限定してたんですよね。)
ご確認ありがとうございます.
このPRの直接の影響は前者の処理を行うことができる
-> 処理をできる
ですね.
このルールでは 処理をすることができる
に修正されます.
「を行う」を「する」に置換すると「することができる」になってしまい,文法的には変ではないですが,まだ冗長ですね.
「〜を行うことができる」を「〜できる」に修正するルールを先に適用するのがよいのでしょうか?
後者の追加することが可能です
の検出は問題ないのではないでしょうか?
(この例を見て関連issueを思いついたので別途 #7 として立てました)
あ、前者は問題なかったですね。 後者もメッセージ的にそのまま置換すると変と思ってたのですが、自動修正はされないので大丈夫でした。
ja-no-redundant-expression: "オペレーションを実行"は冗長な表現です。"オペレーションする"など簡潔な表現にすると文章が明瞭になります。参考: http://www.atmarkit.co.jp/ait/articles/1001/19/news106_2.html
/Users/azu/.nodebrew/node/v11.5.0/lib/node_modules/technological-book-corpus-ja/source/Introduction-to-Add-on-Development-in-Blender/chapter_02/02_Register_Multiple_Operation_Classes.md:135:41
v
134.
135. その後 ```self.report()``` メソッドを用いて、ユーザに対してオペレーションを実行した後に、オブジェクトを拡大・縮小したことがわかるようなメッセージをスクリプト実行ログに出力します。ここで、```execute()``` メソッドの引数である ```self``` は、オブジェクトのインスタンスです。
136. ^
"実行" -> "する" だと、これ"オペレーションするした"ですが、fixはされないから平気か。
📝 明日もう一度チェックしてみます。 エラー検出が増える変更なので、メジャーアップデートする感じになると思います。
後、mecabの特性的に半角の記号がサ変接続となるらしいです。
(まあ現実的にはtypoか!
みたいにコードにするので誤検知にはなりにくい気もしますが)
次のケースは"$1を実行"が適当なんじゃないかなと思いました。 {処理, プログラム, テスト}を実行する
そうですね.コト(事態)ではなくモノ(物体)を指す場合は「〜を実行」でも問題なさそうですね.
(「事態」か「物体」かどちらの用法であるかの判定は「事態性判別」というテーマで研究されています. http://cl.sd.tmu.ac.jp/~komachi/papers/jnlp2010-eventnoun.pdf なお,「お茶する」の「お茶」や,「チンする」の「チン」のように,サ変名詞ではないけれど事態を表す場合というのも有りえます)
サ変接続 だけど する にしにくい例外ルールを定義できるようにするとかですかね
はい,簡易的には例外を指定できるようにするのがよさそうですね.
どのようにオプション化するのがいいかはちょっと悩みどころですが、次の感じが愚直ですかね。 少し冗長すぎる感じはしますが…
id
のような 名前をつけるid
に対して
disable
、デフォルトfalse
)有効/無効化できるようにする(アップデートが大変な場合も多そうなので、マイグレーション的にON/OFFできるように)allow
、デフォルト[]
or ["ソフトウェア"]
など)を指定できるようにするExample
module.exports = [
{
id: "$1を実行",
message: `"$1を実行"は冗長な表現です。"$1する"など簡潔な表現にすると文章が明瞭になります。`,
url: "http://www.atmarkit.co.jp/ait/articles/1001/19/news106_2.html",
tokens: [
{
"pos": "名詞",
"pos_detail_1": "サ変接続",
"_capture": "$1"
},
{
"surface_form": "を",
"pos": "助詞",
"pos_detail_1": "格助詞",
"pos_detail_2": "一般",
"pos_detail_3": "*",
"conjugated_type": "*",
"conjugated_form": "*",
"basic_form": "を",
"reading": "ヲ",
"pronunciation": "ヲ"
},
{
"surface_form": "実行",
"pos": "名詞",
"pos_detail_1": "サ変接続",
"pos_detail_2": "*",
"pos_detail_3": "*",
"conjugated_type": "*",
"conjugated_form": "*",
"basic_form": "実行",
"reading": "ジッコウ",
"pronunciation": "ジッコー"
},
]
}
]
.textlintrc
:
{
"rules": {
"ja-no-redundant-expression": {
"dictionary": {
"$1を行う": {
"disable": true
},
"$1を実行": {
"allow": ["ソフトウェア"] // 含まれているなら無視
}
}
}
}
}
現状の辞書自体は人によっては少しfalse positiveがありますが、辞書自体には問題ないのでこのままマージして、別PRで制御できる仕組みを追加するとかですかね。
リンク先の趣旨にのっとり,より多くの表現がマッチするように変更