4

Я читал много о теме Юникода, но я по-прежнему очень смущен нормализацией и ее различными формами. Короче говоря, я работаю над проектом, который включает в себя извлечение текста из файлов PDF и выполнение анализа семантического текста.Какая форма нормализации юникода подходит для интеллектуального анализа текста?

Мне удалось удовлетворительно извлечь текст, используя простой скрипт python, но теперь мне нужно убедиться, что все эквивалентные орфографические строки имеют одно (и только одно) представление. Например, типовая лигатура «fi» должна быть разложена на «f» и «i».

Я вижу, что функция unicodedata.normalize python предлагает несколько алгоритмов для нормализации кодовых точек юникода. Может кто-то пожалуйста, объясните разницу между:

  • NFC
  • NFKC
  • NFD
  • NFKD

Я прочитал relevant wikipedia article, но это было слишком непрозрачна для моего слабого мозга, чтобы понять, , Может ли кто-то любезно объяснить это мне на простом английском языке?

Кроме того, не могли бы вы рекомендовать метод нормализации, наилучшим образом адаптированный к проекту обработки естественного языка?

ответ

4

Такие символы, как é, могут быть записаны либо как один символ, либо как последовательность из двух, обычный e плюс акцент (диакритический). Нормализация выбирает последовательно среди таких альтернатив и последовательно упорядочивает множественные диакритики.

Поскольку вам нужно иметь дело с лигатурами, вы должны использовать «совместимость (де)», NFKD или NFKC, которая нормализует лигатуры. Вероятно, нормально использовать либо скомпонованные, либо разложенные формы, но если вы также хотите выполнить сопоставление с потерями (например, совпадение é, даже если пользователь вводит простой e, вы можете использовать разложение NFKD совместимости и отказаться от диакритики для свободного Соответствующий.

+0

Alexis, благодарю вас за ответ. Позвольте мне подвести итог вашему сообщению, чтобы убедиться, что я правильно понял. Короче говоря, я должен выбрать критерий «совместимости», потому что (как я понимаю) это то, что отделяет лигатуры в эквивалентные формы отдельного символа.Кроме того, использование декомпозиции означает, что диакритики разделены на два символа, правильно? Таким образом, я могу смотреть отдельно на базовую букву (например, 'e') и ее диакритику. Кроме того, NFKD является форма нормализации, которая выполняет декомпозицию совместимости. Я что-то пропускаю? – blz

+0

Думаю, вы поняли. Посмотрите внимательно, чтобы точно узнать, что вы можете ожидать от форм совместимости. – alexis