DoudouLinux DoudouLinux

Дети любят такой компьютер!

Языки сайта [ar] [cs] [de] [en] [es] [fa] [fr] [it] [ms] [nl] [pt] [pt_br] [ro] [ru] [sr] [sr@latin] [th] [uk] [vi] [zh]

Перевод DansGuardian

Ноябрь 2010

Все версии этой статьи: [English] [русский]

DansGuardian – это фильтр контента DoudouLinux, который не дает детям попасть на «двусмысленный» веб-сайт. DansGuardian состоит из двух компонентов: черного списка адресов URL и анализа контента в реальном времени. Второй компонент нуждается в переводе, поскольку он использует список выражений, которые известны как двусмысленные или, наоборот, безопасные. Каждому слову и выражению приписывается вес ,который увеличивает или уменьшает общий вес страницы. Страница считается двусмысленной как только ее вес достигает 50 согласно конфигурации DansGuardian. Этот уровень защиты рекомендуется для малышей.

NB: страницу сообщений DansGuardian тоже надо переводить, но ее содержимое было перемещено в PO файлы, в том числе встроенные сообщения, которые были помещены в текстовые файлы. PO файлы можно найти на TransiFex.

Файлы со словами и выражениями

Файлы со словами и выражениями находятся в каталоге lang/trunk/apps/system/dansguardian/lists/phraselists/ дерева lang в SVN. Во время компиляции они копируются в /etc/dansguardian/lists/phraselists/. Файлы находятся в подкаталогах, которые соответствуют списку категорий:

$ ls /etc/dansguardian/lists/phraselists/
badwords forums gore malware personals secretsocieties violence
chat gambling idtheft music pornography sport warezhacking
conspiracy games illegaldrugs news proxies translation weapons
domainsforsale goodphrases intolerance nudism rta travel webmail
drugadvocacy googlesearches legaldrugs peer2peer safelabel upstreamfilter

