Замена в тексте английских букв на схожие русские.

12
antono
На сайте с 12.07.2004
Offline
297
20495

Некоторые партнерки дают XML в котором некоторые русские буквы заменены на графически похожие английские. Если их просто заменять str_replace то пострадают английские слова в тексте. Не хотелось бы изобретать велосипед, есть ли уже алгоритм или готовая функция?

N
На сайте с 18.05.2003
Offline
100
#1
antono:
Некоторые партнерки дают XML в котором некоторые русские буквы заменены на графически похожие английские.

Если не секрет, то кто делает такую гадость? И, главное, зачем? Яндекс и так автоматом переводит такие слова к русскому варинату, так что избавиться от дублей не получится...

MoMM
На сайте с 16.06.2006
Offline
727
#2
Newm:
И, главное, зачем?

это они "блох запускают" - чтобы можно было прищучить тех, кто пользуется их контентом, но не является их партнером... эдакое "доказательство" копирования их авторского текста.

antono
На сайте с 12.07.2004
Offline
297
#3
Newm:
Если не секрет, то кто делает такую гадость? И, главное, зачем? Яндекс и так автоматом переводит такие слова к русскому варинату, так что избавиться от дублей не получится...

Я не знаю зачем они делают. Яндкс переводит, но все таки хотелось по человечески сделать.

MoMM:
это они "блох запускают" - чтобы можно было прищучить тех, кто пользуется их контентом, но не является их партнером... эдакое "доказательство" копирования их авторского текста.

Каких блох? Такой текст отдается всем, в том числе и реальным партнерам.

Вообще вопрос был технический а не этический. Видимо пока нет готового решения, придется что-то изобретать.

Brand from Amber
На сайте с 18.08.2007
Offline
293
#4
antono:
есть ли уже алгоритм

Как вариант: "Топаем" от первого символа в тексте к последнему, если находим символ отличающийся от Русского - смотрим, к примеру, два предыдущих и два последующих (кроме знаков препинания и не забывая, что пробел является разделителем). На основании полученных данных делаем вывод в каком слове (Русском или Английском) находится проверяемый символ. Если в Русском - меняем (при необходимости) на Русский аналог.

Лучший способ понять что-то самому - объяснить это другому.
DrJeans
На сайте с 06.07.2006
Offline
231
#5

Одни запускают "блох", другие делают текст уникальным. Универсальной проверки и замены подобрать не получится, всё зависит от алгоритма в исходнике. Самое простое это делать поиск по текту таких букв и анализировлать их окружение. Если окружение явно не из той же языковой раскладки, то букву меняем. Пройдя по второму заходу, меняем другие буквы в дургих словах, в тех котрые были не тронуты и в итоге получаем относительно уникальный текст.

Спроси на Boosty: https://boosty.to/smorovoz SEO на Ютубе: https://www.youtube.com/@youtube-seo/
Shtogrin
На сайте с 02.11.2006
Offline
95
#6

Может проще через какой-нибудь speller пропустить

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
[Удален]
#7

naster, и тут ты :) Ну поздравляю я тебя :) Спасибо :)

DyaDya
На сайте с 11.04.2007
Offline
147
#8
antono:
Некоторые партнерки дают XML в котором некоторые русские буквы заменены на графически похожие английские. Если их просто заменять str_replace то пострадают английские слова в тексте. Не хотелось бы изобретать велосипед, есть ли уже алгоритм или готовая функция?

Хм, мне как раз нужно похожий скриптиг писать на php. Чтобы находить опечатки в названиях товаров в магазине. Юзеры, когда вносят товар, частенько путают раскладку. Получается примерно так же как и в вашем случае ;)

Правда, написать скриптиг, который на 100% определял бы какой слово русское с опечаткой или английской с опечаткой, трудновато будет (например, бывают названия моделей смешанные и название может быть только из 2 букв, тогда какая из них в правильной раскладке? :) будет вопросом ). Поэтому перед заменой нужно сначало вывести админу, чтобы админ сам дал согласие, что мол, да, ЗАМЕНИТЬ БУКВУ.

Достанете раньше, поделитесь ;)

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
K
На сайте с 12.07.2006
Offline
295
Kpd
#9

antono, алгоритм очевиден.

1. Разбиваете текст на слова.

2. Если в слове есть русские и латинские буквы и есть незаменяемые русские буквы (Щ, Ю, Ъ и т.д.), то заменяете все латинские буквы в слове на соответствующие русские.

3. Если в слове есть русские и латинские буквы и есть незаменяемые латинские буквы (W, F и т.д.), то заменяете все русские буквы в слове на соответствующие латинские

4. Если в слове нет никаких незаменяемых букв или есть одновременно и русские и латинские незаменяемые буквы - хз.

С Новым годом!

antono
На сайте с 12.07.2004
Offline
297
#10

А если просто посчитать в слове количество русских и количество латинских букв и чего окажется больше, к тому языку принадлежит слово. И делать соответственно этому преобразования.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий