У меня есть два файла подзаголовков. Мне нужна функция, которая говорит, представляют ли они тот же текст или подобный текст
Иногда существуют комментарии как "Ветер, дует..., музыка играет" в одном файле только. Но 80%-й процент содержания будет тем же. Функция должна возвратить TRUE (файлы представляют тот же текст). И иногда существуют орфографические ошибки как 1 вместо l (один - L) как здесь: Она 1eft багаж. Конечно, это означает, что функция должна возвратить TRUE.
Мои комментарии:
Функция должна возвратиться, процент подобия текстов - СОГЛАШАЮТСЯ
"все люди были счастливы", и "все люди не были счастливы" - здесь это рассмотрят как орфографическую ошибку, таким образом, это считали бы тем же текстом. Чтобы быть точными, процент, функциональные возвраты будут ниже, но достаточно высоко сказать, что фразы подобны
Действительно рассмотрите, хотите ли Вы применить Levenshtein на целый файл, или просто строка поиска - не уверенный в Levenshtein, но алгоритме должна быть применена к файлу в целом. Это будет очень длинная строка, все же.
Алгоритм Левенштейна: http://en.wikipedia.org/wiki/Levenshtein_distance
Любой результат, отличный от нуля, означает, что текст не является "идентичным". "Похожи" - это мера того, насколько они далеки/близки. Результат - целое число.
Вы ожидаете слишком многого, похоже, вам придется написать функцию для ваших конкретных нужд. Я бы порекомендовал начать с существующего приложения для сравнения файлов (возможно, diff уже имеет все необходимое) и улучшить его, чтобы обеспечить хорошие результаты для вашего ввода.
Посмотрите примерный grep . Он может дать вам указатели, хотя почти наверняка будет ужасно работать с большими фрагментами текста, о которых вы говорите.
РЕДАКТИРОВАТЬ: исходная версия соглашения не является открытым исходным кодом, поэтому вы можете получить ссылки на версии OSS из http://en.wikipedia.org/wiki/Agrep