Как включить и настроить модуль SCWS для PHP в ServBay
ServBay — это мощная локальная среда веб-разработки для macOS и Windows, которая поддерживает такие языки, как PHP, Node.js, Python, Go, Java, а также базы данных MySQL, PostgreSQL, MongoDB, Redis и веб-сервера Caddy и Nginx. Для разработчиков, которым нужно работать с китайским текстом в приложениях на PHP, ServBay уже содержит высокоэффективный модуль SCWS (Simple Chinese Word Segmentation) для сегментации китайских слов, а процесс его включения максимально прост.
В этом документе подробно рассмотрено, как активировать расширение SCWS для PHP в ServBay, настроить словари и использовать его на практике.
Обзор модуля SCWS
SCWS — это открытый движок для сегментации китайских слов, известный своей высокой производительностью и точностью. Он использует метод словарного сопоставления в сочетании со статистическими моделями, что позволяет быстро и точно разделять китайский текст на слова. SCWS отлично подходит для создания поисковых систем, анализа текста, извлечения ключевых слов и определения частей речи.
Основные преимущества
- Высокая производительность: SCWS использует оптимизированные алгоритмы, способные быстро обрабатывать большие массивы китайского текста.
- Высокая точность: Благодаря сочетанию словарей и статистики, SCWS обеспечивает отличные результаты сегментации.
- Широкие возможности: Помимо базовой сегментации, поддерживает извлечение ключевых слов и определение частей речи.
- Легкая интеграция: Предлагает простой API для встраивания в PHP-приложения.
- Открытое ПО: SCWS распространяется бесплатно с открытым исходным кодом, что позволяет адаптировать его под любые задачи.
Предустановленные версии SCWS в ServBay
ServBay поддерживает различные версии PHP и для каждой из них устанавливает модуль SCWS. На момент написания документа, для PHP 5.6—8.4 в ServBay предустановлено расширение SCWS 1.2.3.
Как включить модуль SCWS
По умолчанию SCWS отключён в ServBay. Включить его можно двумя способами: через графический интерфейс или вручную, изменив конфигурацию.
Рекомендуемый способ — через графический интерфейс ServBay
Самый быстрый и удобный метод:
- Откройте главное окно ServBay.
- В левой панели выберите Языки (Languages), затем PHP.
- В списке версий PHP справа найдите ту, для которой хотите включить SCWS (например,
PHP 8.4
). - Нажмите кнопку Расширения (Extensions) справа от выбранной версии.
- В появившемся списке расширений найдите модуль
SCWS
. - Переключите тумблер слева от SCWS в положение «включено» (обычно он становится зелёным).
- Нажмите Сохранить (Save) внизу окна.
- ServBay запросит перезапуск пакета PHP для применения изменений. Нажмите Перезапустить (Restart).
После этих шагов SCWS будет активирован для выбранной версии PHP.
Ручное изменение конфигурации (для опытных пользователей и диагностики)
Если вам требуется гибкая настройка или диагностика, можно внести изменения вручную:
Найдите файл настройки: Определите, где находится конфигурационный каталог
conf.d
для выбранной версии PHP. Файл конфигурации SCWS —scws.ini
. Путь обычно выглядит так:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1Замените
X.Y
на нужную версию (например,8.4
).Отредактируйте
scws.ini
: Откройте файл в текстовом редакторе и найдите следующие строки:ini[scws] ; Uncomment the following line to enable scws ;extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5Уберите точку с запятой (😉 перед строкой
extension = scws.so
, чтобы она выглядела так:ini[scws] ; Uncomment the following line to enable scws extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5(Опционально) Можно также указать кодировку и путь к словарю, но удобнее задавать их динамически — через код PHP. Если всё же хотите настроить здесь, уберите комментарий и измените параметры. Например, для словаря в UTF-8:
ini[scws] ; Uncomment the following line to enable scws extension = scws.so scws.default.charset = utf8 scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5Сохраните изменения.
Перезапустите PHP-пакет: В интерфейсе ServBay откройте Пакеты (Packages), найдите нужную версию PHP, нажмите кнопку перезапуска (иконка круглой стрелки).
Проверка загрузки модуля SCWS
Включив модуль, обязательно убедитесь, что он работает — это можно сделать через phpinfo()
:
- В корневом каталоге сайта
/Applications/ServBay/www
, создайте папку, например,scws-test
. - В ней сделайте файл
phpinfo.php
. - Вставьте туда следующий PHP-код:php
<?php phpinfo(); ?>
1
2
3 - Убедитесь, что веб-сервер ServBay (Caddy или Nginx) настроен и работает с этой директорией. По умолчанию ServBay назначает домен
servbay.demo
для/Applications/ServBay/www
. - Откройте браузер и перейдите по адресу
https://servbay.demo/scws-test/phpinfo.php
. - На открывшейся странице найдите секцию "SCWS". Если она есть и выводит параметры SCWS — модуль успешно загружен.
(Примечание: путь к изображению примерный, смотрите актуальную документацию ServBay)
Создание и настройка словарей SCWS
SCWS работает на основе словарей — от их качества зависит эффективность сегментации. Стандартные файлы словарей и правил уже находятся в /Applications/ServBay/etc/scws
, но при необходимости можно использовать свои.
Формат словаря SCWS
SCWS поддерживает текстовый и бинарный формат xdb. Рекомендуется использовать xdb — он быстрее и экономнее.
Текстовый словарь выглядит так: одна строка — одно слово, затем (опционально) частота (число, чем больше — тем слово популярнее) и часть речи:
слово1 [частота1] [часть_речи1]
слово2 [частота2] [часть_речи2]
...
1
2
3
2
3
Например:
искусственный интеллект 1000 n
обработка естественного языка 800 n
ServBay 500 nz
1
2
3
2
3
Сохраните свои термины в текстовый файл, например, my_dict.txt
(рекомендуемый код — UTF-8).
Генерация xdb-словаря
В ServBay уже есть инструмент scws-gen-dict
для конвертации текста в xdb.
- Откройте терминал macOS.
- Перейдите в bin-каталог ServBay или используйте полный путь:bashПодставьте свой путь к текстовому словарю. Через
/Applications/ServBay/bin/scws-gen-dict -i /path/to/your/my_dict.txt -o /Applications/ServBay/etc/scws/my_dict.utf8.xdb -c utf8
1-o
задаётся путь и название xdb-файла, обычно — в/Applications/ServBay/etc/scws
. Через-c utf8
— кодировка исходного файла.
Подключение словаря SCWS в PHP
После генерации xdb-файла подключите его в коде PHP:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Укажите кодировку (должна совпадать с кодом словаря)
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb'); // основной словарь
// Можно добавить дополнительные словари
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT — пользовательский словарь
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // правила для разметки частей речи (входит в стандарт ServBay)
// ... дальнейшая сегментация ...
?>
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
set_dict()
— основной (базовый) словарь, обычно официальный. add_dict()
— подключение пользовательских словарей. SCWS_XDICT_TXT
— константа для добавления кастомных словарей.
Пример использования SCWS
Как только Ext. активирован и словарь подключён, можно вызывать SCWS в коде для сегментации текста. Пример:
php
<?php
// Проверяем, загружено ли расширение SCWS
if (!extension_loaded('scws')) {
die('SCWS extension is not loaded.');
}
// Инициализация SCWS
$scws = scws_new();
if (!$scws) {
die('Failed to initialize SCWS.');
}
// Установка кодировки (должна совпадать с текстом и словарём)
$scws->set_charset('utf8');
// Путь к основному словарю (от ServBay)
// set_dict() — основной словарь
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() — пользовательский словарь
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// Путь к файлу правил (от ServBay), для разметки частей речи и других функций
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// Режим сегментации (опционально, по умолчанию SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: разделяет x-символы (не китайские) — email, url и т.д.
// SCWS_XDICT_DUALITY: составная сегментация (биграммы)
// $scws->set_ignore(true); // игнорировать знаки препинания
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // уровень составной сегментации
// Китайский текст для примера
$text = "ServBay — это мощная локальная среда веб-разработки, поддерживающая PHP, Node.js и различные базы данных.";
// Отправляем текст на обработку SCWS
$scws->send_text($text);
// Получаем и выводим сегментацию
echo "Исходный текст: " . $text . "\n\n";
echo "Результаты сегментации:\n";
// Вывод всех результатов
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word — ассоциативный массив: 'word', 'idf', 'attr' (часть речи) и др.
echo "Слово: " . $word['word'] . " (часть речи: " . $word['attr'] . ")\n";
}
}
// Завершение работы SCWS
$scws->close();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Сохраните этот код в файл (например, scws_example.php
) и разместите его в каталоге сайта ServBay (/Applications/ServBay/www/scws-test/
). Откройте в браузере https://servbay.demo/scws-test/scws_example.php
— вы увидите результат работы SCWS.
Важные замечания
- Убедитесь, что версия SCWS, которую вы включили, совместима с вашей версией PHP. ServBay решает вопросы совместимости автоматически, но при ручной настройке внимательнее!
- Эффективность сегментации напрямую зависит от качества словаря. Для отраслевых текстов используйте или создавайте специализированные словари.
- Проверьте, что указанные пути к настройкам SCWS (
scws.ini
), словарям (.xdb
) и правилам (.ini
) верны, а PHP-процесс имеет права на их чтение. - После изменения конфигурации PHP обязательно перезапускайте пакет — только так новые настройки вступят в силу.
Часто задаваемые вопросы (FAQ)
В: Я включил SCWS через интерфейс ServBay, но не вижу его в phpinfo()
. Что делать?
О: Проверьте, что вы перезапустили ту версию PHP, которую использует ваш сайт. В некоторых случаях запущено несколько версий. Если не помогло — попробуйте вручную изменить файл scws.ini
, перепроверьте пути и отсутствие синтаксических ошибок.
В: Как создать и использовать пользовательский словарь?
О: Следуйте разделу документа «Создание и настройка словарей SCWS»: с помощью scws-gen-dict
преобразуйте текстовый словарь в формат xdb и загрузите его через функцию add_dict()
в PHP.
В: Для чего нужен файл правил SCWS (rules.utf8.ini
)?
О: Этот файл определяет правила для частей речи и специфичных операций при сегментации. В ServBay он уже предустановлен, обычно его менять не нужно.
Итог
ServBay предоставляет удобные инструменты для активации и настройки модуля SCWS — сегментатора китайских слов для PHP. Вы можете легко интегрировать SCWS в рабочий процесс — через понятный графический интерфейс или гибкую ручную настройку. С предустановленным инструментарием и словарями вы сможете быстро начать работу, использовать высокую производительность и точность SCWS при обработке китайского текста. Это делает ServBay не только комплексной средой разработки, но и полезным решением для реализации функционала поиска и анализа контента на китайском языке в ваших веб-приложениях. Интеграция SCWS — ещё один шаг к универсальности и удобству локальной разработки на ServBay.