AKB Forums

Go Back   AKB Forums > Technical sections > Algorithms
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Algorithms The source of algorithms for your project

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Nov 11, 2004, 10:10   #1
Авик
 
CyberJoe's Avatar
 
Join Date: Jul 2002
Location: Yerevan
Posts: 1,347
Rep Power: 7
Reputation: 19
Send a message via ICQ to CyberJoe
Question Сравнивание Стрингов

Вобщем требуется мне алгоритм функции которая будет получать в качестве параметров, два стринга, и возвращать цифру их "похожести"
в процентном соотношении, ну типа хотя бы алгоритм.
__________________
вот собственно все, что я хотел сказать.
CyberJoe is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 13:08   #2
панаехавший
 
Obelix's Avatar
 
Join Date: Jun 2003
Location: форпост
Posts: 4,005
Rep Power: 6
Reputation: 10
Send a message via ICQ to Obelix
Детка, ты определись, что ты понимаешь под похожестью? Есть понятие расстояния стрингов (дасиц кич трнеир киманаир), этого тебе нада?
__________________
Իսկ ԴՈՒ արդեն վաճառե՞լ ես Հայրենիքդ ռուսներին:

My Exchange Rate Monitor | Իմ Արտարժույթի Մոնիտորը

Obelix is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 13:13   #3
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,637
Rep Power: 11
Reputation: 211
Send a message via ICQ to Agregat Send a message via MSN to Agregat
например strcmp 0 если совсем похожи 1/-1 ежели одна меньше/больше другой.А фактически да - скажи параметр похожести, там придумаем, что надо.
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
Agregat is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 13:51   #4
Авик
 
CyberJoe's Avatar
 
Join Date: Jul 2002
Location: Yerevan
Posts: 1,347
Rep Power: 7
Reputation: 19
Send a message via ICQ to CyberJoe
Ну как бы сказать вам.
Вот есть у меня несколько прайс листов с наименованиями лекарств.
Но в каждом прайсе все написанно по разному, для примера:
анальгин 25, Анальгин 25, Анальгин. 25., Анальгин mg25, Анальгин 25 мг.
и.т.д
Так вот мне надо как бы ну опознать "Анальгины", Аспирины и всякую мурню.
__________________
вот собственно все, что я хотел сказать.
CyberJoe is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 13:52   #5
Авик
 
CyberJoe's Avatar
 
Join Date: Jul 2002
Location: Yerevan
Posts: 1,347
Rep Power: 7
Reputation: 19
Send a message via ICQ to CyberJoe
И я не могу юзать strcomp, так как не на C++ вояю, так что алгоритм бы.
__________________
вот собственно все, что я хотел сказать.
CyberJoe is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 13:58   #6
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,637
Rep Power: 11
Reputation: 211
Send a message via ICQ to Agregat Send a message via MSN to Agregat
lstrcmp(i) - системные функции виндоза.
0. Sum = 0;
1. по очереди проходишь по всем символам сравниваешь их , если равны + 2. если равны, но без учета регистра +1 (тут я поправил)
3. пробелы не сравниваешь вообще - пропускаешь (пробел, верт и гор
табуляция, перевод строки, возврат каретки)
4. несовпадения вычитаешь
смотришь число...
или же:
берешь и ищещь слова из одной строки в другой без учета регистра... похожесть сумма похожих чисел чем больше тем лучше...
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!

Last edited by Agregat : Nov 11, 2004 at 14:27.
Agregat is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 14:23   #7
Главный Лысый
 
Pascal's Avatar
 
Join Date: Oct 2001
Location: AM
Posts: 2,829
Rep Power: 8
Reputation: 38
Send a message via ICQ to Pascal
Если используется MYSql

Я подозреваю, что надо смотреть в направлении либо:
Quote:
SOUNDEX(str) Returns a soundex string from str. Two strings that sound almost the same should have identical soundex strings. A standard soundex string is four characters long, but the SOUNDEX() function returns an arbitrarily long string. You can use SUBSTRING() on the result to get a standard soundex string. All non-alphabetic characters are ignored in the given string. All international alphabetic characters outside the A-Z range are treated as vowels. mysql> SELECT SOUNDEX('Hello');
-> 'H400'
mysql> SELECT SOUNDEX('Quadratically');
-> 'Q36324'
Note: This function implements the original Soundex algorithm, not the more popular enhanced version (also described by D. Knuth). The difference is that original version discards vowels first and then duplicates, whereas the enhanced version discards duplicates first and then vowels.
Либо смотреть здесь http://dev.mysql.com/doc/mysql/en/Fulltext_Search.html на предмет Score.
__________________
Ruben Muradyan
Technical Director
PanARMENIAN Network: Armenian News

