SCWS для китайського розбиття слів у ServBay: посібник з установки, налаштування та використання
ServBay — це потужне локальне середовище для Web-розробки, попередньо оснащене широким набором популярних інструментів та пакетів для розробників. SCWS (Simple Chinese Word Segmentation) — ефективна система для китайського розбиття слів, яка є критично важливою при обробці китайських текстів (наприклад, у пошукових системах, задачах обробки природної мови, аналізу контенту тощо). ServBay вже містить передвстановлений SCWS і розширення для PHP, отже жодних зайвих кроків для інсталяції не потрібно. Цей посібник детально проведе вас через налаштування й використання SCWS у середовищі ServBay, включаючи як консольні інструменти, так і роботу з PHP API.
Огляд
SCWS — високопродуктивна бібліотека для китайського розбиття слів, яка оптимізована для швидкої та точної сегментації великих обсягів тексту. Вона підтримує різні режими розбиття, користувацькі словники та правила, й є одним із базових інструментів для побудови пошукових систем, рекомендаційного контенту, текстової аналітики тощо. ServBay інтегрує SCWS у свої комплекти ПЗ і забезпечує попередньо зібраний модуль PHP, значно спрощуючи процес використання SCWS у локальному середовищі розробки.
Передумови
- У вас вже інстальовано й запущено ServBay на операційній системі macOS.
Встановлення та налаштування
Встановлення
ServBay створений для того, щоб бути “готовим до роботи” відразу після встановлення. SCWS, як важливий інструмент обробки китайських текстів, вже є частиною стандартної комплектації ServBay. Вам не потрібно нічого додатково завантажувати або компілювати. Усі відповідні виконувані файли, налаштування й словники зберігаються в каталозі установки ServBay, за замовчуванням — /Applications/ServBay/
.
Налаштування
Файл конфігурації SCWS за замовчуванням розташований за адресою /Applications/ServBay/etc/scws/scws.ini
. Ви можете змінювати цей файл відповідно до ваших завдань, щоб відрегулювати поведінку розбиття, кодування, вибір словника та правил SCWS.
Приклад типового конфігураційного файлу:
ini
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
[charset]
: Вказує типову кодування, зазвичай залишаєтеutf8
.[rule]
: Шлях до файлу з правилами сегментації.[dict]
: Шлях(и) до словникових файлів для розбиття. Можна вказати кілька словників через кому,
.
Базове використання: командний рядок
SCWS надає потужний консольний інструмент scws
для тестування розбиття тексту або пакетної обробки у терміналі. ServBay вже містить виконуваний файл scws
у директорії bin
, і шлях /Applications/ServBay/bin
зазвичай додається до системної змінної PATH, тож ви можете викликати команду scws
напряму в терміналі.
Приклади сегментації
Ось кілька базових прикладів використання командного рядка scws
:
Розбиття рядка
Передача рядка до команди scws
через конвеєр:
bash
echo "这是一个中文分词的例子" | scws -i
1
Розбиття тексту з файлу
Використовуйте параметр -i
для вказання вхідного файлу, -o
— файл для виводу:
bash
scws -i input.txt -o output.txt
1
Задання правил розбиття
Параметр -r
— шлях до користувацького файлу правил:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
1
Вказання словника
Параметр -d
— шлях до користувацького словникового файлу:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
1
Розширене використання
Користувацькі словники
Щоб покращити точність розбиття, особливо при роботі з термінами галузі, іменами чи неологізмами, створіть свій власний словник. SCWS використовує оптимізований формат словника xdb
. Ви можете скористатися інструментом scws-gen
, який входить до ServBay, для конвертації звичайного текстового словника у формат xdb
.
Кроки зі створення користувацького словника:
Створіть текстовий файл, наприклад
custom_dict.txt
. Кожен рядок — одне слово, після якого через пробіл (необов'язково) може бути вага (ціле число для пріоритету).ServBay 10 Локальне середовище розробки 8 Китайське розбиття слів 9
1
2
3Створіть словник формату
xdb
за допомогою інструментуscws-gen
, який також міститься у директоріїbin
ServBay:bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1Внесіть зміни до файлу налаштування SCWS
/Applications/ServBay/etc/scws/scws.ini
у секції[dict]
, додавши шлях до власного словника після основного, через кому:ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2Переконайтеся, що
/path/to/your/custom_dict.xdb
— це фактичний шлях до вашого власного словника.
Тонке налаштування правил розбиття
Файл правил сегментації (типово /Applications/ServBay/etc/scws/rules.ini
) визначає, як SCWS обробляє неоднозначні чи складні мовні структури. Модифікувати ці правила рекомендується лише при ґрунтовному знанні алгоритмів SCWS. Більшості користувачів достатньо комбінації типових правил із власними словниками. Якщо необхідно змінити правила, зробіть це уважно, детально ознайомившись із документацією на SCWS (якщо вона є у вашому пакеті ServBay).
Типовий вигляд файлу з правилами (з прикладами патернів):
ini
[rule]
# Сюди можна додавати власні правила розбиття
# Приклад: pattern = result
1
2
3
2
3
Використання PHP API
Для розробників PHP-додатків у середовищі ServBay розширення SCWS для PHP уже встановлено й готове до роботи, без додаткових налаштувань або маніпуляцій. Ви можете напряму використовувати SCWS API для сегментації китайського тексту у вашому PHP-коді.
Щоб переконатися, що розширення SCWS увімкнено, перегляньте інформацію про встановлені розширення через сторінку phpinfo()
у ServBay.
Приклад використання
Наведено приклад PHP-коду, що демонструє застосування SCWS API для розбиття китайського тексту на слова:
php
<?php
// Перевіряємо, чи завантажено розширення SCWS
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// Текст для розбиття
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// Відкриваємо екземпляр розбивача
$sh = scws_open();
// Налаштовуємо кодування згідно з вихідним текстом
scws_set_charset($sh, 'utf8');
// Вказуємо шляхи до словника та файлу правил
// Переконайтеся, що шляхи відповідають вашій установці ServBay
$dict_path = '/Applications/ServBay/etc/scws/dict.utf8.xdb';
$rule_path = '/Applications/ServBay/etc/scws/rules.ini';
if (!file_exists($dict_path)) {
die("SCWS dictionary file not found: " . $dict_path);
}
if (!file_exists($rule_path)) {
die("SCWS rules file not found: " . $rule_path);
}
scws_set_dict($sh, $dict_path);
scws_set_rule($sh, $rule_path);
// Передаємо текст на сегментацію
scws_send_text($sh, $text);
// Виводимо результат
echo "Оригінальний текст: " . $text . "\n";
echo "Результат розбиття:\n";
// Циклічно отримуємо й виводимо результат
// $res — масив, кожен елемент якого містить сегмент, граматичну інформацію тощо
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Виводимо саме слово
echo $word_info['word'] . " ";
// За бажанням — інші дані:
// echo "Слово: " . $word_info['word'] . ", Частина мови: " . $word_info['attr'] . ", Вага: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// Закриваємо екземпляр розбивача для звільнення ресурсів
scws_close($sh);
?>
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
Збережіть цей код у файл, наприклад segment_test.php
, розмістіть його у кореневому каталозі вашого сайту ServBay /Applications/ServBay/www/servbay.demo/
(припустимо, у вас налаштовано сайт servbay.demo
) і відкрийте файл у браузері або виконайте його через PHP CLI для перегляду результату розбиття.
Основні функції
Основні функції розширення SCWS для PHP:
scws_open()
: Створює і відкриває екземпляр розбивача SCWS. У разі успіху повертає дескриптор ресурсу.scws_set_charset($sh, $charset)
: Вказує кодування для екземпляра$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Вказує шлях до словника; параметр$mode
застарілий, зазвичай використовуйте лишеxdb
-файл.scws_set_rule($sh, $rule_path)
: Вказує шлях до файлу правил розбиття.scws_send_text($sh, $text)
: Передає текст$text
для обробки.scws_get_result($sh)
: Повертає масив із результатами розбиття, поки не завершено (тоді повертаєfalse
).scws_close($sh)
: Закриває та звільнює ресурс екземпляра$sh
.
Детальніше про розширені можливості (ігнорування пунктуації, режими роботи, вага слів тощо) дивіться у офіційній документації SCWS для PHP.
Часті запитання (FAQ)
1. Результати розбиття SCWS неточні?
- Рішення: Перевірте шляхи до файлів словника (
dict
) і правил (rule
) у файлі налаштування SCWS/Applications/ServBay/etc/scws/scws.ini
. Переконайтеся, що файли існують і доступні для читання. Для специфічних сфер або нових слів рекомендується створити власний словник (із допомогоюscws-gen
у форматіxdb
) і додати його у конфігурацію. За потреби скоригуйте ваги у словнику або налаштуйте правила розбиття, однак це потребує глибшого розуміння роботи SCWS.
2. Продуктивність SCWS низька, розбиття виконується повільно?
- Рішення: Переконайтеся, що використовується словник у форматі
xdb
— він істотно швидший за прості текстові файли. У конфігурації вказуйте самеxdb
-файл як словник. Для дуже великих текстів рекомендовано розбивати їх на менші частини.
3. Командний рядок SCWS не запускається, повідомляє про відсутність команди?
- Рішення: Ймовірно, директорія з виконуваними файлами ServBay не додана до змінної PATH. Ви можете запускати команду з повним шляхом, наприклад
/Applications/ServBay/bin/scws -i ...
, або додати/Applications/ServBay/bin
до вашого конфігураційного файлу оболонки (наприклад,~/.bash_profile
,~/.zshrc
) і перезапустити термінал.
4. Помилка при виклику scws_open()
у PHP або функція недоступна?
- Рішення: Це означає, що розширення SCWS для PHP не підключено до вибраної версії PHP у ServBay. Переконайтесь через панель керування або сторінку
phpinfo()
, що розширенняscws
дійсно завантажено і ввімкнено. Якщо ні — у файлі конфігурації PHP (php.ini
) має бути рядокextension=scws.so
, а файлscws.so
— присутній у директорії розширень PHP (ServBay зазвичай налаштовує це автоматично). Якщо й далі не працює — перезапустіть служби ServBay.
Висновок
SCWS — це потужна та швидка система для розбиття китайських текстів на слова. Завдяки інтеграції у пакети ServBay та наявності розширення для PHP розробники можуть легко використовувати SCWS у локальному середовищі macOS: як за допомогою командного рядка для обробки текстових файлів, так і у динамічних PHP-додатках. Дотримуючись інструкцій цього посібника, ви швидко почнете ефективно обробляти китайські тексти й підвищите якість своїх проектів.