docs: def filter(self,
                 pos_condition=None,
                 stopwords=None,
                 is_normalize=True,
                 func_normalizer=normalize_text,
                 check_field_name='stem'):
          # type: (List[Tuple[text_type,...]], List[text_type], bool, Callable[[text_type], text_type],text_type)->FilteredObject
          """* What you can do
          - It filters out token which does NOT meet the conditions (stopwords & part-of-speech tag)
          - Under python2.x, pos_condition & stopwords are converted into unicode type.
  
          * Parameters
          - pos_condition: list of part-of-speech(pos) condition. The pos condition is tuple is variable length.
          You can specify hierarchical structure of pos condition with variable tuple.
          The hierarchy of pos condition follows definition of dictionary.
              - For example, in mecab you can take words with 名詞 if ('名詞',)
              - For example, in mecab you can take words with 名詞-固有名詞 if ('名詞', '固有名詞')
          - stopwords: list of word which you would like to remove
          - is_normalize: Boolean flag for normalize stopwords.
          - func_normalizer: Function object for normalization. The function object must be the same one as when you use tokenize.
          - check_field_name: Put field name to check if stopword or NOT. Kytea does not have stem form of word, put 'surface' instead.
  
          * Example
          >>> pos_condition = [('名詞', '一般'), ('形容詞', '自立'), ('助詞', '格助詞', '一般')]
          >>> stopwords = ['これ', 'それ']
          """
          assert isinstance(pos_condition, (type(None), list))
          assert isinstance(stopwords, (type(None), list))
  
          if stopwords is None:
              s_words = []
          elif six.PY2 and all((isinstance(s, str) for s in stopwords)):
              """under python2.x, from str into unicode"""
              if is_normalize:
                  s_words = [func_normalizer(s.decode(self.string_encoding)) for s in stopwords]
              else:
                  s_words = [s.decode(self.string_encoding) for s in stopwords]
          else:
              if is_normalize:
                  s_words = [func_normalizer(s) for s in stopwords]
              else:
                  s_words = stopwords
  
  
          if pos_condition is None:
              p_condition = []
          else:
              p_condition = self.__check_pos_condition(pos_condition)
  
          filtered_object = filter_words(
              tokenized_obj=self,
              valid_pos=p_condition,
              stopwords=s_words,
              check_field_name=check_field_name
          )
          assert isinstance(filtered_object, FilteredObject)
  
          return filtered_object