データ・アナリティクス

N-gram

N-Gram

テキストから抽出される連続したn個の単位(単語、文字など)のシーケンス。自然言語処理における基礎的な手法です。

N-gram 自然言語処理 NLP テキスト分析 言語モデル
作成日: 2025年12月19日 更新日: 2026年4月2日

N-gramとは?

N-gramは、テキストから連続して取り出されるn個の単位(単語や文字)のセットです。 例えば、「自然言語処理」という文から、ユニグラム(1語)は「自然」「言語」「処理」、バイグラム(2語)は「自然言語」「言語処理」となります。

ひとことで言うと: 「文章を小さな連続カタマリに分割して、パターンを探す手法」です。

ポイントまとめ:

  • 何をするものか: テキストを小単位に分割し、単語や文字の繋がりパターンを分析
  • なぜ必要か: テキストの意味的な構造を簡潔に捉え、言語の予測・分類に活用
  • 誰が使うか: NLP技術者、検索エンジン企業、テキスト分析専門家

なぜ重要か

N-gramは、自然言語処理の最も基本的で強力な手法の一つです。スペルチェッカーが「typo」と入力されたら「type」を提案したり、スマートフォンの予測入力が「こんに」の次に「ちは」を提案したりするのは、N-gramを使った言語モデルのおかげです。

また、テキスト分類(スパム判定など)や機械翻訳でも活用されています。シンプルながら効果的であり、計算量も少ないため、今でも多くのシステムで使われています。

仕組みをわかりやすく解説

N-gramは、統計的な確率モデルに基づいています。

基本的な考え方 「ある単語が現れた後、どの単語が続く可能性が高いか」を、過去のテキストから学習します。例えば、「こんに」の後に「ちは」が続く確率が0.95なら、「こんに」と入力された時に「ちは」を強く提案します。

確率計算 テキストコーパス(大量のテキスト)から、各N-gramの出現数をカウントします。バイグラムの確率は「『前の単語+現在の単語』が現れた回数」÷「『前の単語』が現れた回数」で計算されます。

スムージング技術 訓練データに現れなかったN-gramには確率がゼロになってしまうため、特別な調整(スムージング)を加えます。これにより、未知のテキストにも対応できるようになります。

実装では、NLTKやspaCyなどのライブラリが、N-gram抽出と確率計算を簡単に行えます。

実際の活用シーン

予測テキスト・オートコンプリート メール作成時に「お疲れ」と入力すると、バイグラムモデルが次に「様です」を提案します。

スペルチェック 「teh」と入力された場合、高頻度の正しいN-gram「the」を提案するシステムです。

機械翻訳 翻訳の候補が複数ある場合、ターゲット言語のN-gramモデルを使用して、最も自然な表現を選択します。

メリットと注意点

メリット としては、実装が簡潔で計算コストが低いこと、言語の基本的なパターンを効果的に捉えられることです。また、少ないデータで学習可能な場合も多いです。

注意点 としては、文の長い文脈を捉えられないこと(nが大きくなるほど、データ不足の問題が増える)、言語の深い意味理解ができないことです。最近はTransformerなどのニューラルネットワークがN-gramを置き換えていますが、シンプルなタスクや小規模システムではN-gramが今でも活躍しています。

関連用語

  • NLP(自然言語処理) — テキスト分析の総合的な分野。N-gramはその基本ツール
  • 言語モデル — 言葉の出現確率を推定するモデル
  • Transformer — N-gramの後継となった最新のニューラルネットワーク手法
  • NLTK — Pythonの自然言語処理ライブラリ
  • テキスト分類 — N-gramを特徴として使用する応用例

よくある質問

Q: バイグラムと3-gramの違いは? A: バイグラムは2語の繋がり、3-gramは3語の繋がりを見ます。nが大きいほど文脈が豊かですが、データ量が必要になります。

Q: スペルチェックにはN-gramで十分? A: N-gramは効果的ですが、複雑な文脈での修正にはLLMなどより高度な手法が有効です。

関連用語

コサイン類似度

2つのベクトルの方向の近さを測定する数学的指標。大きさを無視して方向のみで類似性を評価します。テキスト検索や推奨システムで活用。...

×
お問い合わせ Contact