N-gramN-gramは文字列をN文字単位で区切って1要素としたものです。 N-gramは全文検索を高速に行うためのインデックスとして良く使われます。 Nが2のものをbi-gram(バイグラム)、Nが3のものをtri-gram(トライグラム)と呼びます。 Nが4以上は応用例が少なくメジャーでないためか、私は聞いたことがありません。 例えば最初の文章をbi-gramで表現して並べると以下のとおりです。 文字列の先頭からはじめて、1文字ずつずらしながら、2文字単位で1要素としていきます。 Enumerable#each_consRubyではEnumerable#each_consを使って、このようなN-gramを簡単に作ることができます。 Enumerable#each_consのRubyリファレンスマニュアルの解説は以下のとおりです。 要素を重複ありで n 要素ずつに区切り、 ブロックに渡