Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Анализатор текста / 22 сообщений из 22, страница 1 из 1
11.11.2003, 10:06
    #32319624
beseder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Извините, если не в тему...
Приятель (геннетик по специальности) спросил меня, а как сделать сравнение двух буквенных последовательностей на совпадение букв с выводом результата.
Например:
первая послед. qwertyqwerty
вторая - qwerquickerti

результат: qwer----ert-

Вопрос вот в чем: можно ли это делать в чем-то, типа Access и нужно ли..
Может есть уже готовые решения? У них была прога, но под DOS, а под 2000 - она не работает.

Спасибо.
...
Рейтинг: 0 / 0
11.11.2003, 10:10
    #32319629
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Медленно будет, но сделать можно. Возможно какой-то другой язык программирования сделает требуемой одной строчкой, но не VB/VBA.
...
Рейтинг: 0 / 0
11.11.2003, 10:17
    #32319636
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Есть программа нестрогого сравнения строк, написанная на VB60. Думаю, ты сможешь имортировать модули из этой програмы.
Вот описание:
автор писал:Часто сталкивался с проблемой, когда нужно сравнивать строки, полученные из разных источников, которые имеют свою точку зрения на вопросы предоставления данных написание, грамотность, очепятки и т.д.). Например, "ул. Лёни Голикова" и "ул.Лени Голикава" в чём-то похожие названия, и хотелось бы как то это выразить. Данные пример как раз и служит для таких целей.
Выдает результат в виде числа от 0 до 1. Чем оно больше - тем больше схожесть строк. Скачать можно здесь
Удачи.
...
Рейтинг: 0 / 0
11.11.2003, 10:20
    #32319643
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Что-то не совсем понятно. В таком виде проблем особых я не вижу. Это ж по сути надо просто сравнить символы на одной позиции и поставить "-" или оставить сам символ. Может там еще какие-нибудь трудности, как сравнивать то?
...
Рейтинг: 0 / 0
11.11.2003, 10:24
    #32319654
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Тебе так что-ли надо:

первая послед. dddqwertyqwerty
вторая - qwerquickerti

результат: ---qwer----ert-

т.е. найти еще точку вхождения или как? при этом способе кстати возникают другие проблемы с интерпретацией результатов...
...
Рейтинг: 0 / 0
11.11.2003, 10:32
    #32319665
beseder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
2 Nektov
Спасибо. Сейчас посмотрю
2 SergeySV
>Тебе так что-ли надо:
Я, к сожалению, не знаю подробностей, что нужно геннетикам, но , похоже, ты прав.
...
Рейтинг: 0 / 0
11.11.2003, 11:45
    #32319842
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Вообщем сделать можно все что угодно, надо только уточнить подробности, потому что в такой постановке задачи пока слишком много вопросов, которые влияют на конечную реализацию.

А так в принципе, я для себя делал функцию Instr, которая позволяла вводить маску аки оператор Like, просто было интересно самому разработать алгоритм сравнения строки с маской. Получился не очень сложный алгоритм.
...
Рейтинг: 0 / 0
11.11.2003, 11:48
    #32319850
------------------
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
А еще лучше сходить в магазин и купить книгу. Как точно называется не помню, но есть как раз по этой теме - алгоритмы в генетике
...
Рейтинг: 0 / 0
11.11.2003, 11:52
    #32319860
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function XXX(s1 as string,s2 as string)as string

dim s as string,i as integer,n as integer

s= ""
n=len(s1)
if len(s2)<n then n=len(s2)
for i=1  to n
    if mid(s1,i, 1 )=mid(s2,i, 1 )then
        s=s & mid(s1,i, 1 )
    else
        s=s & "-"
    endif
next
XXX=s

end function
...
Рейтинг: 0 / 0
11.11.2003, 12:04
    #32319885
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Саныч, че-то не работает
Код: plaintext
1.
2.
3.
? XXX ( "qwqieqwqwqwq" ,  "sasiesqwqwqwq ie" )
 ---ie-------
 
...
Рейтинг: 0 / 0
11.11.2003, 12:05
    #32319886
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Или я задачу не допонял?
...
Рейтинг: 0 / 0
11.11.2003, 12:11
    #32319902
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Код: plaintext
1.
?XXX( "qwertyqwerty" , "qwerquickerti" )
qwer--------

