ディープラーニング A to Z · 3-5

テキスト — 文字が数値ベクトルになるまで

コンピュータにとって「초파리」(ショウジョウバエ)は最初から数値である。文字ごとに決まった番号(ユニコード)があり、その番号をバイトとして保存する。ニューラルネットワークに入れるには、文をトークンに分け、トークンごとに番号を付け、番号を意味を持つベクトル(埋め込み)に変え、順序の情報を加えなければならない。36文の小さな韓国語コーパスで、すべての段階を自分で計算する。

11,172字組み合わせで作れる現代ハングル音節 (19 × 21 × 28)
3バイトハングル1文字のUTF-8でのサイズ
10 → 3個「초파리가 꽃을 좋아한다」(ショウジョウバエは花が好きだ)のトークン数 (BPEのマージ0回 → 60回)
0.970「초파리는」と「모기는」(ショウジョウバエは/蚊は)の埋め込みのコサイン類似度
36文このページのコーパス(韓国語)
2本Colabですぐ動かせるコード
1ユニコード

ユニコード — 文字ごとに付いた番号、そしてバイト

ハングル音節の番号 = 0xAC00 + (初声 × 21 + 中声) × 28 + 終声ユニコード標準 3.12節

例文
2トークン分割

トークン分割 — 文字でも単語でもない「よく出てくる断片」

文字単位で分けるとトークンが多くなりすぎ、単語単位で分けると初めて見る単語を扱えない。BPEはコーパスで最もよく隣り合って出てくる2つの断片を1つにマージすることを繰り返し、その中間を見つける。

マージ回数
文
3トークン番号

トークン番号 — 辞書の何番目の枠か

BPEで60回マージした後、コーパスに出てくるトークンを集めると辞書になる。トークンごとに辞書の枠番号が付く。辞書にないトークンは「不明」の番号を受け取る。

文
4埋め込み

埋め込み — 番号を「意味を持つ座標」に

番号54と55は隣り合う番号だが、意味はまったく関係がない。そこで番号ごとに複数の枠を持つベクトルを付ける。似た使われ方をする単語どうしが近い座標を持つようにするのが目標だ。ここでは「同じ文の中で±2語以内に一緒に出てきた回数」から、55個の単語それぞれに8次元のベクトルを作った。

単語

初心者のための解説

「一緒に出てくる単語が似ていれば意味も似ている」という考えは古くからある。単語と文書の出現表を特異値分解で縮約し、隠れた意味構造を見つける潜在意味解析(LSA)が代表的な初期の手法である [R2]。このページでは、単語どうしが一緒に出てきた回数の表に log(1 + 回数) を取り、固有値分解で8次元を取り出した。今日の言語モデルは、埋め込みを次のトークンを当てる学習の一部として同時に学ぶ。セクション5の位置情報もこのベクトルに加える。

5位置情報

位置情報 — トークンの袋では順序がわからない

トークンを順序なしに袋に入れて数えると(トークンの袋)、順序が消える。韓国語は助詞が役割を示すので、語順が変わっても意味が同じことが多いが、いつもそうとは限らない。

比較
6モデルの処理

モデルが処理する方法 — 次のトークンの確率

テキスト → トークン → 番号 → ベクトル(+位置) → トランスフォーマー(3-8) → 次のトークンの確率。最も単純な言語モデルは、直前の単語だけを見て次の単語を数える。このコーパスで実際に計算してみて、トランスフォーマーがさらに何をするのかを見る。

直前の単語

Colabコード — このページを自分で実行してみる

どちらのコードも、Colabに標準でインストールされているライブラリだけを使う。「ノートブック(.ipynb)をダウンロード」したあと、Colabでファイル → ノートブックをアップロードで開くか、コピーして新しいノートブックのセルに貼り付ける。

コード1 · 文字が数値になるまで — ユニコード、トークン、番号、埋め込みセクション1〜6と連動 · numpy, matplotlib · CPU 1秒

ユニコード・UTF-8、ハングル字母の公式、BPEの学習と適用、トークン番号、共起回数から作った埋め込み、直前の単語からの確率を、ライブラリなしで計算する。自分のデータに替えるには CORPUSを置き換える。

実行結果 (2026-10-03 実行、Python 3.12 · numpy 2.4 · CPU)。計算に乱数を使わないので、いつ実行しても同じ結果になる。
コード2 · scikit-learnで同じ流れ — トークン番号、文ベクトル、似た文セクション2・3・4と連動 · numpy, scikit-learn · CPU 1秒

実務用ライブラリで文を「文 × トークン」の行列に変え、単語単位と文字断片単位を比べ、TF-IDFと潜在意味解析で似た文を探す。

実行結果 (2026-10-03 実行、scikit-learn 1.8 · numpy 2.4 · CPU)。TruncatedSVDはシード0で固定した。

AI応用プロンプト — このコードを出発点にする

ChatGPT、Qwen、ClaudeのようなAIアシスタントに貼り付けるプロンプトである。「コピー」を押すと、プロンプトのあとに選んだコードが一緒に付く。〔 〕の中を自分の状況に書き換えて使えばよい。

一緒に付けるコード

AIの答えは出発点にすぎない。提案された論文・数値・ライブラリ関数は、必ず原文と公式ドキュメントで確認する。コンテストや論文でAIの助けを借りた場合は、主催者や学術誌の規定に従って、使用した事実と範囲を明らかにする。

用語集

本文の黄色い点線の下線と同じ辞書である。シリーズ全体で同じ表記を使う。セクション名を押すと最初に出てきた場所へ移動する。

たとえ集 — そしてたとえが外れるところ

たとえは理解の第一歩だが、誤解の種にもなる。ショウジョウバエ・脳のたとえには強さを示した。直接 実際に同じことをしているという根拠がある · 部分 一部の性質だけが似ている · なし 対応するものが知られていない

概念日常のたとえショウジョウバエ・脳のたとえたとえが外れるところ
ユニコード世界中の文字に付けた住民登録番号なし番号は文字を区別するだけで、文字どうしがどれだけ似ているかは教えてくれない
BPEよく一緒に使う語を略語にする(「초파리」をひとかたまりに)なし略語は人が意味を見て作るが、BPEは回数だけを見てマージする。意味と関係のない断片もできる
トークン番号図書館の本の請求記号なし請求記号は主題ごとにまとまるが、トークン番号はカナダラ順(韓国語の辞書順)か登場順にすぎない
埋め込み地図上の座標:近い町どうしは似ている部分 ショウジョウバエのキノコ体は、においを多数のケニオン細胞の活性パターン(ベクトル)で表すキノコ体はにおいを広く散らして区別しやすくする(スパース)が、埋め込みは数百次元に密に詰め込む。作り方も異なる
トークンの袋文を単語カードに切って封筒に入れるなし封筒からカードを取り出しても、元の順序はわからない。韓国語では助詞のカードが一部の手がかりになる
次のトークンの確率しりとりで次に来る言葉を推測する部分 脳も次に来る語音を予測するという研究がある脳の予測は意味・状況・身体の経験と絡み合っている。モデルは文字断片の統計だけで計算する

著者紹介と参考文献

E-1 著者紹介 · E-2 学術参考文献 · E-3 図の参考資料

E-1 著者紹介

Sangsun Ahn(株式会社M-Robo代表)

韓国電気安全公社、毎日経済新聞を経て、現在は毎日経済の社外ベンチャーである株式会社M-Roboを創業し、代表を務めている。株式会社M-Roboは報道機関の社内ベンチャーとして始まったメディアベンチャーで、国民日報にロボット記者(ストックボット)をサービスし、韓国インターネット振興院、韓国言論振興財団、韓国放送通信電波振興院などで多数のプロジェクトを手がけた。その後、自社のAIニュース新聞であるMoney-Roboをサービスしている。代表在任中にアジア・オープンデータ・ハッカソンで優勝し、データ起業分野での功績により行政安全部長官賞を2回受賞した。また、人工知能およびブロックチェーン分野で5件の特許の発明者・登録者である。著書に『AI犯罪と自己防衛』があり、フィンテック分野、統計学、人工知能分野について韓国技術教育大学校オンライン生涯教育院のeラーニングコンテンツを開発した。最終学位は経済学博士(東国大学校、ミクロ数理経済学)。国民大学校、湖西大学校など複数の大学でデータおよび人工知能に関する科目を講義している。詳しいプロフィール

講義

  • Sangsun Ahn (2025). 『ビジネスのためのデータサイエンス』講義案. 韓国オープンサイバー大学 人工知能融合学科.
  • Sangsun Ahn (2025). [K-デジタル] 人工知能 自然言語処理. STEP(スマート職業訓練プラットフォーム), 韓国技術教育大学校オンライン生涯教育院.
  • Sangsun Ahn (2024). [K-デジタル] フィンテックデータ分析の基礎. STEP(スマート職業訓練プラットフォーム), 韓国技術教育大学校オンライン生涯教育院.

STEPの講義へのリンク:link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
サイトのリニューアルにより接続しにくい場合は、www.step.or.krからアクセスしてください。

論文と発表

  • Sangsun Ahn (2025). 国民老後保障パネルデータを活用した世帯支出予測モデルの研究:人工知能モデルに基づくアプローチ. 『未来社会』, 16(2). 原文
  • Sangsun Ahn (2025). 国民老後保障パネルデータを活用した世帯支出予測モデルの研究:人工知能によるアプローチ. 国民老後保障パネル学術大会 発表資料(2025.05.13), 国民年金公団 国民年金研究院. 発表資料
  • Sangsun Ahn (2025). SNSテキストに基づく麻薬疑い取引検出アルゴリズムに関する研究:パターンおよび文脈分析を中心に. 『未来社会』, 16(1). 原文
  • Sangsun Ahn (2024). 金融分野の異常検知モデルのセキュリティのための統計ベースの敵対的データ対応策:実証分析とシミュレーション結果. 『未来社会』, 15(3). 原文
  • Sangsun Ahn (2024). 人工知能を活用した仮想キャラクターの特性に基づくSNS投稿検出ソリューション. 2024 Summer Newmedia Party ポスター発表(2024.06.19), ソウルメディア大学院大学.
  • Sangsun Ahn (2024). 労災パネルデータを活用した機械学習モデル. 第10回 労災保険パネル学術大会 ポスター発表(2024.05.17), 勤労福祉公団 勤労福祉研究院.
  • Sangsun Ahn (2024). 暗号資産の時系列データの分析と予測:時系列モデルと人工知能モデルの比較、改善点の提示. 『未来社会』, 15(1). 原文

E-2 学術参考文献

  1. [R1] Sennrich, R., Haddow, B., & Birch, A. (2016). Neural machine translation of rare words with subword units. Proceedings of the 54th Annual Meeting of the ACL, 1715–1725. doi:10.18653/v1/P16-1162 — セクション2 (BPEによるトークン分割)
  2. [R2] Deerwester, S., Dumais, S. T., Furnas, G. W., Landauer, T. K., & Harshman, R. (1990). Indexing by latent semantic analysis. Journal of the American Society for Information Science, 41(6), 391–407. doi:10.1002/(SICI)1097-4571(199009)41:6<391::AID-ASI1>3.0.CO;2-9 — セクション4、コード2 (潜在意味解析)
  3. [R3] The Unicode Consortium. The Unicode Standard, 3.12節 Conjoining Jamo Behavior (ハングル音節の合成・分解の公式). unicode.org — セクション1

E-3 コーパスと図の参考資料

  • コーパスは36文の例である
  • 数値はコード1と同じ計算である

教育者向けTIP

講師、実務OJT担当者、チューターのための運営ガイドである。時間は目安なので、実際の授業に合わせて調整する。

対象顧客の問い合わせ・レビュー・文書などのテキストデータを扱いたい大学生・実務者。言語モデルがテキストをどう受け取るのか知りたい人
前提知識ベクトルとコサイン類似度の概念。3-8の位置情報を知っているとセクション5・6がわかりやすい
学習目標① 文字 → ユニコード → バイトを説明できる ② BPEがトークン辞書を作る過程と、初めて見る単語を扱う方法を説明できる ③ 番号・埋め込み・位置情報がそれぞれなぜ必要かを説明できる
所要時間の目安読む 35〜45分 · デモ 20分 · Colab実習 25分 (コード1 15分、コード2 10分)

三つの運営案

講義形式 50分

概念中心

導入 5分(セクション1 絵文字は4バイト) → セクション2 BPE 15分 → セクション3・4 15分 → セクション5 dog bites man 5分 → セクション6 5分 → 確認問題 5分。

実務OJT 90分

業務への適用中心

自分のチームの文書30文でコーパスを作る 15分 → コード1のCORPUSを置き換えてBPE・埋め込みを再計算 30分 → コード2で似た問い合わせを探す 25分 → 「不明」トークンと個人情報の扱いを議論 20分。

1対1のチュータリング

レベル別の進度

入門者はセクション1・2・4だけ。中級者にはBPEのマージを3回手作業でやらせてから(単語の頻度を数える → 最も多いペアを探す)、セクション2の規則一覧と照らし合わせる。

セクション別の運営ポイント

