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 — кодировку, словари, правила и другие параметры.
Пример содержимого стандартного конфигурационного файла:
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb
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
:
echo "这是一个中文分词的例子" | scws -i
Сегментация текста из файла
Параметр -i
задаёт входной файл, -o
— выходной файл:
scws -i input.txt -o output.txt
Использование кастомных правил
Параметр -r
для указания пользовательского файла правил:
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
Испoльзование пользовательского словаря
Параметр -d
для указания пользовательского словаря:
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
Расширенные возможности
Пользовательские словари
Чтобы повысить точность сегментации, особенно при наличии отраслевых терминов, имён собственных, географических или новых слов, вы можете создать собственный словарь. 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.
Пример содержимого файла правил:
[rule]
# Здесь можно добавить пользовательские правила сегментации
# Пример: pattern = result
2
3
Использование PHP API
Разработчикам, использующим PHP для веб-приложений, не нужно отдельно устанавливать модуль SCWS — он уже добавлен в предустановленный PHP в ServBay. То есть, вы сразу можете обращаться к API SCWS прямо из PHP-кода.
Проверьте активацию расширения SCWS с помощью встроенной phpinfo()
страницы ServBay.
Пример использования
Пример кода на PHP для сегментации с помощью SCWS API:
<?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);
?>
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 и повысите качество работы с китайскими текстами в ваших проектах.