個人情報だけを、
黒く。
Noir は、文書と「伏せたいもの」の指定を受け取り、当てはまる箇所を一覧で返す、伏せ字専用の小さな LLM です。外に出す前の文書を、社内の CPU だけで処理できます。スクロールすると、光の線が文書を横切ります。
JA担当の山田太郎です。お電話は03-0000-1234までお願いします。
ENPlease call Emily Carter at (555) 010-4477 before March 3.
DEFrau Anna Becker wohnt in der Lindenstraße 12, 10115 Berlin.
HRIvan Horvat (42 godine) javio je da je na bolovanju.
※ 文例と氏名・番号はすべて架空です。上の動きは見本の再生です。
指定は、
ふつうの言葉で。
「個人情報」「連絡先」「ただし年齢は除く」。ふだんの言い方で指定すると、同じ文書でも伏せる場所が変わります。ボタンを押すか、そのまま見ていてください。
件名:【見本商事】ご契約内容の確認
見本商事 総務部 山田太郎 様
いつもお世話になっております。株式会社ネコデータの佐藤花子です。
11月20日(金)に、ご契約の更新についてご相談させてください。月額は48,000円のままです。
ご担当の鈴木一郎様(42歳)は、腰痛のため本日はお休みと伺いました。
ご連絡は 03-0000-1234 または [email protected] まで。
送付先:東京都千代田区見本町1-2-3 見本ビル5階
※ この欄は動きの見本で、決まった答えを再生しています(実際のモデルは動いていません)。文例はすべて架空です。
120Bより、
伏せすぎない。
日本語・英語の文書100本ずつで、gpt-oss-120b(1,170億パラメータ)と同じ指示を出して比べました。上の紙は、それぞれの間違いの見本です。下の棒は、その間違いが起きた割合で、短いほど良い結果です。
※ 自社で作ったテストでの実測(2026年11月、Q4_K_M、メール・電話・URL・日付の汎用ルールを併用)。くわしい条件はページの最後に。
あいまいな指定ほど、
差が出る。
伏せ漏れの多さを、天びんで比べます。漏れが多いほうが下がります。種類をはっきり並べた指定では互角ですが、「個人情報」のようなあいまいな指定や、「ただし〜は除く」がつくと、差が開きます。
Noir0%
gpt-oss-120b0%
※ 日本語・英語の合計。伏せ漏れ率(%、1マス = 1%)。指定の内訳は、種類を並べた指定 69本、あいまいな指定 104本、除外つき 27本。
4つの言語、
それぞれの成績。
言語ごとに専用の Noir を用意しています(日本語・英語は共通)。黄色が、gpt-oss-120b より良い数字です。
- クロアチア語・ドイツ語の伏せ漏れは、gpt-oss-120b とほぼ同じです。漏れの多くは「02.11.2026」「14:12 Uhr」のような、ヨーロッパ式の日付と時刻でした。
- この形の日付・時刻を拾う規則を2本足すと、試算では漏れがクロアチア語 31→23%、ドイツ語 25→15% に下がり、gpt-oss-120b(24%・19%)を下回ります。製品への組み込みを予定しています。 予定
返ってくるのは、
JSON。
見つけた箇所を、同じものごとにまとめた一覧で返します。文書に書かれたとおりの文字列なので、そのまま本文から探して置き換えられます。
- id:同じ人・同じものは1つにまとまります(「鈴木一郎」と「鈴木」)。
- type:48種類の印の名前。指示文の言語で返ります(日本語なら「人名」)。
- mentions:文書に書かれたとおりの文字列。当てはまるものがなければ
[]。
次の文書から、対象に当てはまるものを
すべて見つけてください。…(略)
出力は JSON の配列だけ: [{"id": "E1",
"type": "...", "mentions": ["..."]}]
対象:
個人情報。ただし年齢は除く
方式: 伏せ字(replacements は入れない)
文書:
(ここに文書)1枚の文書を、
約20秒。
ノートPCの CPU(GPUなし)で、約900文字の文書を読んで、伏せる箇所を返すまでを再生します。再生は5倍速、時計は実際の秒数です。
0.0秒5倍速で再生
文書を読む伏せる箇所を書く
伏せた箇所 0 / 0
- 指定
- 人名・電話番号・メールアドレス・住所
- 読み込み
- 約140 トークン/秒
- 書き出し
- 約24 トークン/秒
- 機材
- Core i7-11800H・8スレッド
- この速さで順に処理すると、1台で1時間に約17万文字です。
- GPU で16件を同時に処理すると、100文書が約20秒でした(gpt-oss-120b は約90秒)。 社内計測
※ 文書と伏せる箇所は見本です(このページの中でモデルは動いていません)。時間は、社内で計測した読み込みと書き出しの速さから計算しています。同じ人を指す言い方は、1つにまとめて一度に伏せます。
1,000文字ずつ、
切って渡す。
長い文書は、1,000文字ほどの塊に切ってから1つずつ渡します。学習で見た長さに合わせると、取りこぼしが減ります。結果は最後にまとめて、メール・電話・URL・日付の決まった形を拾う規則と合わせます。
起動(llama.cpp)
llama-server -m noir-ja-en-Q4_K_M.gguf \ -c 16384 -t 8 -np 1 --jinja --port 8191
公開中重みをダウンロード →
- 思考モードは切り(
enable_thinking: false)、temperature 0で使います。 - 言語ごとにモデルを選びます:日本語・英語は ja-en、ドイツ語は de-en、クロアチア語は hr-en。
- CPU(Core i7-11800H・8スレッド)で、1,000文字の塊が約20秒。 社内計測
同じ文書を、
指示ひとつで塗り分ける。
見本の文書に、指示を選んで試せます。指示を変えると、同じ文書でも伏せる場所が変わります。モデルに送る指示文と、返ってくる JSON も、そのまま見られます。
1文書を選ぶ
2指示を選ぶ選ぶとすぐ実行
または、種類を自分で選ぶ
モデルに送る指示文
返ってくる JSON
[]
測り方と、
相談。
- 文書: 日本語・英語・ドイツ語・クロアチア語で各100本。メール・議事録・人事メモ・請求書・診療情報など、テスト用に作った架空の文書で、伏せるべき箇所に正解の印をつけています。
- 指定: 文書ごとに「種類の並べ方」「あいまいな言い方」「除外つき」のどれか1つ。gpt-oss-120b(reasoning effort medium)にも同じ指示文を渡しました。
- 物差し: 伏せ漏れ=正解のうち残った割合、伏せすぎ=伏せた箇所のうち不要だった割合、指定違反=指定外の種類を伏せた割合。
- 実施: 2026年11月、Q4_K_M。正式な公開前に見直します。