Вниз
Скачать: CL | DM;

Сравнение кусков текста   Найти похожие ветки 

 
Multy   (2003-12-06 18:31) [0]

Нужно проверить куски текста на приблизитеоьное совпадение. На эту тему, вроде, много понаделано может у кого есть готовые компоненты или алгоритмы?


 
maxXP ©   (2003-12-06 19:39) [1]

Может что-нибудь такое:

for i:=1 to length(text1) do begin
if text[2]="" then break;
if text1[i]=text2[i] then ... else procent:=procent+1;
end;

Изменяй procent если, скажем не совпадает,а потом определи если

length(text1) -100%
procent - X%

x:=procent*100/length(text1); Процент не совпадения.


 
Multy   (2003-12-06 19:56) [2]

Так то понятно, да вот только если добавить пару слов, то совершенно одинаковые тексты будут разными. Нужно что-то вроде приблизительного сравнения слов, только сравнивать не слова, а куски текста.

P.S. тут мысль: что если кусоки текста рассматривать как 1 большое слово и сравнивать алгоритмом преблизительного сравнения слов.


 
Юрий Федоров ©   (2003-12-06 20:22) [3]

Видимо это не самый простой алгоритм. ИМХО, лучше не спрашивать чьи-то собственные алгоритмы, а попытаться поискать решения от софтверных фирм


 
NikeOLD   (2003-12-06 21:37) [4]

Когда-то я делал сравнение удалением одинаковых слов в каждом куске кода: берешь первое слово в первом куске и ищешь такое же в остальных. Если есть - удаляешь. Затем повторяешь все заново. Но это еще не все, есть много лишних неинформативных слов, например, предлогов, их нужно сперва удалить. Метод основан на разнице в количестве оставшихся слов. Если в первом тексте слов осталось крайне мало, а во втором тексте их еще много, то значит первый текст полностью включен во второй.
При больших текстах очень медленный способ, рпактически не применим на больших текстах ввиду тормознутости, зато, правда весьма результативен.


 
wicked ©   (2003-12-06 22:14) [5]

http://delphibase.endimus.com/?action=viewfunc&topic=strmath&id=10289
может это подойдет?... :) тем более, его потом можно адаптировать...


 
MAC ©   (2003-12-07 02:02) [6]

Уточни -- приведи пример. А то писать можно непереписать, а оно тебе не понадобиться.

Можно реализовать с помощью конструкции буфера FIFO (очередь).
Как показывает практика -- лучший вариант в своём роде.

Так что опиши детально -- как, что и куда.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
7-62292
Andrew Kosovich
2003-10-12 20:22
2003.12.19
Дать/прочитать сигнал на конкретный пин (контакт) LPT


1-62101
Reals
2003-12-08 04:36
2003.12.19
Сортировка ListBox (значение Stlye = lbVirtualOwnerDraw)


3-61924
Russko
2003-11-27 12:24
2003.12.19
Table is busy!!!


1-62012
Helg
2003-12-06 21:18
2003.12.19
Как закрыть форму при помощи ESC


1-62069
Мишка
2003-12-09 11:45
2003.12.19
Привет, может быть кто-нибудь знает есть ли специальные процедуры




   Наверх