class_docstr: Helper data object for training IBM Models 3 and up
  
  Read-only. For a source sentence and its counterpart in the target
  language, this class holds information about the sentence pair's
  alignment, cepts, and fertility.
  
  Warning: Alignments are one-indexed here, in contrast to
  nltk.translate.Alignment and AlignedSent, which are zero-indexed
  This class is not meant to be used outside of IBM models.
class_docstr_tok: ["Helper","data","object","for","training","IBM","Models","3","and","up","Read-only",".","For","a","source","sentence","and","its","counterpart","in","the","target","language",",","this","class","holds","information","about","the","sentence","pair's","alignment",",","cepts",",","and","fertility",".","Warning",":","Alignments","are","one-indexed","here",",","in","contrast","to","nltk.translate.Alignment","and","AlignedSent",",","which","are","zero-indexed","This","class","is","not","meant","to","be","used","outside","of","IBM","models","."]
docstr: :return: The ceiling of the average positions of the words in
      the tablet of cept ``i``, or 0 if ``i`` is None
docstr_tok: [":","return",":","The","ceiling","of","the","average","positions","of","the","words","in","the","tablet","of","cept","``","i","``",",","or","0","if","``","i","``","is","None"]
code: def center_of_cept(self, i):
      """
      :return: The ceiling of the average positions of the words in
          the tablet of cept ``i``, or 0 if ``i`` is None
      """
      if i is None:
          return 0
  
      average_position = sum(self.cepts[i]) / len(self.cepts[i])
      return int(ceil(average_position))
  
imports: from bisect import insort_left
  from collections import defaultdict
  from copy import deepcopy
  from math import ceil
label_desc: Use image node_id 4 for calling the AlignmentInfo obj's underlying member method code with example usage: obj.center_of_cept(i) and returns: int, int