




import argparse
import logging
import pickle
from collections import Counter


logging.basicConfig(
    format='%(asctime)s - %(levelname)s - %(name)s - %(message)s', datefmt='%m/%d/%Y %H:%M:%S', level=logging.INFO
)
lowerCamelCase__			:       Union[str, Any]         =							logging.getLogger(__name__)

if __name__ == "__main__":
   lowerCamelCase__			:       Union[str, Any]         =							argparse.ArgumentParser(
       description='Token Counts for smoothing the masking probabilities in MLM (cf XLM/word2vec)'
   )
   parser.add_argument(
       '--data_file', type=str, default='data/dump.bert-base-uncased.pickle', help='The binarized dataset.'
   )
   parser.add_argument(
       '--token_counts_dump', type=str, default='data/token_counts.bert-base-uncased.pickle', help='The dump file.'
   )
   parser.add_argument('--vocab_size', default=30_522, type=int)
   lowerCamelCase__			:       Dict         =							parser.parse_args()

   logger.info(f'''Loading data from {args.data_file}''')
   with open(args.data_file, 'rb') as fp:
      lowerCamelCase__			:       Tuple         =							pickle.load(fp)

   logger.info('Counting occurrences for MLM.')
   lowerCamelCase__			:       int         =							Counter()
   for tk_ids in data:
      counter.update(tk_ids)
   lowerCamelCase__			:       List[str]         =							[0] * args.vocab_size
   for k, v in counter.items():
      lowerCamelCase__			:       Tuple         =							v

   logger.info(f'''Dump to {args.token_counts_dump}''')
   with open(args.token_counts_dump, 'wb') as handle:
      pickle.dump(counts, handle, protocol=pickle.HIGHEST_PROTOCOL)





def  UpperCAmelCase_							(				__UpperCAmelCase						:     str							) ->			list:
      return [
          txt[:a] + txt[a].upper() + txt[a + 1 :]
          for a in range(len(__UpperCAmelCase							)							)
          if txt[a].isalpha()
      ]


if __name__ == "__main__":
   __import__('doctest').testmod()