Сравнение двух строк

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Fil
Сообщения: 41
Зарегистрирован: 30 авг 2006, 16:03

Сравнение двух строк

Сообщение Fil » 07 авг 2007, 15:29

Привет!

Например, есть две строки:
1. Введение, окончание можно не писать. (Это n лексем)
2. Введение и заключение можно не писать. (Это m лексем)

Необходимо сравнить лексемы этих строк. Лексемы, которые не совпадают, отбрасываются («окончание» и «заключение»). Остальные лексемы совпадают, и если n’/m>=0,7, то что-то выводится. (n’ – это кол-во лексем без союза ‘и’).

Используя ф-ию strtok(…) разбиваю на лексемы. Что касается сравнения лексем, учитывая то, что описал выше … проблемка. Пожалуйста, напишите, как тут лучше сделать. Если не затруднит, что-то вроде псевдокода сбросьте. Работаю в Visual C++6.0

С уважением, Fil!

Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 16:14
Откуда: 71 RUS
Контактная информация:

Re: Сравнение двух строк

Сообщение somewhere » 08 авг 2007, 08:58

Так в чем же трудность? Очевидно, m и n - массивы строк и задача сводится к сравнению элементов массивов. И если я так понял, то нужно вычислить отношение количества совпадающих элементов к общему количеству элементов. Предварительно переведя каждую строку в верхний или нижний регистр можно добиться точного сравнения строк.
1. Выбираем элемент из M
2. Ищем его в N
3. Если такой есть - увеличим счетчик найденых
4. Следующий элемент из М
Для более точного анализа предложений нужно использовать некий коэфициент, учитывающий некоторые факторы, такие как:
1. Удаленность похожих слов из разных предложений друг от друга.
2. Степень совпадения слов в предложениях.
3. Грамматическая сложность предложений.
Мама мыла раму, коля тоже ее мыл
Мама мыла раму, а маша ни хрена ее не мыла
Судя по 1-ому методу получим отношение 4/7 или 4/9 - что меньше 0,7 значит предложения не похожи.
Если считать по методу 2, то к примеру "мыл" = "мыла" (0,75)*1 добавит схожести предложениям установив отношение 4,75/7 что вполне близко к 0,7
It's a long way to the top if you wanna rock'n'roll

Fil
Сообщения: 41
Зарегистрирован: 30 авг 2006, 16:03

Re: Сравнение двух строк

Сообщение Fil » 09 авг 2007, 14:07

Благодарю.

Ответить