def _get_column_boundaries(self):
<EOL>ends = self._get_column_ends()<EOL>if not ends:<EOL><INDENT>return [slice(None, None)]<EOL><DEDENT>most_common = []<EOL>threshold = self.threshold<EOL>for k, v in collections.Counter(ends.values()).most_common():<EOL><INDENT>if k >= threshold:<EOL><INDENT>most_common.append(k)<EOL><DEDENT><DEDENT>if most_common:<EOL><INDENT>boundaries = []<EOL>for k, v in ends.items():<EOL><INDENT>if v in most_common:<EOL><INDENT>boundaries.append(k)<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>boundaries = ends.keys()<EOL><DEDENT>boundaries.sort()<EOL>last_boundary = boundaries[-<NUM_LIT:1>]<EOL>boundaries = zip([<NUM_LIT:0>] + boundaries, boundaries)<EOL>boundaries = list(itertools.starmap(slice, boundaries))<EOL>boundaries.append(slice(last_boundary, None))<EOL>return boundaries<EOL>
Use the guessed ends to guess the boundaries of the plain
        text columns.