Кусок "ert" не нашелся, потому что он в исходных строках находится в разных местах. В задачке не сказано, что делать в таком случае.
...
Рейтинг: 0 / 0
11.11.2003, 12:14
    #32319910
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Все правильно, именно об этом простом решении я и говорил. Мы просто сравниваем символы на одинаковой позиции, а вот если ему надо что-то другое, тогда не обойтись без уточнений, типа таких, первый символ дожен быть всегда, ищем первое вхождение, а потом уже бацаем "-" или буквы или еще как-нибудь, но в первоначальной формулировке пока слишком много вопросов...
...
Рейтинг: 0 / 0
11.11.2003, 12:19
    #32319922
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Для уточнения формулировки предлагаю пример:

123456789
123789456

- что должно получиться?
...
Рейтинг: 0 / 0
11.11.2003, 12:40
    #32319966
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Зачем прога на VB если есть стнандартные функции MSSQL
SOUNDEX
Returns a four-character (SOUNDEX) code to evaluate the similarity of two strings.
DIFFERENCE
Returns the difference between the SOUNDEX values of two character expressions as an integer.
PATINDEX
Returns the starting position of the first occurrence of a pattern in a specified expression, or zeros if the pattern is not found, on all valid text and character data types.
CHARINDEX
Returns the starting position of the specified expression in a character string.

Загнать символьные массивы в базу и обрабатывать построчно.

А в принципе ,для еще большего убыстрения ,если есть исходник проги или хотябы алгоритм,
то надо просто переписать на C++ и для тюнинга постаратся распаралелить
для возможности многпроцессорной обработки.
...
Рейтинг: 0 / 0
11.11.2003, 12:49
    #32319985
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
2ВС:
не, предлагаю такой пример:
555123456789
123789456

т.е. когда исходная строка больше и начинается с других символов, ну и для полного счастья наоборот, что делать когда исходная строка меньше - вообще не сравнивать, потому что такая ситуация невозможно по условию???
...
Рейтинг: 0 / 0
11.11.2003, 13:44
    #32320106
TRoUbLEs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Вообще, сам недавно искал подобную прогу. Нашел нечто похожее, называется bykva (ссылку только из дома могу дать). Позволяет искать вхождение строки в любом файле, а также дает статистику по входящим словам в тексте и можно сделать по словосочетаниям. В общем, достаточно ползеная штучка.
А что касается кода Саныча, то его надо доработать, ИМХО. Как я себе это вижу.
Берем 1-ю строку и берем 1-ый символ второй строки и начинаем оследовательно сравнивать с символами 1-ой строки. Как только нашли, берем 2-ой символ 2-ой строки и сравниваем со следующим символом 1-й строки. Если есть совпадение, то началась совпадающая последовательноть. Как только закончиласть, продолжаем дальше. Только вот тут вопрос, как автору надо это сравнивать? Продолжать дальше с того места, где остановились на 1-ой строке или начинать ее сначала?? В общем, нужна конкретная постановка задачи. ;-)
...
Рейтинг: 0 / 0
11.11.2003, 15:45
    #32320368
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
к "решению" ВС.
Если надо бистро, то не циклами, а побитово. Что-то наподобие:

"Оператор And выполняет также поразрядное сравнение двух числовых выражений и присваивает соответствующему разряду в переменной результат следующее значение:".

И, сдается мне, пИсать сие надо не на сИ а на ассемблере. т.ч. вопрос не по адресу.
...
Рейтинг: 0 / 0
11.11.2003, 15:59
    #32320393
TRoUbLEs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Ну почему же именно на асме?? Можно еще на Perl'e написать. Этот язык достаточно быстро работает со строками, насколько мне известно.
...
Рейтинг: 0 / 0
11.11.2003, 16:03
    #32320400
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Кстати, мой алгоритм можно ускорить.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function XXX(s1 as string,s2 as string)as string

dim s as string,i as integer

s=s1
if len(s2)<len(s) then s=s2
for i= 1  to len(s)
    if mid(s1,i, 1 )<>mid(s2,i, 1 )then mid(s,i, 1 )= "-" 
next
XXX=s

end function
...
Рейтинг: 0 / 0
12.11.2003, 10:35
    #32321055
vlad_707
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
мне кажется .http://algolist.manual.ru/search/ страничка может помочь с алгоритмами
http://algolist.manual.ru/search/
http://doors.infor.ru/allsrs/alg/index.html
вот здесь есть литературка..
http://www.3ka.mipt.ru/vlib/books/Programming/ComputerScience/StryngAnalysis/
а ещё можно копнуть такую книженцию..
http://pascal.sources.ru/docs/knuth3.htm
...
Рейтинг: 0 / 0
12.11.2003, 11:00
    #32321111
Roalex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализатор текста
Ну вот, еще немного и суперкомпы расшифровующие код ДНК остануться без работы.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Анализатор текста / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]