Как определить, являются ли 2 фрагмента кода функционально одинаковыми?
Учитывая 2 фрагмента кода, я хочу проверить, являются ли они функционально похожими или нет. Под функциональным сходством я подразумеваю, что они должны давать один и тот же результат, если обеспечены одним и тем же входом. Я извлекаю набор функций из данного фрагмента кода, используя:
- Синтаксический подход: использование базовых техник НЛП, таких как остановка, расщепление и т. Д.
- Семантический подход: использование AST для нормализации фрагмента кода, например: преобразование "для" в "время" и т. Д.
После формирования токенов я использую алгоритмы моделирования тем, такие как скрытое распределение дирихле, вероятностное скрытое семантическое индексирование и т. Д., Для поиска тем в данном фрагменте кода и сопоставления его с темой другого фрагмента кода. Хотя я понимаю, что это сложная проблема, точность подхода намного ниже, чем я ожидал.
Было бы замечательно, если бы я мог получить какие-либо указатели / идеи о лучших алгоритмах / методах, которые будут более эффективными.
Изменить: я не с нетерпением жду общего подхода. Подойдет любой подход, который дает приблизительные результаты с определенной точностью.