Я читал много о теме Юникода, но я по-прежнему очень смущен нормализацией и ее различными формами. Короче говоря, я работаю над проектом, который включает в себя извлечение текста из файлов PDF и выполнение анализа семантического текста.Какая форма нормализации юникода подходит для интеллектуального анализа текста?
Мне удалось удовлетворительно извлечь текст, используя простой скрипт python, но теперь мне нужно убедиться, что все эквивалентные орфографические строки имеют одно (и только одно) представление. Например, типовая лигатура «fi» должна быть разложена на «f» и «i».
Я вижу, что функция unicodedata.normalize
python предлагает несколько алгоритмов для нормализации кодовых точек юникода. Может кто-то пожалуйста, объясните разницу между:
- NFC
- NFKC
- NFD
- NFKD
Я прочитал relevant wikipedia article, но это было слишком непрозрачна для моего слабого мозга, чтобы понять, , Может ли кто-то любезно объяснить это мне на простом английском языке?
Кроме того, не могли бы вы рекомендовать метод нормализации, наилучшим образом адаптированный к проекту обработки естественного языка?
Alexis, благодарю вас за ответ. Позвольте мне подвести итог вашему сообщению, чтобы убедиться, что я правильно понял. Короче говоря, я должен выбрать критерий «совместимости», потому что (как я понимаю) это то, что отделяет лигатуры в эквивалентные формы отдельного символа.Кроме того, использование декомпозиции означает, что диакритики разделены на два символа, правильно? Таким образом, я могу смотреть отдельно на базовую букву (например, 'e') и ее диакритику. Кроме того, NFKD является форма нормализации, которая выполняет декомпозицию совместимости. Я что-то пропускаю? – blz
Думаю, вы поняли. Посмотрите внимательно, чтобы точно узнать, что вы можете ожидать от форм совместимости. – alexis