Я работаю над этой проблемой более 3 лет, позвольте мне сказать, что она далека от тривиальной, и вы не собираетесь решать ее одним алгоритмом, не говоря уже о сходстве tf-idf и косинуса.
Есть ряд проблем, я пишу некоторые из них:
- похожие тексты лицензий (agpl / gpl / lgpl, bsd / apache1.1 / openssl, mit / isc / curl) чрезвычайно трудно устранить неоднозначность, и они будут иметь чрезвычайно высокое косинусное сходство (если вы не очень умны в выборе функций , может быть ...)
- То же самое относится к разным версиям одной и той же лицензии (lgpl 2.0 / 2.1)
- Файлы LICENSE.TXT часто содержат несколько лицензий
- BSD уведомления очень трудно поймать, т.е. у вас тот же текст, кроме правообладателя
Вы в конечном итоге будете использовать комбинацию подходов, к сожалению, серебряной пули нет.