Использование Manticore Search с документами на китайском, японском и корейском языках

Внимание: эта статья устарела. Для актуальной информации, пожалуйста, перейдите по ссылке.

О языках CJK

Языки CJK имеют более 40,000 символов. Большинство из них китайские. Иногда вы можете увидеть аббревиатуру CJKV. "V" здесь обозначает вьетнамский язык.

Символы CJK включают:

  1. Для китайского языка: hànzì – традиционные китайские иероглифы; Bopomofo – китайский фонетический алфавит; Pinyin – романизация китайского языка (понятие, близкое к понятию транслитерации).
  2. Для японского языка: Хирагана – японская слоговая азбука; Катакана – японская слоговая азбука; арабские цифры.
  3. Для корейского языка: Хангыль (корейский алфавит)

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

Для отображения текста на языках CJK вы можете использовать следующие кодировки: Big5, EUC-JP, EUC-KR, ISO 2022-JP, KS C 5861, Shift-JIS, Unicode и т.д. Для алфавитов языков CJK существуют такие блоки Unicode ( http://www.unicode.org/Public/UNIDATA/Blocks.txt ):

ДиапазонБлокКомментарии
1100 .. 11FFHangul JamoОдин символ из слога в корейском алфавите Хангыль. Буквы Jamo используются для формирования слогов Хангыль
2E80 .. 2EFFДополнение радикалов CJKКлюч (радикал) – элемент иероглифического алфавита, который позволяет группировать слова или действует как семантический элемент, определяющий значение следующих символов.
2F00 .. 2FDFРадикалы КансиСписок ключей Канси, принятых в Японии, Корее, Тайване, традиционно включает 214 символов
3000 .. 303FСимволы и пунктуация CJKИдеографические символы и пунктуация
3040 .. 309FХираганаЯпонская слоговая азбука
30A0 .. 30FFКатаканаЯпонская слоговая азбука
3100 .. 312FBopomofoКитайский фонетический алфавит
3130 .. 318FСовместимость Jamo Hangul
3190 .. 319FКанбун Камбун или канбунОдин из письменных языков средневековой Японии
31A0 .. 31BFРасширенный Bopomofo
31C0 .. 31EFПростые черты CJK (элементы) символов
31F0 .. 31FFФонетические расширения Катаканы
3200 .. 32FFЗакрытые буквы и месяцы CJKБуквы и месяцы CJK в кругах
3300 .. 33FFСовместимость CJK
3400 .. 4DBFРасширение унифицированных идеографов CJKУнифицированные идеографы CJK
4DC0 .. 4DFFСимволы гексаграмм Ицзина
4E00 .. 9FFFУнифицированные идеографы CJKИдеографы – письменный знак, условное изображение или картинка, не соответствующее звукам речи, и целое слово
A000 .. A48FСлоги Yi язык YiЯзык провинции Южный Сычуань
A490 .. A4CFРадикалы Yi
AC00 .. D7AFСлоги Хангыль Слоги Хангыль
D7B0 .. D7FFРасширенные Jamo Hangul-B
20000 .. 2A6DFРасширение унифицированных идеографов CJK B
2A700 .. 2B73FРасширение унифицированных идеографов CJK C
2F800 .. 2FA1FДополнение идеографов CJK совместимости

Обратите внимание, что арабские цифры, которые могут использоваться в текстах CJK, соответствуют кодам символов широкого пространства (см. раздел FFF0 .. FFFF; Специальные).

Вы можете увидеть здесь http://www.utf8-chartable.de/ , как выглядят определенные символы.

Как сообщить Manticore Search, что ваш документ содержит символы CJK?

Manticore Search фильтрует тексты на уровне символов. Символы, не принятые для токенизации, считаются недействительными и заменяются пробелами, которые действуют как разделители. По умолчанию токенизируются только английские и русские символы (вместе с подчеркиванием и буквами).

Языки CJK имеют символы, которые могут формировать несегментированные тексты. Для этих типов символов Manticore может индексировать смежные группы этих символов как n-grams.

В конфигурации индекса нам нужно настроить 3 параметра:

  1. charset_table – основной параметр для описания символов. Содержит таблицу символов и правила для приведения к нижнему регистру.
  2. ngram_chars – описание символов, необходимых для разделения текста CJK на слова с использованием модели N-gram;
  3. Установите значение ngram_len на 1. Это включает функцию n-gram. В настоящее время поддерживаются только 1-grams (текст "ABCDEF" [где A до F находятся в списке ngram_chars] индексируется как "A B C D E F").

Как создать описания для параметров charset_table и ngram_chars

Обновление: более новые версии Manticore Search вводят псевдоним charset_table, содержащий все необходимые символы CJK, а также процессор морфологии китайского ICU. Для работы с CJK в последней версии прочитайте следующую статью .

Или, другими словами, как объяснить Manticore Search, какие коды символов UTF-8 принадлежат к семейству языков CJK?

Вы можете использовать наборы для блоков языков с charset_tables страницы вики Sphinx или использовать данные из таблицы выше и правила, установленные в charset_table , чтобы составить ваше описание опций (см. 1-3 выше) для символов и букв для языков CJK. Будьте осторожны и дважды проверьте, что все блоки диапазонов символов, которые вам нужны, включены в описание символов индекса Manticore Search в конфигурационном файле. Например, если вы будете использовать описания диапазонов наборов символов, которые вы получили по ссылке выше для индексации документов, содержащих языки Лису или Вай, поиск не будет работать должным образом.

Обратите особое внимание на правильную настройку параметра ngram_chars. При поиске Manticore Search не будет учитывать эти символы как совпадения поиска.

Полезные ссылки:

http://en.wikipedia.org/wiki/CJK
http://en.wikipedia.org/wiki/Chinese_character
http://en.wikipedia.org/wiki/Pinyin
http://en.wikipedia.org/wiki/Space_%28punctuation%29
http://www.babelstone.co.uk/Yi/unicode.html

Установить Manticore Search

Установить Manticore Search