itaiji-normalize v0.2.0

「渡邉」「渡邊」「渡辺」を同じ人として扱いたい。でも、根拠なく1つに決めてほしくはない。 MJ縮退マップ(IPA)を根拠に異体字を縮退し、決められないときは 決めずに理由を返す TypeScript ライブラリです。

このページの変換はすべてブラウザの中で実行しています。 入力した文字はどこにも送信しません。 ページを開いた直後に、npm 公開版の itaiji-normalize v0.2.0 (gzip 約 557 KB)を読み込みます。その後は何を入力しても リクエストは発生しません

読み込み後に発生した通信 0 件 入力しながらこの数字を見てください。増えなければ、文字はこの端末から出ていません。 ただしこれはページ自身が数えた値です——鵜呑みにしたくない場合は、 ブラウザの開発者ツール(F12)の Network タブを開いたまま操作すると、 同じことを外側から確認できます。

表示について: 異体字はお使いの環境のフォント次第で になったり、 別の字形で描かれたりします。それは表示の問題で、判定はコードポイントに対して 行っています——このページが結果に U+ の値を併記しているのはそのためです。

このデモの見方

どのボタンを押しても、確かめてほしいのは次の3つです。 各ボタンの下に「見どころ」を書いてあります。

  1. 同じ人が1つにまとまるか。 表記の違う「渡邉/渡邊/渡辺」が 同じグループに入り、代表として 渡辺 が出ます
  2. 決められないときに、決めずに理由を出すか。 ここが本題です。 候補が2つあるのに片方を選んでしまうライブラリは、選ばなかった側の利用者に対して 黙って間違えます。このライブラリは ambiguous のような理由を返して止まります
  3. 入力が外に出ていないか。 上の「読み込み後に発生した通信」が 0 件 のまま動かないこと

ライブラリを読み込んでいます…

このライブラリが「しない」こと

使う

npm install itaiji-normalize@0.2.0
import { toMatchingKey, reduce } from "itaiji-normalize";

toMatchingKey("渡邉 太郎").key;  // "渡辺 太郎"
reduce("朢").unique;             // null (候補が2つあり決められない)

依存ゼロ。データは全部同梱で、実行時に外部へ取りに行きません。 Node 18+ / ブラウザ / Cloudflare Workers で動きます。