Канонизация - Canonicalization

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

Случаи использования

Имена файлов

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

Канонизация имен файлов важна для компьютерной безопасности. Например, веб-сервер может иметь ограничение, согласно C:\inetpub\wwwroot\cgi-binкоторому могут выполняться только файлы в каталоге cgi . Это правило реализуется путем проверки того, что путь начинается с C:\inetpub\wwwroot\cgi-bin\и только после этого выполняется. Хотя C:\inetpub\wwwroot\cgi-bin\..\..\..\Windows\System32\cmd.exeизначально файл кажется находящимся в каталоге cgi, он использует ..спецификатор пути для обхода резервной копии иерархии каталогов в попытке выполнить файл за пределами cgi-bin. Разрешение cmd.exeна выполнение будет ошибкой, вызванной невозможностью канонизировать имя файла до простейшего представления C:\Windows\System32\cmd.exe, и называется уязвимостью обхода каталога . Когда путь канонизирован, ясно, что файл не должен запускаться.

Юникод

В Юникоде многие буквы с диакритическими знаками могут быть представлены более чем одним способом. Например, é можно представить в Юникоде как символ Юникода U + 0065 (СТРОЧНАЯ ЛАТИНСКАЯ БУКВА E), за которым следует символ U + 0301 (ОБЪЕДИНЕНИЕ ОСТРОГО ДИСКА), но он также может быть представлен как предварительно составленный символ U + 00E9 (ЛАТИНСКИЙ СТРОЧНАЯ БУКВА E С ОСТРЫМ). Это усложняет сравнение строк, поскольку необходимо учитывать все возможные представления строки, содержащей такие глифы. Чтобы справиться с этим, Unicode предоставляет механизм канонической эквивалентности . В этом контексте канонизация - это нормализация Unicode .

Кодировки переменной ширины в стандарте Unicode, в частности UTF-8 , в некоторых ситуациях могут вызвать дополнительную потребность в канонизации. А именно, по стандарту в UTF-8 существует только одна допустимая последовательность байтов для любого символа Unicode, но некоторые последовательности байтов недопустимы, т.е. не могут быть получены путем кодирования любой строки символов Unicode в UTF-8. Некоторые неаккуратные реализации декодера могут принимать недопустимые последовательности байтов в качестве входных данных и выдавать допустимый символ Юникода в качестве выходных данных для такой последовательности. Если использовать такой декодер, некоторые символы Unicode фактически имеют более одной соответствующей последовательности байтов: действительную и некоторые недопустимые. Это может привести к проблемам безопасности, аналогичным описанным в предыдущем разделе. Следовательно, если кто-то хочет применить какой-либо фильтр (например, регулярное выражение, записанное в UTF-8) к строкам UTF-8, которые позже будут переданы декодеру, который допускает недопустимые последовательности байтов, следует канонизировать строки, прежде чем передавать их фильтру. . В этом контексте канонизация - это процесс преобразования каждого строкового символа в его единственную допустимую последовательность байтов. Альтернативой канонизации является отклонение любых строк, содержащих недопустимые последовательности байтов.

URL

Канонический URL является URL для определения единственного источника истины для дублированного контента .

Использование Google

Канонический URL-адрес - это URL-адрес страницы, которая, по мнению Google, является наиболее репрезентативной из набора повторяющихся страниц на вашем сайте. Например, если у вас есть URL-адреса для одной и той же страницы (например, https://example.com/?dress=1234и https://example.com/dresses/1234), Google выбирает один из них как канонический. Обратите внимание, что страницы не обязательно должны быть абсолютно идентичными; незначительные изменения в сортировке или фильтрации страниц списка не делают страницу уникальной (например, сортировка по цене или фильтрация по цвету элемента).

Каноническое объявление может находиться не в одном домене, а в другом домене.

Поисковые системы могут рассматривать URL-адреса как повторяющиеся по разным причинам. Например

Эти URL-адреса могут иметь похожее содержание, но Google может счесть их повторяющимися. Эту проблему может решить добавление канонического URL-адреса на исходной странице.

Интернет

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

Канонический элемент ссылка может получить используется для определения канонического URL.

Интранет

Во внутренней сети преобладает ручной поиск информации. В этом случае канонические URL-адреса также могут быть определены в не читаемой компьютером форме. Например, в руководстве .

Разное

Канонические URL-адреса обычно представляют собой URL-адреса, которые используются для действия совместного использования .

Поскольку канонический URL-адрес используется в результатах поиска поисковых систем, они в большинстве случаев являются целевой страницей .

Поисковые системы и SEO

В веб-поиске и поисковой оптимизации (SEO) канонизация URL-адресов имеет дело с веб-контентом, который имеет более одного возможного URL-адреса. Наличие нескольких URL-адресов для одного и того же веб-контента может вызвать проблемы для поисковых систем, особенно при определении того, какой URL-адрес должен отображаться в результатах поиска. Большинство поисковых систем поддерживают элемент канонической ссылки как подсказку, URL-адрес которой следует рассматривать как истинную версию. Как указывает Джон Мюллер из Google, наличие на странице других директив, таких как элемент noindex для роботов, может давать поисковым системам противоречивые сигналы о том, как обрабатывать канонизацию.

Пример:

Все эти URL-адреса указывают на домашнюю страницу Википедии, но поисковая система будет рассматривать только один из них как каноническую форму URL-адреса.

XML

Канонический XML документ по определению является XML - документ , который находится в XML - канонической форме, определяется канонической спецификации XML . Вкратце, канонизация удаляет пробелы в тегах, использует определенные кодировки символов, сортирует ссылки на пространства имен и удаляет избыточные, удаляет объявления XML и DOCTYPE и преобразует относительные URI в абсолютные URI.

Простым примером могут быть следующие два фрагмента XML:

  1. <node1 x='1' a="1" a="2">Data</node1    > <node2>Data</node2>
  2. <node1 a="2" x="1">Data</node1> <node2>Data</node2>

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

Полный список изменений канонизации приведен ниже:

  • Документ закодирован в UTF-8
  • Разрывы строк нормализованы до #xA при вводе перед синтаксическим анализом
  • Значения атрибутов нормализованы, как если бы проверяющим процессором
  • Ссылки на символы и проанализированные сущности заменяются
  • Разделы CDATA заменяются их символьным содержимым
  • Объявление XML и объявление типа документа удаляются.
  • Пустые элементы преобразуются в пары начальных и конечных тегов.
  • Пробелы вне элемента документа и внутри начального и конечного тегов нормализованы.
  • Все пробелы в содержании символов сохраняются (за исключением символов, удаленных во время нормализации перевода строки)
  • Разделители значений атрибутов устанавливаются в кавычки (двойные кавычки)
  • Специальные символы в значениях атрибутов и содержании символов заменяются ссылками на символы
  • Из каждого элемента удаляются лишние объявления пространств имен.
  • Атрибуты по умолчанию добавляются к каждому элементу
  • Выполняется исправление xml:baseатрибутов
  • Лексикографический порядок налагается на объявления пространств имен и атрибуты каждого элемента.

Компьютерная лингвистика

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

Лемматизация - это процесс преобразования слова в его каноническую форму .

Смотрите также

использованная литература

внешние ссылки