Generate bigrams with NLTK Generate bigrams with NLTK python python

Generate bigrams with NLTK


nltk.bigrams() returns an iterator (a generator specifically) of bigrams. If you want a list, pass the iterator to list(). It also expects a sequence of items to generate bigrams from, so you have to split the text before passing it (if you had not done it):

bigrm = list(nltk.bigrams(text.split()))

To print them out separated with commas, you could (in python 3):

print(*map(' '.join, bigrm), sep=', ')

If on python 2, then for example:

print ', '.join(' '.join((a, b)) for a, b in bigrm)

Note that just for printing you do not need to generate a list, just use the iterator.


The following code produce a bigram list for a given sentence

>>> import nltk>>> from nltk.tokenize import word_tokenize>>> text = "to be or not to be">>> tokens = nltk.word_tokenize(text)>>> bigrm = nltk.bigrams(tokens)>>> print(*map(' '.join, bigrm), sep=', ')to be, be or, or not, not to, to be