python - 'MarkovGenerator' object has no attribute 'together' -


i come problem class , don't know reason, can me out?

the problem in def together(), here code.

class markovgenerator(object):    def __init__(self, n, max):     self.n = n # order (length) of ngrams     self.max = max # maximum number of elements generate     self.ngrams = dict() # ngrams keys; next elements values     beginning = tuple(["that", "is"]) # beginning ngram of every line     beginning2 = tuple(["on", "the"])     self.beginnings = list()     self.beginnings.append(beginning)     self.beginnings.append(beginning2)     self.sentences = list()     def tokenize(self, text):     return text.split(" ")    def feed(self, text):      tokens = self.tokenize(text)      # discard line if it's short     if len(tokens) < self.n:       return      # store first ngram of line     #beginning = tuple(tokens[:self.n])     #self.beginnings.append(beginning)      in range(len(tokens) - self.n):        gram = tuple(tokens[i:i+self.n])       next = tokens[i+self.n] # element after gram        # if we've seen ngram, append; otherwise, set       # value key new list       if gram in self.ngrams:         self.ngrams[gram].append(next)       else:         self.ngrams[gram] = [next]    # called generate() join generated elements   def concatenate(self, source):     return " ".join(source)    # generate text information in self.ngrams   def generate(self,i):      random import choice      # random line beginning; convert list.        #current = choice(self.beginnings)     current = self.beginnings[i]     output = list(current)      in range(self.max):       if current in self.ngrams:         possible_next = self.ngrams[current]         next = choice(possible_next)         output.append(next)         # last n entries of output; we'll use         # ngram in next iteration of loop         current = tuple(output[-self.n:])       else:         break      output_str = self.concatenate(output)     return output_str       def together(self):       return "lalala"   if __name__ == '__main__':    import sys   import random     generator = markovgenerator(n=2, max=16)   line in open("us"):     line = line.strip()     generator.feed(line)    in range(2):     print generator.generate(i)      print generator.together() 

but got error saying:

traceback (most recent call last):   file "markovoo2.py", line 112, in <module>     print generator.together() attributeerror: 'markovgenerator' object has no attribute 'together' 

does know know reason?

it looks def together indented deeply. inside generate method. move out 1 indentation level.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -