Skip to content

Releases: nwiizo/suiko

v0.3.8

Choose a tag to compare

@nwiizo nwiizo released this 17 Sep 10:05
e9b3655

一つの名詞に長い連体修飾節が前置された文を見直せるようになりました。読解負荷レーン(--reading-load)のlong_attributive_spanが、述語を2つ以上含む30字以上の修飾節が一つの実質名詞に係り、その名詞句が主節の項になる文をinfoで指さします。「〜すること」「〜する必要がある」のような形式名詞・枕の名詞と、「〜という関係である」の述語名詞は対象外です。削除済みのnested_attributive(連体形の個数)とは異なり、一つの名詞が背負う修飾節の長さと述語数を測ります。

採用の経緯と実測(ラベル付きサンプル fire 10/10・silent 0/10、書籍原稿4,653文で2件、青空文庫の随筆2,923文で1.5%、外部の人間文書25,274文で0.49%)は校正記録に記録しています。suiko-eval sweep --rule long-attributive-spanで閾値を校正できます。

README、Agent Skill、カタログ(B2/B5)、revision-guide、translationese、manual-checklistも更新しました。JSONの形式、既存の設定、Rust公開型Findingのフィールドは変わりません。disabled_rules = ["long_attributive_span"]で無効化できます。旧版のbaselineはv0.3.8で作り直してください。

検証: 全133テスト、fmt、Clippy、境界fixtureの読解負荷0件、配布パッケージのビルド。

v0.3.7

Choose a tag to compare

@nwiizo nwiizo released this 14 Sep 01:26
b668476

プロジェクト固有の言い回しを、活用形も含めて探せるようになりました。.suiko.tomlword_rulesで表層・基本形・品詞を指定すると、custom_wording/<id>として原文範囲と確認理由を返します。個別許可、前回比較、終了コード、GitHub注釈・SARIFにも対応します。

短い主題の直後の読点を見直すshort_topic_commaを追加しました。--experimental限定のinfoで、自動修正は付きません。採用理由と実文書での検証の限界は比較調査に記録しています。

READMEの設定例とインストール手順も更新しました。既存の設定、通常ルールのJSON、Rust公開型Findingのフィールドは変わりません。旧版のbaselineはv0.3.7で作り直してください。

検証: 全132テスト、fmt、Clippy、配布パッケージのビルド。活用形、除外範囲、Unicode位置、ID別の許可・前回比較、JSON・CI出力、既存の公開型を確認しました。

v0.3.6

Choose a tag to compare

@nwiizo nwiizo released this 13 Sep 14:30
0c90072

技術文書の文末・ダッシュの反復をまとめて読み直せるようになりました。--genre techで、同じ節の5文以内に3回ある反復をinfoとして示します。自動修正は付けず、必要な比較や挿入は残せます。

比喩的な言い回しの確認候補を--genre tech --experimentalへ追加しました。形態素解析による検出方法、採用理由、実文書での点検と限界をeval/technical-wording.mdに記録しています。

依存関係はquick-xml 0.42.0、ureq 3.4.1、zip 8.6.0、encoding_rs 0.8.41、jiff 0.2.37、toml 1.1.6、actions/checkout v7へ更新しました。HTTP取得とDOCX読み取りのAPI変更にも対応しています。

検証: 全121テスト、ラベル付き評価24項目、fmt、Clippy、Actionlint。辞書の取得・展開とSHA-256、HTTPのリダイレクト・文字コード・取得失敗、DOCXの日本語・文字参照・段落を確認しました。

互換性: JSONの形式は不変です。新しい通常ルールは--fail-on infoの終了コードに影響する場合があります。旧版のbaselineはv0.3.6で作り直してください。

v0.3.5

Choose a tag to compare

@nwiizo nwiizo released this 08 Sep 11:06
7864ac5
  • academiclexical-audit を追加し、学術稿の構成・引用・提出成果物と、語彙・表記の確認に対応しました。
  • 独立した否定表現と「ではなくなる」の誤検出を修正しました。
  • 技術文書向けの実験的な診断を追加し、抽象名詞と動詞の組み合わせ、技術用語の比喩、説明予告の反復を確認できるようにしました。
  • similarity-rs を使い、Markdown 抽出・見出し正規化・形態素の検出結果生成の重複を整理しました。

既存の lintoutlineterms の JSON 形式は変わりません。旧版の baseline は 0.3.5 で作り直してください。

変更の詳細は CHANGELOG を参照してください。

v0.3.4

Choose a tag to compare

@nwiizo nwiizo released this 31 Aug 02:37

