




import doctest
from collections import deque

import numpy as np

class   __a:






    """simple docstring"""





    def __init__(				self  )			->		int:
         UpperCAmelCase_      :							Optional[int]       =      [2, 1, 2, -1]
         UpperCAmelCase_      :							List[str]       =      [1, 2, 3, 4]





    def 							a__				(				self  )			->		str:
         UpperCAmelCase_      :							int       =      len(self.first_signal  )
         UpperCAmelCase_      :							Tuple       =      len(self.second_signal  )

         UpperCAmelCase_      :							Union[str, Any]       =      max(__lowerCamelCase       ,__lowerCamelCase  )

         # create a zero matrix of max_length x max_length
         UpperCAmelCase_      :							Tuple       =      [[0] * max_length for i in range(__lowerCamelCase  )]

         # fills the smaller signal with zeros to make both signals of same length
         if length_first_signal < length_second_signal:
              self.first_signal += [0] * (max_length - length_first_signal)
         elif length_first_signal > length_second_signal:
              self.second_signal += [0] * (max_length - length_second_signal)
         for i in range(__lowerCamelCase  ):
              UpperCAmelCase_      :							List[Any]       =      deque(self.second_signal  )
              rotated_signal.rotate(__lowerCamelCase  )
              for j, item in enumerate(__lowerCamelCase  ):
                   matrix[i][j] += item

        # multiply the matrix with the first signal
         UpperCAmelCase_      :							Any       =      np.matmul(np.transpose(__lowerCamelCase  )       ,np.transpose(self.first_signal  )  )

         # rounding-off to two decimal places
         return [round(__lowerCamelCase       ,2  ) for i in final_signal]


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











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
)
__a          =			logging.getLogger(__name__)

if __name__ == "__main__":
     __a          =			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)
     __a          =			parser.parse_args()

     logger.info(F"""Loading data from {args.data_file}""")
     with open(args.data_file, 'rb') as fp:
          __a          =			pickle.load(fp)

     logger.info('Counting occurrences for MLM.')
     __a          =			Counter()
     for tk_ids in data:
          counter.update(tk_ids)
     __a          =			[0] * args.vocab_size
     for k, v in counter.items():
          __a          =			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)