----------------------------------------------------
Лысина - это полянка, вытоптанная мыслями.
----------------------------------------------------
Pascal is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 15:45   #8
Авик
 
CyberJoe's Avatar
 
Join Date: Jul 2002
Location: Yerevan
Posts: 1,347
Rep Power: 7
Reputation: 19
Send a message via ICQ to CyberJoe
А Если будет так:
Aspirin 25mg
25mg Aspirin

???

Да и Алгоритм должен быть быстрым, ведь таких стрингов будет 10000.
__________________
вот собственно все, что я хотел сказать.
CyberJoe is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 16:21   #9
панаехавший
 
Obelix's Avatar
 
Join Date: Jun 2003
Location: форпост
Posts: 4,005
Rep Power: 6
Reputation: 10
Send a message via ICQ to Obelix
Quote:
Originally Posted by CyberJoe
А Если будет так:
Aspirin 25mg
25mg Aspirin

???

Да и Алгоритм должен быть быстрым, ведь таких стрингов будет 10000.
Может тебе еще исскуственный интеллект?
__________________
Իսկ ԴՈՒ արդեն վաճառե՞լ ես Հայրենիքդ ռուսներին:

My Exchange Rate Monitor | Իմ Արտարժույթի Մոնիտորը

Obelix is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 16:24   #10
Дошкольник
 
Join Date: Aug 2004
Location: Oxford
Posts: 141
Rep Power: 5
Reputation: 10
В биоинформатике есть понятие - sequence alignment. Алгоритмы Needleman-Wunsch (global SA), Smith-Waterman (local SA)
Ablertus is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 16:29   #11
Авик
 
CyberJoe's Avatar
 
Join Date: Jul 2002
Location: Yerevan
Posts: 1,347
Rep Power: 7
Reputation: 19
Send a message via ICQ to CyberJoe
Quote:
Originally Posted by Obelix
Может тебе еще исскуственный интеллект?
Ну если тебе не сложно
ДА ладно, все же не так это сложно, (зато сколько дадут бабосов)
__________________
вот собственно все, что я хотел сказать.
CyberJoe is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 16:38   #12
Главный Лысый
 
Pascal's Avatar
 
Join Date: Oct 2001
Location: AM
Posts: 2,829
Rep Power: 8
Reputation: 38
Send a message via ICQ to Pascal
Quote:
Originally Posted by CyberJoe
А Если будет так:
Aspirin 25mg
25mg Aspirin

???

Да и Алгоритм должен быть быстрым, ведь таких стрингов будет 10000.
Full-text search v mysql bystriy.
I tvoi primery budut naydeny.
__________________
Ruben Muradyan
Technical Director
PanARMENIAN Network: Armenian News

----------------------------------------------------
Лысина - это полянка, вытоптанная мыслями.
----------------------------------------------------
Pascal is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 16:45   #13
Главный Лысый
 
Pascal's Avatar
 
Join Date: Oct 2001
Location: AM
Posts: 2,829
Rep Power: 8
Reputation: 38
Send a message via ICQ to Pascal
Odnako ideala ty vse ravno ne naydesh - poetomu stoit predusmotret' nekiy variant opredeleniya etikh parametrov vruchnuyu.
I tol'ko posle etogo nachat' sravnivat' realizatsii na "zhivykh sluchayakh"
__________________
Ruben Muradyan
Technical Director
PanARMENIAN Network: Armenian News

----------------------------------------------------
Лысина - это полянка, вытоптанная мыслями.
----------------------------------------------------
Pascal is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 16:53   #14
Авик
 
CyberJoe's Avatar
 
Join Date: Jul 2002
Location: Yerevan
Posts: 1,347
Rep Power: 7
Reputation: 19
Send a message via ICQ to CyberJoe
Думаю может просто сделать базу из всех имен вручную, а потом уже просто ее юзать...
но сделать базу из 1000 наименований... мдя...
__________________
вот собственно все, что я хотел сказать.
CyberJoe is offline   Reply With Quote Quote selected
Old Nov 11, 2004, 18:02   #15
Painfully Outlandish
 
gaglik's Avatar
 
Join Date: May 2003
Location: Albainn
Posts: 113
Rep Power: 6
Reputation: 10
you can use a dynamic programming algorithm to find the longest common substring (I think ignoring cases and spaces might be a good idea), then in the aspirin example you'll find "aspirin".
I think this will do the main part of the work.
gaglik is offline   Reply With Quote Quote selected
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 16:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link