Файлы в подкаталогах называются banned_lang или weighted_lang, где lang - это наименование вашего языка (кроме английского, файлы которого называются проще - banned и weighted:

$ ls /etc/dansguardian/lists/phraselists/pornography/
banned weighted_danish weighted_italian weighted_portuguese
banned_portuguese weighted_dutch weighted_japanese weighted_russian
weighted weighted_french weighted_malay weighted_spanish
weighted_chinese weighted_german weighted_norwegian

«Запрещенные» файлы содержат фразы, которые автоматически приводят к отклонению страницы без оценки остального контента. «Взвешенные» файлы содержат фразы, которые соотносятся с мерой «двусмысленности». Они организованы довольно просто:

#listcategory: "Pornography (Russian)"

<проститутки><50> #prostitutes < фото><5> #photo <бюст><40> #bust < анал ><40> #anal <анальный><40> #anal

Каждая строка содержит слово или выражение и его вес. Комментарии предваряются знаком решетки “#”. Пробелы перед и после слова позволяют указать, что слово является частью более длинного слова или его окончанием. Это очень важно, поскольку слова типа anal также являются началом слов analysis, analogue и т.д. Правила такие:
Соответствия списка фраз
пробелы пример результат
пробел справа <abcd> равно любому слову, которое начинается abcd
пробел слева < abcd> равно любому слову, которое кончается abcd
два пробела <abcd > полное соответствие abcd
нет пробелов < abcd > равно любому слову, содержащему abcd

Обратите внимание, что файл английских взвешенных слов (у которого в названии нет наименования языка) гораздо больше файлов на других языках. Их размеры таковы:

$ ls -Ssh1 —hide ’banned*’ /etc/dansguardian/lists/phraselists/pornography/
total 152K
 80K weighted
 16K weighted_portuguese
 12K weighted_italian
8,0K weighted_japanese
4,0K weighted_french
4,0K weighted_spanish
4,0K weighted_danish
4,0K weighted_russian
4,0K weighted_german
4,0K weighted_malay
4,0K weighted_dutch
4,0K weighted_chinese
4,0K weighted_norwegian

Только файл с португальскими взвешенными словами действительно наполнен. Это значит, что работа по переводу DansGuardian предстоит немалая... Впрочем, весь английский файл можно заменить более коротким, но исчерпывающим списком слов и выражений на другом языке.

Неразбериха с кодировками

Файлы DansGuardian, поставляемые с DoudouLinux, имеют разные кодировки в зависимости от языка. Например, для французского языка используется латинская кодировка, а для русского — кириллическая. Для нас это большая проблема, потому что надо редактировать файлы, сохраняя правильную кодировку для каждого языка. По этой причине дерево “lang/” в DoudouLinux состоит из файлов, предварительно конвертированных в кодировку UTF-8. Это значит, что все файлы должны сохраняться именно в этой кодировке независимо от языка.

Еще одна проблема в том, что DansGuardian не предполагает, что веб-страницы, которые вы запрашиваете, имеют кодировку. Вместо этого он воспринимает контент как бинарный поток и побайтово сравнивает его со списком слов. Это значит, что надо иметь файл взвешенных слов для каждой возможной кодировки каждого языка... Опять-таки дерево “lang/” должно содержать только файлы в кодировке UTF-8. Файлы в дополнительных кодировках автоматически генерируются при компиляции образа CD, чтобы уменьшить труд переводчика.

Значит если вы хотите добавить кодировку для своего языка, надо изменить файл lang/trunk/apps/system/dansguardian/lists/weightedphraselist. Он содержит список файлов, загружаемых DansGuardian. Тонкость в том, что если скрипт, компилирующий образ CD, не находит файл в этом списке, он пытается сгенерировать его из другого файла, который предполагает родительским и кодировку которого сохраняет. Дополнительные файлы должны именоваться так: weighted_LANGUAGE-ENCODING. Например, несуществующий файл weighted_russian-cp1251 будет конвертирован скриптом, компилирующим образ CD из файла weighted_russian, при этом кодировка поменяется с UTF-8 на cp1251. Результат и будет назван weighted_russian-cp1251!

Ниже небольшой пример файла weightedphraselist:

.Include</etc/dansguardian/lists/phraselists/pornography/weighted_spanish> #ALPHA#
.Include</etc/dansguardian/lists/phraselists/pornography/weighted_russian> #BETA#
.Include</etc/dansguardian/lists/phraselists/pornography/weighted_russian-cp1251>
.Include</etc/dansguardian/lists/phraselists/pornography/weighted_russian-koi8>
.Include</etc/dansguardian/lists/phraselists/nudism/weighted>

На этом примере видно, как список русских слов в UTF-8 может быть сконвертирован в файлы с кодировкой p1251 и koi8 во время компиляции образа.

Особенности алфавита

Если посмотреть на список русских фраз, то вы увидите такие комментарии:

< секс чат ><50> #sex chat
< cекс чат ><120> #sex chat (first ’c’ is latin)
< секс форум ><50> #sex forum
< cекс форум ><120> #sex forum (first ’c’ is latin)

Видно, что одна и та же фраза повторяется дважды. Выглядят они одинаково, но на само деле разные, потому что буква С в кириллице имеет цифровой код, отличный от буквы С в латинице. В результате можно написать нехорошее слово, используя разные алфавиты в одном слове и таким образом обойти фильтр контента... Вот почему такой трюк имеет очень высокий вес вредоносности!

Так что если в вашем языке используется алфавит, буквы которого выглядят как буквы другого алфавита, вы должны переписать двусмысленные слова, перемешав алфавиты и присвоить такому слову очень высокий вес вредоносности.


identica logo facebook logo google+ logo

Географическое положение посетителя

DoudouLinux logo Debian logo TSPU logo Genesi logo Gandi logo Hosting Extreme logo Linux Jobs Reviewed by I love Free Software

Creative Commons Copyright © DoudouLinux.org team - Весь текст с данного сайта публикуется по условиям лицензии Creative Commons BY-SA

SPIP | squelette | Карта сайта| RSS и iCal RSS 2.0