Kibor |
Отправлено: 07 Августа, 2020 - 19:17:46
|
Эксперт
Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Функция Кибор comparestr - Оценка похожести строк по содержимому. Тема
Пример:'
CODE:string all_string[7]={"junior", "working", "recognition", "with", "violet", "interest", "renewal"}
messagebox (comparestr("viot", 0.5, #all_string[0], sizearray(all_string)));
Или с помощью функционала Питона.
Скрипт Кибор
CODE:if (runpython())//Запустили интерпретатор
{
sendpython("import difflib^n");
sendpython("def similarity(s1, s2):");
sendpython(" normalized1 = s1.lower()");
sendpython(" normalized2 = s2.lower()");
sendpython(" matcher = difflib.SequenceMatcher(None, normalized1, normalized2)");
sendpython(" return matcher.ratio()^n");
messagebox (sendgetpython("similarity('мыло', 'мало')"));//0.75
messagebox (sendgetpython("similarity('шило', 'мыло')"));//0.5
messagebox (sendgetpython("similarity('совсем не похоже', 'на это')"));//0.090909090
closepython();//Завершили работу с интерпретатором
} |
|
|
neba2101 |
Отправлено: 07 Августа, 2020 - 19:22:47
|
Мастер
Покинул форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017
Репутация: 4
|
Kibor пишет: С помощью функционала Питона.
Скрипт Кибор
CODE:if (runpython())//Запустили интерпретатор
{
sendpython("import difflib^n");
sendpython("def similarity(s1, s2):");
sendpython(" normalized1 = s1.lower()");
sendpython(" normalized2 = s2.lower()");
sendpython(" matcher = difflib.SequenceMatcher(None, normalized1, normalized2)");
sendpython(" return matcher.ratio()^n");
messagebox (sendgetpython("similarity('мыло', 'мало')"));//0.75
messagebox (sendgetpython("similarity('шило', 'мыло')"));//0.5
messagebox (sendgetpython("similarity('совсем не похоже', 'на это')"));//0.090909090
closepython();//Завершили работу с интерпретатором
}
Спасибо! Отлично подходит для этой задачи.
(Добавление)
Kibor пишет: С помощью функционала Питона.
А как предать значение string в similarity?
Так не работает ::blink.gif::
CODE:string a="df-34";
string b="dy-30";
if (runpython())//Запустили интерпретатор
{
sendpython("import difflib^n");
sendpython("def similarity(s1, s2):");
sendpython(" normalized1 = s1.lower()");
sendpython(" normalized2 = s2.lower()");
sendpython(" matcher = difflib.SequenceMatcher(None, normalized1, normalized2)");
sendpython(" return matcher.ratio()^n");
messagebox (sendgetpython("similarity('"+a+"', '"+b+"')"));
closepython();//Завершили работу с интерпретатором
}
(Добавление)
messagebox (sendgetpython("similarity(^'"+a+"^', ^'"+b+"^')")); вот так наверно |
|
|
Kibor |
Отправлено: 07 Августа, 2020 - 21:25:34
|
Эксперт
Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
CODE:
double t;
if (runpython()==0){messagebox ("Установите питон"); goto er;}
pyt();
if (сравнение("это вот", "вот это", #t)>0.5)
{
messagebox ("норм "+format(t));
}
else
{
messagebox ("так себе "+format(t));
}
er:;
function сравнение(string ss1, string ss2, double #e)
{
string r= sendgetpython("similarity(^'"+ss1+"^', ^'"+ss2+"^')");
e=formatsn(r);
return e;
}
function pyt()
{
sendpython("import difflib^n");
sendpython("def similarity(s1, s2):");
sendpython(" normalized1 = s1.lower()");
sendpython(" normalized2 = s2.lower()");
sendpython(" matcher = difflib.SequenceMatcher(None, normalized1, normalized2)");
sendpython(" return matcher.ratio()^n");
}
CODE:
double t;
if (runpython()==0){messagebox ("Установите питон"); goto er;}
pyt();
t=сравнение("вот", "это");
if (t>0.5)
{
messagebox ("норм "+format(t));
}
else
{
messagebox ("так себе "+format(t));
}
er:;
function сравнение(string ss1, string ss2)
{
string r= sendgetpython("similarity(^'"+ss1+"^', ^'"+ss2+"^')");
return formatsn(r);
}
function pyt()
{
sendpython("import difflib^n");
sendpython("def similarity(s1, s2):");
sendpython(" normalized1 = s1.lower()");
sendpython(" normalized2 = s2.lower()");
sendpython(" matcher = difflib.SequenceMatcher(None, normalized1, normalized2)");
sendpython(" return matcher.ratio()^n");
}
(Добавление)
neba2101 пишет: messagebox (sendgetpython("similarity(^'"+a+"^', ^'"+b+"^')")); вот так наверно наверно.. |
|
|
Kibor |
Отправлено: 07 Августа, 2020 - 21:55:19
|
Эксперт
Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
CODE:if (runpython()==0){messagebox ("Установите питон"); goto er;}
pyt();
string c=input("Введите 2 слова через пробел для сравнения");
string s[2];
if (regexsearch(2, #s[0], c, "[\S]+")!=2){messagebox ("минимум 2 слова через пробел.........."); goto er;}
messagebox (s[0]+" - "+s[1]+" = "+format(сравнение(s[0], s[1])));
er:;
function сравнение(string ss1, string ss2)
{
string r= sendgetpython("similarity(^'"+ss1+"^', ^'"+ss2+"^')");
return formatsn(r);
}
function pyt()
{
sendpython("import difflib^n");
sendpython("def similarity(s1, s2):");
sendpython(" normalized1 = s1.lower()");
sendpython(" normalized2 = s2.lower()");
sendpython(" matcher = difflib.SequenceMatcher(None, normalized1, normalized2)");
sendpython(" return matcher.ratio()^n");
} |
|
|
Kibor |
Отправлено: 10 Августа, 2020 - 19:40:20
|
Эксперт
Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Использование Питона для корректировка неточно распознанных слов при распознавание текста:
Но этот код работает быстрее
CODE:
if (runpython()==0){messagebox ("Не удалось запустить Python"); goto er;}//Запускаем интерпретатор Python
sendgetpython("import difflib");
//Массив верных слов
int kml=7;
string all_string[7]={"junior", "working", "recognition", "with", "violet", "interest", "renewal"}
messagebox ("корявое junlor = точое "+rez("junlor"));//Узнаем каккое слово близкое к корявому junlor
messagebox ("корявое worklng = точое "+rez("worklng"));//Узнаем каккое слово близкое к корявому worklng
messagebox ("корявое recognjtion = точое "+rez("recognjtion"));//Узнаем каккое слово близкое к корявому recognjtion
messagebox ("корявое recognllltjon точое = "+rez("recognllltjon"));//Узнаем каккое слово близкое к корявому recognllltjon
messagebox ("корявое lnterest = точое "+rez("lnterest"));//Узнаем каккое слово близкое к корявому lnterest
messagebox ("корявое vlolet = точое "+rez("vlolet"));//Узнаем каккое слово близкое к корявому vlolet
messagebox ("а на что похоже это? ietsert = точое "+rez("ietsert"));//Узнаем каккое слово близкое к корявому ietsert
closepython();//Завершаем работу с интерпретатором
er:;
function rez(string s)
{
double max=-1;
double t;
double i=0;
for (int n=0; n<kml; n++)
{
t=compare(s, all_string[n]);
if (t>max)
{
max=t;
i=n;
}
}
return all_string[i];
}
function compare(string s1, string s2)
{
sendgetpython("s1=^'"+s1+"^'");
sendgetpython("s2=^'"+s2+"^'");
__python
normalized1 = s1.lower()
normalized2 = s2.lower()
matcher = difflib.SequenceMatcher(None, normalized1, normalized2)
__end_python
return formatsn(sendgetpython("matcher.ratio()"));
}
|
|
|
Kibor |
Отправлено: 08 Апреля, 2021 - 13:16:34
|
Эксперт
Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Функция Кибор comparestr - Оценка похожести строк по содержимому. Тема
Пример:'
CODE:string all_string[7]={"junior", "working", "recognition", "with", "violet", "interest", "renewal"}
messagebox (comparestr("viot", 0.5, #all_string[0], sizearray(all_string))); |
|
|
|