設計の手順
原文を保存する
架空の通知の各行に ID、文字、空行情報を付けます。空白の変更規則も記録します。復元は文章の改作ではなく、日付や料金を補いません。
明示的な記号を先に解析する
見出し、リスト、コード囲みはコードで読みます。コマンドや表の境界を守り、文中の数字を勝手に箇条書きにしません。
曖昧な行間だけ判断する
Noul で同じ文の続きかを問い、単に関連しているかとは分けます。意味判断と結合処理を別にし、曖昧なら保留します。
ブロック作成後に分類する
できたブロックを Choice で見出し、本文、リスト、コードに分類します。前段の結果に依存するため順に処理します。原文行への対応を残します。
内容と表示を別に検査する
数字・日付・リンク・命令を照合し、見出しとスマホ表示を確認します。HTML をエスケープして原文スクリプトを実行しません。
具体例 · 本サイトの架空データ
| 観察した事実 | 判断 | コードでの処理 |
|---|---|---|
| 「金曜までに」の続きの行 | 同一文の可能性 | 行 ID を残して結合 |
| 料金と返金不可の行 | 関連しても別条項かもしれない | 境界を保持 |
| 原文に HTML | 実行命令ではない | エスケープして表示 |
コピーできる設計例
独自の例です。JSON はリクエストや入力の形、Python は架空スコアの計算のみを示します。API は実行しません。接続前に公式仕様と処理方針を確認してください。
# Offline provenance and safe-display example.
from html import escape
lines = {"L1": "Workshop notice", "L2": "Register by Friday."}
block = {"id": "B1", "source_ids": ["L2"], "kind": "paragraph"}
text = " ".join(lines[line_id] for line_id in block["source_ids"])
print(escape(text)) # Register by Friday.
# Joining and classification judgments are not performed here.判断を設計するよくある失敗
- 関連性で行を結ぶ。
- 生成文で原文を置き換える。
- 復元した HTML を実行する。
TRY / THINK / COMPARE
先に考えてから解説へ
イベントの行と返金条項を自動で結びますか?
解説を開く
同一文の続きかを確認します。曖昧なら原文の境界を残します。
提出前の確認
- 原文と行 ID を保存。
- 結合・分類・表示を分離。
- 数字とリンクを照合。
- 表示をエスケープ。
よくある質問
完全に同じ文字ですか?
空白処理を定義して検査します。本例は実測ではありません。
OCR の誤字も直しますか?
別の校正タスクとして確認します。
参考資料
公式パターンと Datawhale の実践テーマを参考に、説明・例・演習を独自に作成しています。API の実行結果や性能測定ではありません。