SCWS в ServBay: Руководство по установке, настройке и использованию
ServBay — это мощная локальная среда для веб-разработки, включающая множество востребованных инструментов и пакетов для разработчиков. SCWS (Simple Chinese Word Segmentation) — эффективная система китайской сегментации, играющая важную роль при обработке китайских текстов (например, для поиска, обработки естественного языка, анализа контента и др.). ServBay уже содержит предустановленный SCWS и соответствующий модуль для PHP, поэтому дополнительная сложная установка не требуется. В этой статье вы узнаете, как настроить и использовать SCWS в среде ServBay, включая работу с CLI и примеры на PHP API.
Обзор
SCWS — высокопроизводительный библиотека для китайской сегментации, идеально подходящая для задач, связанных с быстрой и точной обработкой больших объемов китайских текстов. Она поддерживает различные режимы сегментации, позволяет использовать пользовательские словари и правила и служит базой для поиска по-китайски, рекомендательных систем, анализа текстов и других приложений. ServBay интегрирует SCWS в свой пакет и предоставляет заранее скомпилированное PHP-расширение, что существенно облегчает его использование в локальной среде.
Предварительные требования
- 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]
: Путь к словарю сегментации. Можно указать несколько файлов, разделяя запятыми.
Основы использования: CLI
SCWS предоставляет удобную командную утилиту scws
для быстрой проверки сегментации текста или пакетной обработки прямо в терминале. ServBay уже добавил исполняемый файл scws
в папку bin
; обычно /Applications/ServBay/bin
входит в системную переменную PATH, так что можно вызывать scws
напрямую в терминале.
Примеры сегментации
Вот несколько базовых примеров использования CLI 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
Испoльзование пользовательского словаря
Параметр -d
для указания пользовательского словаря:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
1
Расширенные возможности
Пользовательские словари
Чтобы повысить точность сегментации, особенно при наличии отраслевых терминов, имён собственных, географических или новых слов, вы можете создать собственный словарь. SCWS использует эффективный формат словарей .xdb
. Преобразовать обычный текстовый словарь в формат xdb можно с помощью утилиты scws-gen
, входящей в ServBay.
Шаги создания пользовательского словаря:
Создайте текстовый файл, например,
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.
Пример содержимого файла правил:
ini
[rule]
# Здесь можно добавить пользовательские правила сегментации
# Пример: pattern = result
1
2
3
2
3
Использование PHP API
Разработчикам, использующим PHP для веб-приложений, не нужно отдельно устанавливать модуль SCWS — он уже добавлен в предустановленный PHP в ServBay. То есть, вы сразу можете обращаться к API SCWS прямо из 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 等软件包。";
// Открытие экземпляра SCWS
$sh = scws_open();
// Установить используемую кодировку (обычно 'utf8')
scws_set_charset($sh, 'utf8');
// Установить путь к словарю и файлу правил
// Убедитесь, что здесь указан фактический путь к SCWS-файлам в среде 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 и освободить ресурсы
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. Возвращает ссылку-ресурс илиfalse
при ошибке.scws_set_charset($sh, $charset)
: Задает кодировку для экземпляра$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Устанавливает путь к словарю для экземпляра$sh
.$mode
определяет формат (рекомендуетсяxdb
).scws_set_rule($sh, $rule_path)
: Задает путь к файлу правил сегментации для экземпляра.scws_send_text($sh, $text)
: Отправляет текст на сегментацию.scws_get_result($sh)
: Получает результаты сегментации по одному элементу (ассоциативный массив с данными о слове). Когда результатов больше нет — возвращаетfalse
.scws_close($sh)
: Закрывает экземпляр SCWS и очищает ресурсы.
Полный список возможностей, параметры тонкой настройки (например, игнорировать пунктуацию, выбирать режим сегментации, интеграция с весами слов и др.) смотрите в официальной документации к SCWS расширению для PHP.
Часто задаваемые вопросы (FAQ)
1. Результаты сегментации SCWS неточны?
- Что делать: Проверьте правильность путей к словарю (
dict
) и правилам (rule
) в файле/Applications/ServBay/etc/scws/scws.ini
и их наличие. Для специализированных тем и новых слов создайте свой словарь с помощьюscws-gen
(в формате xdb) и добавьте его путь в настройки. При необходимости скорректируйте веса слов и правила сегментации (для этого понадобится глубокое понимание работы SCWS).
2. SCWS работает медленно, низкая производительность?
- Что делать: Используйте именно формат словаря
xdb
, а не устаревший текстовый. Форматxdb
оптимизирован и работает заметно быстрее. Убедитесь, что пути в конфиге указывают наxdb
-файлы. Очень большие тексты имеет смысл обрабатывать порциями.
3. CLI-инструмент SCWS не запускается — команда не найдена?
- Что делать: Вероятно, папка с утилитами ServBay не добавлена в переменную PATH. Можно воспользоваться полным путем типа
/Applications/ServBay/bin/scws -i ...
. Либо добавьте/Applications/ServBay/bin
в PATH вашего шелла (файлы~/.bash_profile
,~/.zshrc
и т.п.), затем перезапустите терминал или примените настройки.
4. В PHP вызов scws_open()
не работает или функции не существует?
- Что делать: Это значит, что в используемой версии PHP не загружен модуль SCWS. Проверьте через панель управления ServBay актуальную PHP-версию и откройте соответствующий
phpinfo()
(обычно есть быстрый доступ). Ищите наличие расширенияscws
в списке. Если его нет, проверьте файл настройки PHP (php.ini
) — должна быть строкаextension=scws.so
и наличие файлаscws.so
в каталоге расширений (ServBay уже всё это настраивает). Если проблема сохраняется, попробуйте перезапустить сервисы ServBay.
Заключение
SCWS — это мощная и эффективная система для сегментации китайских текстов. Благодаря предустановленным пакетам и PHP-расширению в ServBay, разработчик может быстро начать работу с SCWS на macOS, обрабатывая тексты как через CLI-инструменты, так и непосредственно из PHP-приложений. Следуя приведённым рекомендациям, вы максимально быстро освоите SCWS и повысите качество работы с китайскими текстами в ваших проектах.