Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Замена символов с строке  [new]
Кареглазая_зая
Member

Откуда:
Сообщений: 38
Всем привет! Подскажите пожалуйста, может быть кто-то сталкивался с похожей проблемой. Необходимо осуществлять замену символов в строке. Ведется поиск по ФИО не в лоб, а подменой символов по самым распространенным типам опечаток, т.е. Щ на Ш, Ь на И, Ъ на И, двойные буквы одинарными. Как можно быстро находить эти двойные буквы в строке? Не перебором же по всему алфавиту.....
28 дек 17, 09:33    [21068829]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
так что-ли?
DECLARE @haystack VARCHAR(MAX) = 'пыш-пыщ оло-ло, я водитель нло'
DECLARE @needle VARCHAR(MAX) = 'пыщ-пыщ'
SELECT [pos] = PATINDEX( '%' + REPLACE( @needle, 'Щ', QUOTENAME( 'ЩШ' ) ) + '%', @haystack )
28 дек 17, 09:42    [21068853]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
Кареглазая_зая
Member

Откуда:
Сообщений: 38
Руслан Дамирович, например, Даммироович -> Дамирович
28 дек 17, 09:55    [21068898]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Кареглазая_зая
Всем привет! Подскажите пожалуйста, может быть кто-то сталкивался с похожей проблемой. Необходимо осуществлять замену символов в строке. Ведется поиск по ФИО не в лоб, а подменой символов по самым распространенным типам опечаток, т.е. Щ на Ш, Ь на И, Ъ на И, двойные буквы одинарными. Как можно быстро находить эти двойные буквы в строке? Не перебором же по всему алфавиту.....

Вам нужно обратиться к Игорю Ашманову. Он как раз занимался проблемой автокоррекции в далеких 90-х и реализовал модуль для Microsoft, который в Word все эти двойные буквы ловит и опечатки.
Можно попробовать через OLE копировать кусок в Word, вызывать макросом на VBA проверку синтаксиса и орфографии, а затем преобразованный и очищенный абзац копировать обратно в столбец nvarchar(max) в таблицу SQL.
28 дек 17, 09:56    [21068899]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
dao
Member

Откуда: Москва
Сообщений: 771
основа всё та же - создается словарь правил или стандартных опечаток
а дальше если вы работаете со строкой - то применяете их к строке
способы могут быть разные - от банального like до индексной таблички
если со множеством строк - то лучше наверное будет индексная табличка .
но тока учтите - в таких вещах автоматическая автозамена очень плохой помощник. Всё должно отсматриваться глазками.
Правда есть исключение )) работа с персональными данными )) там можно словчить - если сравниваются довольно большие банные по человеку ( типа - место рождения, адрес, дата рождения, фио и остальные редко меняемые данные ) то если не совпадение в одном поле из нескольких, по с большей долей вероятности таки описка, и её можно исправить.
28 дек 17, 10:09    [21068926]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
Кареглазая_зая
Не перебором же по всему алфавиту.....
Вообще-то, лучше всего именно перебором.
Ничего страшного! Например:

Есть ли у кого готовая функция перевода (транслит) с руского на английский
28 дек 17, 10:10    [21068928]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
aleks222
Guest
Кареглазая_зая
Всем привет! Подскажите пожалуйста, может быть кто-то сталкивался с похожей проблемой. Необходимо осуществлять замену символов в строке. Ведется поиск по ФИО не в лоб, а подменой символов по самым распространенным типам опечаток, т.е. Щ на Ш, Ь на И, Ъ на И, двойные буквы одинарными. Как можно быстро находить эти двойные буквы в строке? Не перебором же по всему алфавиту.....


1. Если враг не сдается - его уничтожают.
2. Удалите символы.
3. Найдите совпадения.
4. Обработайте найденное "як хотите"...

ЗЫ. Кстати в алфавите всего то 32 буквы. Так что 32 replace - самое быстрое.
28 дек 17, 10:13    [21068935]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Кареглазая_зая
Руслан Дамирович, например, Даммироович -> Дамирович

Это вам в Хогвардс на факультет прикладной магии
28 дек 17, 11:49    [21069330]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Кареглазая_зая
Руслан Дамирович, например, Даммироович -> Дамирович

Кареглазая_зая
двойные буквы одинарными. Как можно быстро находить эти двойные буквы в строке? Не перебором же по всему алфавиту.


Таки да. И оловянный -> оловяный. И дилемма -> дилема.
И Ваш генеральный директор Кареглазый_Геннадий -> Кареглазый_Генадий.

И уволят Вас за такой алгоритм с волчьим билетом на мороз.
28 дек 17, 12:13    [21069455]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
detku
Guest
Data Quality Services (DQS) ?

https://msdn.microsoft.com/ru-ru/library/gg524800(v=sql.120).aspx
28 дек 17, 12:15    [21069460]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
detku
Data Quality Services (DQS) ?
https://msdn.microsoft.com/ru-ru/library/gg524800(v=sql.120).aspx

Жара!
А есть видео, где ее используют?
28 дек 17, 12:42    [21069569]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
detku
Guest
https://www.youtube.com/results?search_query= Data Quality Services
28 дек 17, 12:55    [21069617]     Ответить | Цитировать Сообщить модератору
 Re: Замена символов с строке  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
detku
Data Quality Services (DQS) ?

https://msdn.microsoft.com/ru-ru/library/gg524800(v=sql.120).aspx

Это все замечательно, только вот условие автора темы "Ведется поиск по ФИО не в лоб, а подменой символов по самым распространенным типам опечаток".

У Вас база DQS. И есть в ней "Иванов", "Петров", "Аврам". Приходит Абрам Петрович. Или Авраам Моисеевич. Их как - добавлять в DQS или считать, что при вводе своих ФИО они ошиблись - и нужно автоматически заменить.

В общем, автору темы нужен универсальный алгоритм покруче ИИ. А выход из положения - внедрение процесса сверки вариантов, похожих на ошибки.
28 дек 17, 13:03    [21069654]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить