PythonでN-gramを取り出す

スライシングを使うことで、PythonN-gramを1行で取り出せる。

入力を単語区切りのリストで与えると、bigramは次のように取り出せる。

input_list = ['This', 'is ', 'a', 'pen']
bigram_list = zip(input_list, input_list[1:])

trigramはこう。

trigram_list = zip(input_list, input_list[1:], input_list[2:])

これを一般化すると、N-gramは次のように取り出せる。

Ngram_list = zip(*[input_list[i:] for i in range(N)])