形態素解析で読み直し候補を列挙し、解釈はAIまたは人に残す方針を強化したリリースです。

  • 実験的な反復・箇条書き・指示範囲の候補を5カテゴリ追加
  • 抽象的な内容と「持つ」の組み合わせを3つの形態素列に限定して列挙
  • 参考文献見出し以下を本文外として扱うよう改善
  • 重複findingと二重否定の誤検出を抑制
  • 評価・辞書取得処理と重複コードを整理

公開JSONの形は変わりません。旧版のbaselineはv0.3.4で作り直してください。

v0.3.3

Choose a tag to compare

@nwiizo nwiizo released this 25 Aug 00:04

追加

  • 抽象的な対象を「地図」「羅針盤」などで説明する箇所を、具体的な判断対象・判断基準・効果へ書き換える候補として示す abstract_metaphor を追加
  • Agent Skillで @textlint-ja/textlint-rule-preset-ai-writing を可能な場合に別検査として実行。プロジェクト側の設定を優先し、未設定時は固定バージョンの補助スクリプトを使用

互換性

公開JSONの形と通常実行の終了コードは変わりません。--fail-on info を使う場合は、新しい abstract_metaphor によって終了コードが変わることがあります。旧版のbaselineはv0.3.3で作り直してください。

v0.3.2

Choose a tag to compare

@nwiizo nwiizo released this 21 Aug 06:21

追加

  • stats.rhythm.sentence_endings に文末分類の件数と最長連続数を追加
  • 実験的検出器 repeated_sentence_modeconsecutive_nominal_endings を追加

公開 JSON は追加のみで、既存フィールドは変更していません。新しい finding は --experimental 指定時のみ出力されます。

v0.3.1

Choose a tag to compare

@nwiizo nwiizo released this 20 Aug 14:36

baseline比較と配布経路を修正するパッチリリースです。

