Как определить, являются ли 2 фрагмента кода функционально одинаковыми?

Учитывая 2 фрагмента кода, я хочу проверить, являются ли они функционально похожими или нет. Под функциональным сходством я подразумеваю, что они должны давать один и тот же результат, если обеспечены одним и тем же входом. Я извлекаю набор функций из данного фрагмента кода, используя:

  1. Синтаксический подход: использование базовых техник НЛП, таких как остановка, расщепление и т. Д.
  2. Семантический подход: использование AST для нормализации фрагмента кода, например: преобразование "для" в "время" и т. Д.

После формирования токенов я использую алгоритмы моделирования тем, такие как скрытое распределение дирихле, вероятностное скрытое семантическое индексирование и т. Д., Для поиска тем в данном фрагменте кода и сопоставления его с темой другого фрагмента кода. Хотя я понимаю, что это сложная проблема, точность подхода намного ниже, чем я ожидал.

Было бы замечательно, если бы я мог получить какие-либо указатели / идеи о лучших алгоритмах / методах, которые будут более эффективными.

Изменить: я не с нетерпением жду общего подхода. Подойдет любой подход, который дает приблизительные результаты с определенной точностью.

0 ответов

Другие вопросы по тегам