Як увімкнути та налаштувати модуль SCWS PHP у ServBay
ServBay — це потужне локальне середовище веб-розробки, спеціально створене для macOS, яке містить вбудовані середовища виконання PHP, Node.js, Python, Go, Java, а також бази даних MySQL, PostgreSQL, MongoDB, Redis тощо, з підтримкою вебсерверів Caddy та Nginx. Для розробників, яким потрібно обробляти китайські тексти у PHP-додатках, ServBay має попередньо встановлений високопродуктивний модуль SCWS (Simple Chinese Word Segmentation) для сегментації китайських слів, і процес його увімкнення дуже простий.
Ця інструкція детально пояснює як активувати розширення SCWS для PHP у ServBay, налаштувати його словникові файли, і наводить приклади базового використання.
Огляд модуля SCWS
SCWS — це open source китайський сегментатор слів, який відзначається високою продуктивністю та точністю. Використовуючи поєднання словникового пошуку та статистичних моделей, він швидко й точно розбиває китайські тексти на слова, ідеально підходячи для пошукових систем, текстового майнінгу, контент-аналізу, виділення ключових слів і морфосинтаксичного тегування.
Основні можливості
- Висока продуктивність: SCWS використовує оптимізовані алгоритми для ефективної обробки великих обсягів китайських текстів.
- Висока точність: Поєднання словникового підходу зі статистичними моделями забезпечує високу якість розбиття на слова.
- Багата функціональність: Окрім базової сегментації, підтримуються виділення ключових слів, морфосинтаксичне тегування та інші просунуті функції.
- Легка інтеграція: Простий API робить модуль иделальним для інтеграції у PHP-додатки.
- Відкритий код і безкоштовність: SCWS є відкритим ПЗ та може вільно використовуватись й налаштовуватись згідно з потребами.
Попередньо встановлена версія SCWS у ServBay
ServBay підтримує кілька версій PHP, і для кожної з них попередньо встановлено відповідний модуль SCWS. На момент написання цього посібника ServBay містить SCWS 1.2.3 для PHP 5.6 до PHP 8.4.
Як увімкнути модуль SCWS
За замовчуванням модуль SCWS у ServBay вимкнено. Активувати його можна двома способами: через графічний інтерфейс ServBay або вручну, редагуючи конфігураційний файл.
Рекомендований спосіб: Активувати через графічний інтерфейс ServBay
Цей спосіб найшвидший і найлегший:
- Відкрийте головне вікно ServBay.
- У лівій навігації оберіть Languages (Мови), а потім — PHP.
- У списку версій PHP, що з’явиться праворуч, знайдіть ту версію PHP, для якої хочете увімкнути SCWS (наприклад,
PHP 8.4
). - Натисніть кнопку Extensions (Розширення) біля обраної версії PHP.
- У випливаючому списку розширень знайдіть модуль
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(Необов'язково) Тут також можна задати кодування та шлях до словника, однак рекомендується задавати їх динамічно у 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Збережіть і закрийте
scws.ini
.Перезапустіть PHP-пакет: Відкрийте головне вікно ServBay, перейдіть у Packages (Пакети), знайдіть потрібну версію PHP (наприклад, PHP 8.4) і натисніть кнопку перезапуску (іконка “кругова стрілка”).
Перевірка завантаження модуля SCWS
Після активації рекомендується впевнитися, що модуль завантажений. Найзручніше це зробити через phpinfo():
- У рекомендованій кореневій директорії ServBay
/Applications/ServBay/www
створіть підкаталог, наприклад,scws-test
. - У створеній папці (
/Applications/ServBay/www/scws-test
) створіть файл під назвоюphpinfo.php
. - Додайте у цей файл такий PHP-код:php
<?php phpinfo(); ?>
1
2
3 - Переконайтесь, що ваш вебсервер (наприклад, Caddy чи Nginx) налаштований, працює та має доступ до
/Applications/ServBay/www
. За замовчуванням ServBay створює доменservbay.demo
, прив’язаний до цієї папки. - Відкрийте у браузері
https://servbay.demo/scws-test/phpinfo.php
. - На сторінці з інформацією PHP знайдіть розділ "SCWS". Якщо ви бачите відомості про 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.
- Відкрийте термінал (Terminal) у macOS.
- Перейдіть через
cd
до сервісної теки ServBay, або вкажіть повний шлях доscws-gen-dict
. Стандартний шлях: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
задає імʼя бінарного файлу й шлях (рекомендується/Applications/ServBay/etc/scws
),-c utf8
— кодування даних.
Налаштування SCWS на використання вашого словника
Після створення xdb-файлу ви можете вказати SCWS використовувати цей словник у PHP:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Встановлюємо кодування згідно з вашим словником
// 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); // 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()
призначений для основного (типового) словника, а add_dict()
додає користувацький словник. Константа SCWS_XDICT_TXT
означає, що додається словник користувача.
Приклад використання SCWS
Після активації модуля SCWS і підключення словника ви можете скористатися функціями SCWS у PHP для розпізнавання слів. Ось простий приклад:
php
<?php
// Перевірка завантаження розширення SCWS
if (!extension_loaded('scws')) {
die('Розширення SCWS не завантажено.');
}
// Ініціалізація об’єкта SCWS
$scws = scws_new();
if (!$scws) {
die('Не вдалося ініціалізувати 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
Збережіть код як .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)
Питання: Я активував SCWS через сервісний інтерфейс, але його не видно у phpinfo()
?
Відповідь: Перевірте, що ви перезапустили саме ту версію PHP, яка пов’язана з вашим сайтом. Якщо працюють кілька версій PHP, перезапустіть відповідний пакет. Якщо це не допомогло — спробуйте відредагувати scws.ini
вручну, перевірте шлях та можливі синтаксичні помилки.
Питання: Як створити й підключити власний словник?
Відповідь: Дотримуйтесь інструкції у розділі “Створення та налаштування словників SCWS” — використовуйте інструмент scws-gen-dict
для конвертації до xdb і підключайте через метод add_dict()
у PHP-коді.
Питання: Для чого потрібен файл правил SCWS (rules.utf8.ini
)?
Відповідь: Файл правил використовується для морфосинтаксичного тегування слів й додаткових налаштувань сегментації. ServBay вже містить типовий файл правил, у більшості випадків його змінювати не потрібно.
Висновок
ServBay надає розробникам зручний спосіб увімкнення та керування модулем SCWS для китайської сегментації слів у PHP. Незалежно від того, який спосіб налаштування ви оберете — через простий графічний інтерфейс або ручну конфігурацію — ви зможете інтегрувати SCWS у свій робочий процес у PHP за лічені хвилини. Разом із вбудованими сервісними інструментами й типовим словником SCWS це дозволяє ефективно й точно сегментувати китайські тексти, посилюючи функціональність ваших вебдодатків (наприклад, систем пошуку, аналізу вмісту тощо). Як частина багатого пакету ServBay, інтеграція SCWS демонструє універсальність і практичність цього рішення для локальної розробки.