Як увімкнути та налаштувати 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 — це open source двигун китайської сегментації, відомий високою продуктивністю та точністю. Він використовує поєднання словникового підбору та статистичних моделей для швидкої й точної обробки китайського тексту, ідеально підходить для пошукових систем, аналізу тексту, контенту, виділення ключових слів і тегування частин мови.
Основні переваги
- Високопродуктивна сегментація: SCWS застосовує оптимізовані алгоритми, які дозволяють обробляти великі обсяги китайського тексту.
- Висока точність: Комбінація словникових та статистичних моделей дає якісний результат сегментації.
- Багатофункціональність: Окрім основної сегментації, підтримує виділення ключових слів, частин мови тощо.
- Простота інтеграції: Простий API, який легко впровадити у PHP-застосунок.
- Відкритий код і безкоштовне використання: SCWS доступний безкоштовно і може бути адаптований під ваші потреби.
Попередньо встановлена версія SCWS у ServBay
ServBay підтримує декілька версій PHP, і для кожної з них встановлений відповідний модуль SCWS. На момент написання документа ServBay включає SCWS 1.2.3 для PHP версій від 5.6 до 8.4.
Як увімкнути SCWS-модуль
За замовчуванням SCWS-модуль у ServBay вимкнено. Увімкнути його можна двома способами: через графічний інтерфейс ServBay або вручну через конфігураційний файл.
Рекомендований спосіб: Активація через інтерфейс ServBay
Це найшвидший та найпростіший метод:
- Відкрийте головне вікно ServBay.
- У лівій панелі виберіть Languages (Мови) та оберіть PHP.
- У списку версій PHP справа знайдіть потрібну версію PHP (наприклад,
PHP 8.4
). - Натисніть кнопку Extensions (Розширення) праворуч від цієї версії.
- У списку розширень знайдіть модуль
SCWS
. - Натисніть перемикач ліворуч від SCWS, щоб увімкнути (зазвичай він стане зеленим).
- Внизу натисніть Save (Зберегти).
- ServBay запропонує вам перезапустити пакет PHP. Натисніть Restart (Перезапустити).
Після цих дій SCWS буде активовано для вибраної вами версії PHP.
Ручна активація через конфігураційний файл (для досвідчених користувачів і діагностики)
Для більшого контролю чи вирішення проблем можна змінити конфігураційний файл PHP:
Знайдіть конфігураційний файл: Відшукайте каталог
conf.d
для потрібної версії PHP. Налаштування SCWS міститься у файліscws.ini
, наприклад:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1Де
X.Y
— це ваша версія PHP, наприклад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(Опційно) Можна тут же задати кодування і шлях до словника, хоча рекомендується використовувати налаштування в коді для більшої гнучкості. Якщо ваш словник в 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 (наприклад PHP 8.4) і натисніть кнопку перезапуску (зазвичай це іконка кругової стрілки).
Перевірка завантаження модуля SCWS
Після активації важливо впевнитися, що модуль SCWS завантажено. Зазвичай це робиться через phpinfo()
:
- У корені сайту
/Applications/ServBay/www
створіть підкаталог для тесту, наприкладscws-test
. - У
/Applications/ServBay/www/scws-test
створіть файлphpinfo.php
. - Вставте наступний код:php
<?php phpinfo(); ?>
1
2
3 - Переконайтесь, що Web-сервер ServBay (Caddy або Nginx) налаштований та працює, і каталог
/Applications/ServBay/www
доступний. За замовчуванням ServBay призначає доменservbay.demo
для цього каталогу. - Відкрийте в браузері
https://servbay.demo/scws-test/phpinfo.php
. - Знайдіть розділ "SCWS" на сторінці PHP Info. Якщо там є інформація про SCWS (версія, опції тощо) — модуль працює.
(Примітка: шлях до зображення є прикладом, використовуйте фактичний ресурс із документації ServBay)
Створення та налаштування словника SCWS
SCWS використовує словник для сегментації — якість розбиття залежить від використаного словника. Стандартний словник і файл правил в ServBay можна знайти тут: /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 scws-gen-dict
для конвертації текстового словника у xdb:
- Відкрийте Термінал на macOS.
- Перейдіть до каталогу ServBay bin або використовуйте повний шлях до утиліти: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/path/to/your/my_dict.txt
— шлях до вашого текстового словника.-o
— шлях до xdb-файлу, рекомендується зберігати у/Applications/ServBay/etc/scws
.-c utf8
— кодування текстового словника.
Налаштування SCWS на використання словника
Після створення xdb-файлу задайте SCWS шлях до нього у коді PHP:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Встановіть кодування, що відповідає вашому словнику
// Основний словник: стандартний або ваш xdb-файл
$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
11
2
3
4
5
6
7
8
9
10
11
set_dict()
— основний словник (зазвичай стандартний великий словник SCWS). add_dict()
— додатковий або власний словник. SCWS_XDICT_TXT
— позначає формат користувацького словника.
Приклад використання SCWS
Після активації модуля та налаштування словників можна використовувати SCWS у своєму PHP-коді. Ось базовий приклад:
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');
// Вказати шлях до словника (стандартний)
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// Додати власний словник
// $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
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
Збережіть цей код у .php
-файл (наприклад scws_example.php
) і розмістіть у каталозі сайту ServBay (наприклад, /Applications/ServBay/www/scws-test/
). Перейдіть у браузері на https://servbay.demo/scws-test/scws_example.php
— результат сегментації буде на екрані.
Важливі зауваження
- Переконайтесь, що версія SCWS відповідає вашій версії PHP. ServBay забезпечує сумісність, але при вручну налаштуванні будьте уважні.
- Якість сегментації залежить від словника. Для вузьких тем — створіть професійний галузевий словник.
- Перевіряйте правильність шляхів у конфіг-файлах SCWS (
scws.ini
), словників (.xdb
) та правил (.ini
), а також права на читання для PHP-процесу. - Після редагування PHP-конфігурації обов’язково перезапускайте відповідний PHP-пакет.
Часті питання (FAQ)
Q: Я активував SCWS через інтерфейс ServBay, але не бачу його у phpinfo()
?
A: Переконайтесь, що перезапустили правильну версію PHP-пакета. Якщо працює декілька версій PHP, треба перезапустити ту, з якою працює сайт. Якщо не допомогло — спробуйте вручну змінити scws.ini
і перевірити шлях та синтаксис.
Q: Як створити і використовувати власний словник?
A: Дивіться розділ "Створення та налаштування словника SCWS" цього документа, використовуйте scws-gen-dict
для конвертації текстового словника в xdb, а потім у коді PHP підключіть файл через add_dict()
.
Q: Для чого потрібен файл правил SCWS (rules.utf8.ini
)?
A: Він використовується для тегування частин мови та специфічних правил розбиття. Стандартний файл вже є у ServBay, змінювати його не обов’язково.
Підсумок
ServBay дає розробникам простий і гнучкий спосіб активувати та керувати модулем SCWS для PHP-сегментації китайських слів. Ви можете інтегрувати SCWS через інтуїтивний графічний інтерфейс або вручну налаштувати параметри, використовуючи потужні інструменти та стандартні словники ServBay. Також можливо швидко створювати власні словники SCWS для більш ефективної та точної обробки китайського тексту, що корисно для пошуку, аналізу змісту та автоматизації у веб-додатках. Як частина розвиненої екосистеми ServBay, SCWS робить ваше середовище розробки ще більш універсальним і функціональним.