    def save_to_files(self, directory: str) -> None:
        """
        Persist this Vocabulary to files so it can be reloaded later.
        Each namespace corresponds to one file.

        # Parameters

        directory : `str`
            The directory where we save the serialized vocabulary.
        """
        os.makedirs(directory, exist_ok=True)
        if os.listdir(directory):
            logger.warning("vocabulary serialization directory %s is not empty", directory)

        # We use a lock file to avoid race conditions where multiple processes
        # might be reading/writing from/to the same vocab files at once.
        with FileLock(os.path.join(directory, ".lock")):
            with codecs.open(
                os.path.join(directory, NAMESPACE_PADDING_FILE), "w", "utf-8"
            ) as namespace_file:
                for namespace_str in self._non_padded_namespaces:
                    print(namespace_str, file=namespace_file)

            for namespace, mapping in self._index_to_token.items():
                # Each namespace gets written to its own file, in index order.
                with codecs.open(
                    os.path.join(directory, namespace + ".txt"), "w", "utf-8"
                ) as token_file:
                    num_tokens = len(mapping)
                    start_index = 1 if mapping[0] == self._padding_token else 0
                    for i in range(start_index, num_tokens):
                        print(mapping[i].replace("\n", "@@NEWLINE@@"), file=token_file)
Persist this Vocabulary to files so it can be reloaded later.
Each namespace corresponds to one file.

# Parameters

directory : `str`
The directory where we save the serialized vocabulary.
allennlp/data/vocabulary.py