{'fraction_non_alphanumeric': 0.01616031027795734, 'fraction_numerical': 0.0, 'mean_word_length': 5.37037037037037, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Software Modernization Using Machine Learning Techniques

As software engineering techniques and practices continuously evolve, programs created with an older technology stack become harder and more costly to maintain. These software are often referred to as legacy code. Naturally, the need arises to make use of the newer and more effective technologies, making the legacy code easier to maintain and operate. However, companies rarely allocate the necessary resources to manually re-implement these systems as that would be highly time-consuming and extremely costly to spend exclusively for maintenance purposes. Thus, various code modernization approaches have been proposed and tools have been created to reduce the cost of re-implementation by semi-automatically translating legacy systems into a modern, more advantageous environment. However, the source and target languages may be so different in nature that making the generated code feel as natural as possible is often difficult. These linguistic differences frequently impose the emulation of certain features between the two languages, which may prove too difficult to automatically handle using conventional static analysis of the source code. To this end, in this paper we propose the novel method of using machine learning techniques to teach the transformer on how to effectively handle cases that would otherwise be very error-prone in practice. This way, the transformation tool can achieve both a high level of automation and the ability to generate precise, error free code.