<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def bigram(self, items):
 """ generate bigrams of either items = "tokens" or "stems" """


        def bigram_join(tok_list):
            text = nltk.bigrams(tok_list)
            return list(map(lambda x: x[0] + '.' + x[1], text))

        if items == "tokens":
            self.bigrams = list(map(bigram_join, self.tokens))
        elif items == "stems":
            self.bigrams = list(map(bigram_join, self.stems))
        else:
            raise ValueError("Items must be either \'tokens\' or \'stems\'.")