修正

  • nominal_ending を文書単位findingとして比較し、文数・文字数だけが変わった場合は persisting と判定します。finding自体が消えた場合だけ resolved になります(#3)。

配布

  • v0.3.1 を crates.io と GitHub Releases の両方へ公開し、cargo install suiko で最新の挙動を導入できるようにしました(#2)。
  • macOS(Apple Silicon / Intel)、Linux(x86_64 / aarch64)、Windows(x86_64)のビルド済みバイナリは順次添付されます。

互換性: 出力JSONの形は不変です。nominal_ending の状態が変わらない文書では、baseline分類だけが resolved + new から persisting へ変わります。

v0.3.0

Choose a tag to compare

@nwiizo nwiizo released this 18 Aug 15:51

テーマは「経験則の閾値と語彙を実測校正へ置き換える」。現代の人間文書81件を再現可能に取得・検証する基盤を作り、その実測でデフォルトの検出器構成を見直しました。

ハイライト

  • 実測に基づくデフォルト構成の見直し: 現代人間dev 75文書での校正により、low_lexical_diversity_ttr(文書長への構造依存。50k語の白書でTTR=0.094、fpr 0.613)、repeated_sentence_lead(絶対回数閾値の長さ交絡、fpr 0.613)、low_lexical_diversity_mtld(全候補閾値でAI検出0)の3検出器をEXPERIMENTAL(デフォルト無効、--experimentalで利用可)へ降格しました。判断ルールは eval/annotation-guide.md に事前登録し、全実測は eval/calibration.md に記録しています
  • suiko-eval calibrate / vocab: 人間fprのWilson 95%上限を制約にした閾値探索と、禁止語・誇張語彙の人間/AI出現実測(対数頻度比つき)。--external で非コミットの外部取得文書をSHA-256照合のうえ評価に使えます
  • 新検出器: redundant_light_verb(サ変名詞+「を行う」の遠回し。安全なsuggestion付き、実コーパス真陽性15/15)と、読解負荷レーンの no_comma_sentence(読点ゼロの60字以上の日本語散文。岩淵悦太郎編『悪文』・本多勝一『日本語の作文技術』の句読法に基づく)
  • ビルド済みバイナリ配布: macOS(Apple Silicon / Intel)、Linux(x86_64 / aarch64)、Windows(x86_64)の5ターゲットを各リリースへ添付します
  • コーパス取得基盤: eval/sources.toml(人間93ソース、coji/natural-japanese@0f1cc1c 由来・MIT出典明記)、scripts/fetch-corpus.py(本文非コミット・SHA-256 lock記録、81/81件成功)、青空文庫の随筆12件の追加とholdout splitの初充足

変更

  • low_lexical_diversity_ttr / low_lexical_diversity_mtld / repeated_sentence_lead はEXPERIMENTALになりました。--experimental を付けない実行のfindingsからは出力されません
  • 「のではないでしょうか」を forbidden_phrase の弱シグナル(severity info)へ変更(現代人間6/65文書の実測)
  • low_specificity の緩和候補 -0.10 は実測fpr 0.133で棄却し、-0.15 を維持

互換性: 出力JSONの形は不変です。デフォルト実行では上記3カテゴリのfindingが出なくなります(--experimentalで従来どおり)。--baseline 比較では、旧baselineに含まれる3カテゴリのfindingがresolved扱いになる場合があります。

導入

cargo install suiko

またはこのリリースに添付されたビルド済みバイナリを使ってください(各アーカイブに .sha256 付き。macOSは検疫属性の解除が必要です。詳細はREADME)。

詳細は CHANGELOG.md を参照してください。

suiko 0.2.0

Choose a tag to compare

@nwiizo nwiizo released this 18 Aug 07:14
cargo install suiko

ハイライト

  • cargo install suiko を復旧した。crates.io未公開のsudachi.rsを、Apache-2.0の条件に従った非公式再配布crate suiko-sudachi 0.6.11として公開し、git依存を解消した。上流が公式にcrates.ioへ公開した時点でそちらへ乗り換える
  • 形態素解析器をLindera/IPADICから sudachi.rs v0.6.11 + SudachiDict 20260723 core(Mode C)へ切り替えた。辞書はビルド時に一度だけSHA-256固定で取得して埋め込み、実行時のダウンロードなしを維持する。回帰fixture上の検出差はlow_specificityの1件だけだった

追加

  • finding位置のspan。行、Unicode scalar数えの列(1始まり)、行内UTF-8 byte範囲(半開区間)を持ち、同じ表現が一行に複数あっても一意に指せる
  • 機械的に安全と確認した縮約だけを出すsuggestion(現在は「〜することができる」→「〜できる」の1種)。preimageが原文と一致する場合だけ付与し、Suiko自身はファイルを書き換えない
  • lint --format github(GitHub Actionsのworkflowコマンド注釈)とlint --format sarif(SARIF 2.1.0、columnKind: unicodeCodePoints
  • terms --audit。複数ファイルの用語候補を集計し、SudachiDictの正規化表記で表記揺れ(サーバー/サーバ等)を一覧化する読み取り専用レポート
  • 複数ファイルの--baseline。前回のlint --json出力(配列)をそのまま渡し、file完全一致で照合する。追加ファイルはbaseline.file_status = "added"、削除ファイルはstderr警告、genre・--experimental・Suikoバージョンの不一致は実行エラー。全recordへsuiko_versionを追加した
  • 局所AIパターン4カテゴリ: bullet_bold_labelbullet_emojipredicate_colon_lead(形態素で名詞ラベルと区別)、hype_expression(info確認候補)
  • 参考文献リスト行([1] …[^1]: …)とコード注釈行(#A …)を本文からマスクし、抑制行数をstats.maskingへ出力
  • 読者観測値stats.readability(平均文長、動詞・助詞比率、文字種比率)。難易度スコアは校正データが揃うまで実装しない
  • 評価基盤: corpus.toml[[sample]]正解ラベル(29件・13カテゴリ)とsuiko-eval labeled、sweep 6ルール、Wilson 95%区間・分母・low_n・評価集合の版(manifest SHA-256)の出力、split = dev/holdout契約(sweepはdevのみ)、eval/annotation-guide.md
  • Agent Skill導入の検証(scripts/verify-skill-install.shと構造テスト)、辞書取得のscripts/fetch-dictionary.sh

変更

  • antithesis_repetitionrepeated_sentence_leadを文書単位の集約findingへ変更した。件数は「一致した箇所の数」ではなく「反復状態の数」を意味し、全対応箇所はrelated_linesで示す。母数は一致数で統一した
  • translationese_morphを「が」型だけに絞った。「は」型(ことはできない)と使役型(させることができる)は、技術書翻訳21件の正解ラベル(言い換えが妥当14%)に基づき対象外にした
  • 禁止語は行ごとの最初の1件ではなく、行内の全出現を報告する
  • 用語集・FAQの定型フィールド(ラベル+コロン、Q./A.)を散文の無意識な反復と区別する
  • 校正fixtureの期待値はAI的な文書21件(--experimental 29件)、自然な文書0件

互換性

  • 公開JSONは追加フィールドのみ(spansuggestionsuiko_versionbaseline.file_statusstats.maskingstats.readability)。既存フィールドは不変
  • crates.ioの0.1.0は切り替え前のLindera/IPADIC版。検出結果は0.2.0と異なる
  • バイナリは埋め込み辞書(約207MB)を含むため200MB台になる

ライセンス・出典

  • sudachi.rs、SudachiDict(いずれもApache-2.0)、評価コーパスの青空文庫テキストの表示はTHIRD_PARTY_NOTICES.mdにまとめた

Full Changelog: ec58d80...v0.2.0