Подтвердить что ты не робот

Есть ли список символов, похожих на английские буквы?

У меня есть трещина в фильтрации профанации для веб-форума, написанного на Python.

Как часть этого, я пытаюсь написать функцию, которая берет слово, и возвращает все возможные макеты написания этого слова, которые используют визуально похожие символы вместо конкретных букв (например, s † å © køv € rƒ | øw).

Я ожидаю, что с течением времени Ill будет расширять этот список, чтобы охватить творчество людей, но есть ли список, плавающий в любом месте в Интернете, который я мог бы использовать в качестве отправной точки?

4b9b3361

Ответ 1

Это, вероятно, и гораздо более глубокое, чем вам нужно, но недостаточно широкое, чтобы покрыть ваш прецедент, но консорциум Unicode должен был бороться с атаками на интернационализированные доменные имена и придумал этот список гомографов (персонажи с то же или подобное рендеринг):

http://www.unicode.org/Public/security/latest/confusables.txt

Вы можете сделать начальную точку как минимум.

Ответ 3

У меня нет решения как такового, но у меня есть некоторые идеи.

@collapsar подход в комментариях звучит хорошо для меня в принципе, но я думаю, вы хотели бы использовать готовые библиотеки OCR, а не пытаться самостоятельно анализировать изображения. Чтобы сделать изображения, я бы использовал шрифт как что-то в семействе DejaVu, потому что он имеет хороший охват относительно неясных символов Юникода.

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

Ничто не сравнится с большим количеством данных для такой проблемы. Вы могли бы собрать много хороших примеров замещений людей, которые делали, очищая правильные веб-форумы. Затем вы можете использовать эту процедуру, чтобы изучить новые: во-первых, найдите слова, содержащие в основном символы, которые вы можете идентифицировать, а также некоторые из них вы не можете. Сделайте регулярное выражение из слова, преобразуя все, что вы можете, в обычные буквы и замените все остальное на ".". Затем сопоставьте свое регулярное выражение со словарем, и если вы получите только одно совпадение, у вас есть очень хорошие кандидаты на то, что должны представлять неизвестные персонажи. (Я бы не использовал регулярное выражение для поиска словаря, но вы поняли эту идею.)

Вместо майнинга вы можете использовать Google n-gram corpus (http://storage.googleapis.com/books/ngrams/books/datasetsv2.html), но я не в состоянии проверить прямо сейчас, если в нем содержатся псевдословные слова, которые вам нужны.