データ分析やAIの分野で頻繁に登場するn-gramとは、あるデータセットの中から、隣接するn個の要素を順番通りに抽出した一連のシーケンスを指します。この「要素」となる単位は、分析の目的によって文字、音素、単語、あるいはDNAの塩基対など、さまざまな形態を取ります。
n-gramは、テキストコーパス(大量の言語データ)や音声データから抽出され、統計的なパターンを分析するために利用されます。例えば、ある単語の次にどの単語が来やすいかという確率を算出することで、文章の自動生成や予測入力などの技術に応用されています。
Key Facts
- 定義: 連続するn個のシンボル(文字や単語など)の並びのこと。
- 呼称: nの数に応じて、1つなら「ユニグラム」、2つなら「バイグラム」、3つなら「トリグラム」と呼びます。
- NLPでの利点: 単なる単語の集合(Bag-of-Words)では失われてしまう「単語の順序」という重要な情報を保持できる。
- 他分野への応用: 計算生物学では、ポリマーやオリゴマーのサイズを示す「k-mer」として利用される。
n-gramの種類と名称
n-gramでは、抽出する要素の数(n)によって呼び方が変わります。一般的にラテン語由来の接頭辞が使われますが、数が増えると英語の基数を用いた表現が一般的になります。
- 1-gram(ユニグラム / unigram): 単一の要素。
- 2-gram(バイグラム / bigram): 2つの連続する要素。ダイグラム(digram)とも呼ばれます。
- 3-gram(トリグラム / trigram): 3つの連続する要素。
- 4-gram以降: フォーグラム(four-gram)、ファイブグラム(five-gram)のように表記されます。
また、単語を単位として抽出する場合、これらを「シングル(shingles)」と呼ぶこともあります。生物学の分野では、ギリシャ語の接頭辞を用いてモノマー、ダイマー、トリマー、テトラマー、ペンタマーなどと呼び、これらを総称してk-merと定義します。
分野別の具体例と活用シーン
n-gramは、扱うデータの単位によってその役割が異なります。以下に代表的な適用例を挙げます。
自然言語処理(NLP)
テキストデータにおいて、文字単位または単語単位でn-gramを生成します。これにより、文脈の把握や言語モデルの構築が可能になります。1951年にはクロード・シャノンが英語のn-gramモデルについて論じており、確率に基づいたランダムな文字列生成などの実験が行われました。
計算生物学(ゲノム解析)
DNA配列などの塩基対や、タンパク質のアミノ酸配列をn-gram(k-mer)として解析します。これにより、特定の配列パターンの出現頻度を分析し、遺伝的な特徴を特定します。
| 分野 | 基本単位 | 1-gram (unigram) | 2-gram (bigram) | 3-gram (trigram) |
|---|---|---|---|---|
| タンパク質解析 | アミノ酸 | Cys, Gly, Leu... | Cys-Gly, Gly-Leu... | Cys-Gly-Leu... |
| DNA解析 | 塩基対 | A, G, C, T... | AG, GC, CT... | AGC, GCT, CTT... |
| 文字レベル言語モデル | 文字 | t, o, _, b... | to, o_, _b... | to_, o_b, _be... |
| 単語レベル言語モデル | 単語 | to, be, or... | to be, be or... | to be or, be or not... |
Googleが提供するn-gramコーパスのような大規模データでは、「ceramics collectables fine」といった3-gramや、「serve as the independent」といった4-gramの出現回数を集計し、言語の統計的傾向を分析しています。
Frequently Asked Questions
n-gramを使う最大のメリットは何ですか?
最大のメリットは、データの「順序」を保持できることです。従来のBag-of-Wordsモデルでは単語の出現回数のみを数えるため、単語の並び順による意味の違いを無視してしまいますが、n-gramを用いることで隣接する要素の関係性を捉えることが可能になります。
ユニグラムとバイグラムの違いは何ですか?
ユニグラムは要素を1つずつ独立して扱うため、単なる単語の頻度分析になります。一方、バイグラムは2つの要素をペアとして扱うため、「〇〇の後に△△が来る」という遷移確率や、熟語のような結びつきを分析できる点が異なります。
k-merとはn-gramと違うものですか?
概念としては同じです。n-gramが主に言語学や自然言語処理で使われる用語であるのに対し、k-merは計算生物学においてポリマーやオリゴマー(DNAやタンパク質などの鎖状分子)のサイズを指定する際に使われる専門用語です。
n-gramはどのようにして生成されますか?
テキストや配列などのデータセット(コーパス)から、スライディングウィンドウという手法を用いて、1つずつずらしながらn個の要素を切り出すことで生成されます。例えば「I love apple」という文から2-gramを抽出すると、「I love」と「love apple」の2つのペアが作成されます。