セクション立ち止まって投げかける質問操作のコツ
1 ユニコード「同じ文字数でも保存サイズが違うのはなぜ?」ハングルの文 → 「Hello 초파리」 → 絵文字入りの文の順
2 トークン分割「なぜ語尾の'한다'が最初にマージされたのだろう?」0 → 60回、続いて初めて見る単語を含む文
3 トークン番号「54番が5番より大きいことに意味はあるだろうか?」「AI가 꽃을 본다」で「不明」トークンを指摘する
4 埋め込み「'昆虫'を教えたことはないのに、なぜ昆虫どうしが集まったのだろう?」초파리는 → 신경망은 の順に、近傍の単語の性格を比べる
5 位置情報「韓国語は語順が自由なのに、なぜ位置情報が必要なのだろう?」3つの比較を順に押す
6 モデルの処理「直前の単語1つだけを見るモデルの弱点は?」「초파리는」と「꿀벌은」(ショウジョウバエは/ミツバチは)の確率を比べる

よくある誤解 Top 5

誤解正しい説明見せる場面
トークン = 単語トークンはコーパスによって決まる断片である。文字のこともあれば、単語のことも、その中間のこともあるセクション2
ハングル1文字は1バイトUTF-8ではハングル音節は3バイトであるセクション1
トークン番号が近ければ意味も近い番号は辞書の枠の位置にすぎない。意味は埋め込みに込められるセクション3・4
埋め込みが近ければ同義語である一緒に使われる単語も近くなる。「似ている」の意味は作り方によって決まるセクション4「신경망은」
モデルはテキストを人間のように理解する番号とベクトルで次のトークンの確率を計算する。理解しているかどうかは別に問うべき問題であるセクション6

確認問題(解説は押して展開)

Q1. 「가」のユニコード番号は0xAC00である。初声 ㄱ(0)、中声 ㅏ(0)、終声 ㄱ(1)である「각」の番号は?

0xAC00 + (0 × 21 + 0) × 28 + 1 = 0xAC01.

Q2. 「초파리 🙂」(空白を含めて5文字)をUTF-8で保存すると何バイトか?

ハングル3文字 × 3 + 空白 1 + 絵文字 4 = 14バイト。

Q3. BPEで「最もよく隣り合って出てくるペア」は何を数えるのか?

コーパスのすべての単語について、隣り合う2つの断片のペアを、その単語が出てきた回数だけ数えて足し合わせる。最も大きいペアを1つにマージする。

Q4. 初めて見る単語「초파리들이」(ショウジョウバエたちが)は、単語単位とBPE単位でそれぞれどう処理されるか?

単語単位では辞書にないので、丸ごと「不明」になる。BPEでは ["초파리", "들", "이"] のように既知の断片に分けられる。

Q5. 「dog bites man」と「man bites dog」をトークンの袋で表すと? 何が必要か?

どちらも {dog:1, bites:1, man:1} で同じになる。順序を区別するには位置情報が必要である。

Colab課題

基本

コード1のCORPUSに「나비는 꽃을 좋아한다」(チョウは花が好きだ)、「나비는 날개가 있다」(チョウには羽がある)を加えて再実行する。「나비는」に最も近い単語を確認し、セクション4の説明と結びつけて理由を書く。

挑戦

コード1のbpe_trainでマージ回数を10・30・60・100と変えながら、辞書サイズと1文あたりの平均トークン数を表にまとめる。辞書サイズとトークン数のトレードオフを説明し、業務文書ならどの値を選ぶか根拠を書く。

難易度の調整とさらに学ぶ

入門者セクション1の字母の公式とセクション3は飛ばしても流れは途切れない
発展BPE以外のトークン分割の方法(ユニグラム言語モデル、形態素解析器ベース)を調べて比較させる。調べた論文は原文で確認する
さらに学ぶSangsun Ahn『ビジネスのためのデータサイエンス』講義案 (データサイエンス全般) · STEP [K-デジタル] 人工知能 自然言語処理 (この回と直接つながる) · STEP [K-デジタル] フィンテックデータ分析の基礎 (3-6とつながる)
講師用資料確認問題の採点基準と課題の解答例は 教育者用解答ページ (3-5) で見られます

お疲れさまでした!

「3-5 テキスト」の回を最後まで読みました。研究室のみんなが一言ずつまとめてくれます。

博士
博士文字が数値ベクトルに変わる、魔法のような過程を解き明かしてみました。
  • ハングル1文字はUTF-8で3バイト
  • BPEはよく隣り合って出てくる断片をマージしてトークンを作る
  • 「초파리는」に最も近い単語は「모기는」(蚊は)(0.970)
助手
助手昆虫なんて教えたこともないのに、昆虫どうしが集まりました。
ハエ研究員
ハエ研究員蚊とひとまとめだなんて、ちょっと寂しいなあ。