HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

WangNet – 1.8 MB、依存関係なしのNumberwang判定を11言語で

WangNet – 1.8 MB, zero-dependency Numberwang adjudication in 11 languages (github.com)

25 pointsby Liogra1235 コメント

要約

WangNetは、与えられた数値が「Numberwang」であるかを判定する、わずか1.8MBのJSONファイルで構成される軽量なニューラルネットワークです。推論コードはPython標準ライブラリのみで約100行であり、追加のインストールは不要です。このモデルは、数字、単語、簡単な算術式など、様々な形式の入力を11言語で解釈し、Numberwang、Wangernumb、あるいは単なる数字ではないと判定します。精度は88.9%で、特に算術演算の未知のオペランドに対する処理が弱点ですが、軽量さと多言語対応が特徴です。

全文翻訳

Numberwang Numberwangであるかどうかを判定する小さなニューラルネットワークです。モデル全体は1.8MBのJSONファイルで、推論コードは約100行の純粋なPython標準ライブラリのみです。PyTorchもNumPyも、インストールが必要なものもありません。クローンして実行してください。 $ python3 numberwang.py 22 22... THAT'S NUMBERWANG! (confidence: 99.3%) $ python3 numberwang.py "45 - 44" 45 - 44... That's Wangernumb! Rotate the board! (confidence: 100.0%) $ python3 numberwang.py "hello how are you" hello how are you... That's not even a number. It can never be Numberwang. (confidence: 100.0%) 使い方 git clone https://github.com/GraafHenk/numberwang cd numberwang python3 numberwang.py 22 引数なしで実行すると、インタラクティブセッションになります。 $ python3 numberwang.py Welcome to Numberwang! (ctrl-c to stop playing Numberwang) > zweiundzwanzig zweiundzwanzig... THAT'S NUMBERWANG! (confidence: 100.0%) > shinty-six shinty-six... That's not Numberwang. (confidence: 100.0%) Python 3.8以降が必要です。それが唯一の要件です。 独自のコードから from numberwang import load_model, wang_probabilities model = load_model("model.json") probs = wang_probabilities(model, "forty-seven") # [p_not_numberwang, p_numberwang, p_not_a_number, p_wangernumb] verdict = max(range(4), key=probs.__getitem__) 4つの判定結果 id verdict 0 That's not Numberwang. 1 THAT'S NUMBERWANG! 2 That's not even a number. It can never be Numberwang. 3 That's Wangernumb! 受け付ける入力の挙動 42, sixty-six, 12345 数字または単語 zweiundzwanzig, veintidós, tweeëntwintig 11言語、アクセントはオプション 5*2, 96 divided by 2, twelve plus four 算術、結果に基づいて判定 45 - 44, double four, eins 1または44に相当するものはボードを回転させる -7, 4.5, £5, 50%, 9:30 負数、小数、通貨、単位、時間 XLIV, twenty-third, 22nd ローマ数字と序数 fortnight, vierendelen, september 数字に基づいた単語、その数字として判定 achtneming, often, money 数字を含むだけの単語は数字ではない shinty-six, twentington 架空の数字も数字です bonjour, hello how are you 数値コンテンツなし — Numberwangにはなり得ない 数字の「wangness」は、言語ではなく数字自体の特性です。four, vier, quatre, cuatro はいずれも同じ判定結果になります。 仕組み chars → Embedding(32) → Conv1d(128, k3) → ReLU → Conv1d(128, k3) → ReLU → global max pool → Linear(128) → ReLU → Linear(4) → softmax 80,804パラメータ。 ネットワークは文字を直接読み取ります — トークナイザー、正規化器、ルールエンジンは推論時にはありません。数字、演算子、標準的な判定結果、そして11言語はすべて重みに保持されており、model.jsonにはそのすべてが含まれています。 デモ Hugging Face Spacesでホストされたバージョンが実行されています。同じデモをローカルで実行するには: pip install -r requirements.txt python3 app.py gradioはデモにのみ必要です。モデル自体はそれを必要としません。 精度 486のホールドアウトされた判定に対して88.9%(マクロF1 0.896)。上限は約98%です — 長年の判定慣行に従い、トレーニングラベルの約2%が反転しています。 class precision recall F1 not Numberwang 0.820 0.885 0.851 Numberwang 0.919 0.900 0.910 not a number 0.951 0.830 0.886 Wangernumb 0.968 0.909 0.937 未知のオペランドに対する算術演算は弱点であり、44~72%です。ネットワークは計算するのではなく記憶するため、5*2のような小さな一般的な式は信頼できますが、904 * 3は推測の域を出ません。算術の正確さが重要であれば、式を評価してその結果を渡してください。 ライセンス MIT — LICENSEを参照してください。特定の数字がNumberwangであるか否かについて、いかなる明示的または黙示的な保証もありません。