1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lionsoul-friso

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 8.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 15:18 434fa6c

Фрагменты кода на языке Friso

  • friso.mix_len = 2

    • Максимальная длина китайской фамилии Адрона.
  • friso.lna_len = 1

    • Добавить синонимы слов.
  • friso.add_syn = 1

    • Очистить стоп-слова (1, чтобы открыть их, и 0, чтобы закрыть).
  • @date 2013-06-13

  • friso.clr_stw = 0

    • Сохранять неузнанные слова или нет (1, чтобы включить, и 0, чтобы выключить).
  • @date 2013-06-13

  • friso.keep_urec = 0

    • Использовать стиль вывода Sphinx, например «восхищаться|любить|наслаждаться Эйнштейном».
  • @date 2013-10-25

  • friso.spx_out = 0

    • Начать вторичную сегментацию для сложных английских токенов.
  • @date 2013-10-25

  • friso.en_sseg = 1

    • Минимальная длина токена вторичной сегментации (лучше больше 1).
  • friso.st_minl = 2

    • По умолчанию сохранять пунктуацию для английских токенов.
  • friso.kpuncs = @%.#&+

    • Пороговое значение для символа, не являющегося частью китайского имени.
  • friso.nthreshold = 2000000

    • Режим по умолчанию для Friso.
    • 1: простой режим — просто алгоритм максимального соответствия.
    • 2: сложный режим — четыре правила алгоритма mmseg.
    • 3: режим обнаружения — возвращать только слова, которые существуют в лексиконе.
  • friso.mode = 2

Фрагменты текста без кода

Friso — это плагин, который предоставляет возможность сегментации для PHP5, PHP7, OCaml, Lua.

**Языки Связывание Автор Статус**
PHP php5-binding dongyado<dongyado@gmail.com> Завершено
PHP php7-binding dongyado<dongyado@gmail.com> Завершено
OCaml ocaml-binding https://github.com/kandu Завершено
Sphinx sphinx-binding lionsoul<chenxin619315@gmail.com> В разработке
Lua lua-binding lionsoul<chenxin619315@gmail.com> В разработке

Пример использования Friso

/* 
 * Первый шаг: объявить три объекта
 */
friso_t friso;          /* Объект Friso для сегментации */
friso_config_t config;  /* Объект конфигурации Friso */
friso_task_t task;      /* Задача Friso */

/* Второй шаг: инициализировать соответствующие объекты */
friso  = friso_new();
config = friso_new_config();
task   = friso_new_task();

/* Из файла friso.ini инициализировать Friso */
if (friso_init_from_ifile(friso, config, "адрес файла friso.ini") != 1) {
    /* Ошибка инициализации Friso */
}

/*
 * Режим сегментации по умолчанию устанавливается из файла friso.ini
 * Можно настроить режим сегментации с помощью функции friso_set_mode (простой, сложный, режим обнаружения)
 * Простой режим: __FRISO_SIMPLE_MODE__
 * Сложный режим: __FRISO_COMPLEX_MODE__
 * Режим обнаружения: __FRISO_DETECT_MODE__
 * Например, здесь установлен сложный режим сегментации:
*/
friso_set_mode(config, __FRISO_COMPLEX_MODE__);


/* Третий шаг: установить текст для сегментации */
friso_set_text(task, "Текст для сегментации");

/* Четвёртый шаг: получить сегментированный текст */
while (config->next_token(friso, config, task) != NULL) {
    /* 
      В task хранится результат сегментации,
      task->token->word: содержимое токена
      task->token->offset: смещение токена в исходном тексте
      task->token->length: длина токена (в байтах)
      task->token->rlen: фактическая длина токена после преобразования (длина - количество байт)
    */
    printf("%s ", task->token->word);
}


/* Пятый шаг: освободить объекты */
friso_free_task(task);
friso_free_config(config);
friso_free(friso);

Примечания

  1. Шаги 3 и 4 можно повторять, используя friso_set_setx для сброса текста для сегментации.
  2. Для многопоточной среды разные потоки могут совместно использовать объекты friso и config. Необходимо отдельно инициализировать task для каждого потока. ### Лексиконы смешанных китайских слов, таких как «卡拉ok»

LEX_CEM_WORDS: [ lex-cemixed.lex; ]

Лексикон китайских фамилий

LEX_CN_LNAME: [ lex-lname.lex; ]

Лексикон имён из одного слова

LEX_CN_SNAME: [ lex-sname.lex; ]

Первое слово двойной китайской фамилии

LEX_CN_DNAME1: [ lex-dname-1.lex; ]

Второе слово двойной китайской фамилии

LEX_CN_DNAME2: [ lex-dname-2.lex; ]

Китайская фамилия с декоративным словом

LEX_CN_LNA: [ lex-ln-adorn.lex; ]

Стоп-слова

LEX_STOPWORDS: [ lex-stopword.lex; ]

Смешанные английские и пунктуационные слова

LEX_ENPUN_WORDS: [ lex-en-pun.lex; ]

Английские слова (для синонимов)

LEX_EN_WORDS: [ lex-en.lex; ]

Добавление новых лексиконов

  1. Определите категорию: сначала определите категорию лексикона, который вы хотите добавить.

  2. Создайте новый лексикон: например, если вы хотите создать лексикон для хранения названий растений, создайте файл lex-plants.lex в папке dict/ и добавьте в него слова по одному на строку.

  3. Включите лексикон: следующий важный шаг — включить этот лексикон в friso.lex.ini. Обычно лексиконы относятся к категории CJK, поэтому просто добавьте lex-plants.lex как строку в LEX_CJK_WORDS.

LEX_CJK_WORDS: [ lex-main.lex; lex-admin.lex; lex-chars.lex; lex-cn-mz.lex; lex-cn-place.lex; lex-company.lex; lex-festival.lex; lex-flname.lex; lex-food.lex; lex-lang.lex; lex-nation.lex; lex-net.lex; lex-org.lex; lex-touris.lex;

# Новый лексикон названий растений
lex-plants.lex;

Добавьте сюда ещё

]

Добавьте новые слова в лексикон

Найдите соответствующий лексикон, откройте его в текстовом редакторе и добавьте новые слова, следуя формату Friso:

Friso формат слов:

Слово / синонимы

Синонимам не присваивается значение null, а несколько синонимов разделяются запятыми, например:

你好
研究 / 琢磨,研讨,钻研

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lionsoul-friso.git
git@api.gitlife.ru:oschina-mirror/lionsoul-friso.git
oschina-mirror
lionsoul-friso
lionsoul-friso
master