Строки количеств кода полезны при подаче обширности всестороннего продукта клиенту, который полагает, что строки кода общий индикатор размера продукта. Например, когда Вы пытаетесь убедить кого-то, кого Ваш продукт обрабатывает много угловых случаев, или когда Вы пытаетесь войти в бету для средства разработки, где поставщик инструмента хочет получить максимальное покрытие кода для тестирования.
Посмотрите N -граммы . Самые распространенные фразы обязательно приведут к наиболее частым N -граммам. Я бы начал со словесных триграмм и посмотрел, к чему это приведет. (Требуется пространство, умноженное на N длины текста, поэтому вы не можете позволить N стать слишком большим.) Если вы сохраните позиции, а не просто счет, вы можете затем посмотрим, можно ли расширить триграммы для образования общих фраз.
Я не уверен, что это то, что вы хотите, но проверьте самая длинная общая проблема с подстрокой и алгоритмы утилиты diff.
Что-то вроде этого может сработать, в зависимости от того, заботитесь ли вы о границах слов. В псевдокоде (где LCS
- это функция для вычисления самой длинной общей подпоследовательности ):
someMinimumLengthParameter = 20;
foundPhrases = [];
do {
lcs = LCS(mailbodies);
if (lcs in ignoredPhrases) continue;
foundPhrases += lcs;
for body in mailbodies {
body.remove(lcs);
}
} while(lcs.length > someMinimumLengthParameter);