SCWS en ServBay: Guía de instalación, configuración y uso para la segmentación de palabras en chino
ServBay es un potente entorno local de desarrollo web que incluye muchas herramientas y paquetes comúnmente utilizados por los desarrolladores. SCWS (Simple Chinese Word Segmentation) es un sistema de segmentación de palabras en chino altamente eficiente y esencial para el procesamiento de textos chinos (como búsqueda, procesamiento de lenguaje natural, análisis de contenidos, etc.). ServBay ya trae preinstalado SCWS junto con su módulo para PHP, por lo que no tendrás que preocuparte por configuraciones complicadas. Esta guía te muestra en detalle cómo configurar y utilizar SCWS en ServBay, tanto con la herramienta de línea de comandos como a través de su API para PHP.
Descripción general
SCWS es una biblioteca de segmentación de palabras en chino de alto rendimiento, ideal para proyectos que requieren procesar grandes volúmenes de textos en chino de forma rápida y precisa. Admite varios modos de segmentación, permite diccionarios y reglas personalizadas, por lo que se ha convertido en una herramienta clave en la construcción de buscadores, sistemas de recomendación de contenidos y análisis textual en chino. ServBay integra SCWS de forma prediseñada y ofrece una extensión PHP ya precompilada, simplificando enormemente su uso en entornos de desarrollo locales.
Requisitos previos
- Tener ServBay instalado y funcionando correctamente en macOS.
Instalación y configuración
Instalación
ServBay está diseñado para ofrecer un entorno de desarrollo listo para usar desde el primer momento. Como herramienta esencial para el procesamiento de chino, SCWS viene incluido y preinstalado en ServBay. No es necesario descargar ni compilar nada adicional. Todos los ejecutables, archivos de configuración y diccionarios relacionados se encuentran en el directorio de instalación de ServBay, cuya ruta predeterminada suele ser /Applications/ServBay/
.
Configuración
El archivo de configuración predeterminado de SCWS se encuentra en /Applications/ServBay/etc/scws/scws.ini
dentro del directorio de instalación de ServBay. Puedes editar este archivo según tus necesidades para ajustar el comportamiento de SCWS, el conjunto de caracteres, los diccionarios y las reglas.
Ejemplo del archivo de configuración por defecto:
[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]
: Especifica el conjunto de caracteres por defecto, normalmente debe serutf8
.[rule]
: Ruta al archivo de reglas de segmentación.[dict]
: Ruta del archivo de diccionario de palabras. Puede especifcar varios diccionarios, separados por comas,
.
Uso básico: herramienta de línea de comandos
SCWS ofrece una poderosa herramienta de línea de comandos, scws
, que permite realizar pruebas de segmentación o procesamiento masivo de textos directamente desde la terminal. ServBay incluye el ejecutable scws
en el directorio bin
, el cual, normalmente, ya está añadido al PATH del sistema (/Applications/ServBay/bin
), permitiéndote ejecutar el comando scws
fácilmente desde la terminal.
Ejemplos de segmentación
Algunos ejemplos básicos de uso de la herramienta de línea de comandos scws
:
Segmentar una cadena de texto
Usa un pipe para enviar el texto directamente al comando scws
:
echo "这是一个中文分词的例子" | scws -i
Segmentar texto desde un archivo
Usa el parámetro -i
para especificar el archivo de entrada y -o
para el archivo de salida:
scws -i input.txt -o output.txt
Especificar archivo de reglas de segmentación
Utiliza el parámetro -r
para indicar la ruta a un archivo de reglas personalizado:
scws -i input.txt -o output.txt -r /ruta/a/tus/rules.ini
Especificar diccionario
Usa la opción -d
para indicar la ruta a un diccionario personalizado:
scws -i input.txt -o output.txt -d /ruta/a/tu/dict.utf8.xdb
Uso avanzado
Diccionarios personalizados
Para incrementar la precisión de la segmentación, especialmente en nombres propios, técnicos o términos de una industria específica, puedes crear tus propios diccionarios personalizados. SCWS utiliza diccionarios en formato xdb
de alto rendimiento. Utiliza la herramienta scws-gen
incluida en el directorio bin
de ServBay para convertir archivos de texto en diccionarios xdb
.
Pasos para crear un diccionario personalizado:
Prepara un archivo de texto, por ejemplo
custom_dict.txt
. Cada línea contendrá una palabra, y opcionalmente, después de un espacio, un valor de peso (un número entero que afecta la prioridad en la segmentación).ServBay 10 Entorno de desarrollo local 8 Segmentación en chino 9
1
2
3Genera el archivo diccionario en formato
xdb
usando la herramientascws-gen
, también ubicada en el directoriobin
de ServBay.bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1Edita la sección
[dict]
en el archivo de configuración de SCWS (/Applications/ServBay/etc/scws/scws.ini
) para agregar la ruta de tu diccionario personalizado después del diccionario por defecto, separados por coma,
.ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/ruta/a/tu/custom_dict.xdb
1
2Asegúrate de que
/ruta/a/tu/custom_dict.xdb
corresponda a la ubicación real de tu diccionario.
Ajustar reglas de segmentación
El archivo de reglas de segmentación (por defecto /Applications/ServBay/etc/scws/rules.ini
) define cómo SCWS trata ambigüedades y estructuras complejas del chino. Modificar este archivo requiere un conocimiento profundo del algoritmo de segmentación de SCWS. Para la mayoría de los usuarios, es suficiente usar las reglas predeterminadas junto con diccionarios personalizados. Si necesitas modificar las reglas, hazlo con precaución y consulta la documentación oficial de SCWS sobre el formato y la sintaxis (si la versión de SCWS incluida en ServBay tiene la documentación correspondiente).
Ejemplo de archivo de reglas (generalmente contiene patrones de coincidencia):
[rule]
# Puedes agregar aquí reglas personalizadas de segmentación
# Ejemplo: definir una regla simple
# patrón = resultado
2
3
4
Uso desde la API PHP
Si desarrollas aplicaciones web con PHP, debes saber que la extensión SCWS ya está preinstalada en el entorno PHP de ServBay. Esto significa que puedes llamar directamente a la API de SCWS en tu código PHP para realizar segmentaciones en chino, sin instalar ningún módulo adicional.
Puedes verificar si la extensión de SCWS está habilitada accediendo a la página phpinfo()
incluida en ServBay.
Ejemplo de uso
Ejemplo sencillo en PHP para usar la API de SCWS y segmentar un texto:
<?php
// Asegurarse de que la extensión SCWS esté cargada
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// Texto a segmentar
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// Abrir una instancia de SCWS
$sh = scws_open();
// Configurar el conjunto de caracteres, usualmente coincide con el encoding del texto
scws_set_charset($sh, 'utf8');
// Configurar las rutas al diccionario y al archivo de reglas
// Asegúrate de usar aquí la ruta real de los archivos de SCWS en 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);
// Enviar el texto a la instancia SCWS
scws_send_text($sh, $text);
// Obtener y mostrar los resultados de la segmentación
echo "Texto original: " . $text . "\n";
echo "Resultado de la segmentación:\n";
// Iterar sobre los resultados y mostrarlos
// $res es un array. Cada elemento representa un resultado (palabra, tipo, etc.)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Imprime la palabra segmentada
echo $word_info['word'] . " ";
// Si lo necesitas, también puedes mostrar el tipo o peso, por ejemplo:
// echo "Palabra: " . $word_info['word'] . ", Tipo: " . $word_info['attr'] . ", Peso: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// Cerrar la instancia de SCWS y liberar recursos
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
Guarda este código como un archivo .php
, por ejemplo segment_test.php
, y colócalo en el directorio raíz del sitio en ServBay /Applications/ServBay/www/servbay.demo/
(suponiendo que tienes configurado un sitio llamado servbay.demo
). Luego accede a este archivo desde el navegador, o bien ejecútalo desde la terminal usando PHP CLI para ver los resultados.
Funciones básicas
Las funciones principales de la extensión SCWS para PHP incluyen:
scws_open()
: Inicializa y abre una nueva instancia de SCWS. Devuelve el manejador si tiene éxito, ofalse
si falla.scws_set_charset($sh, $charset)
: Especifica el conjunto de caracteres para la instancia$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Configura el diccionario para la instancia$sh
.$mode
determina el tipo de diccionario,SCWS_XDICT_TXT
indica texto plano (obsoleto, se recomienda usarxdb
). Normalmente basta indicar el archivoxdb
.scws_set_rule($sh, $rule_path)
: Establece la ruta del archivo de reglas para la instancia$sh
.scws_send_text($sh, $text)
: Envia el texto$text
a la instancia$sh
para segmentación.scws_get_result($sh)
: Obtiene los resultados de segmentación de la instancia$sh
. Devuelve un array con la información detallada de cada palabra, hasta que termina y devuelvefalse
.scws_close($sh)
: Cierra la instancia$sh
y libera los recursos asociados.
Para funciones avanzadas (por ejemplo, ignorar puntuación, ajustar modos de segmentación, obtener el peso de las palabras, etc.), consulta la documentación oficial de la extensión SCWS para PHP.
Preguntas frecuentes (FAQ)
1. ¿Qué hago si los resultados de segmentación de SCWS no son precisos?
- Solución: En primer lugar, revisa que los archivos de diccionario (
dict
) y de reglas (rule
) especificados en la configuración de SCWS (/Applications/ServBay/etc/scws/scws.ini
) sean correctos y que existan. Para textos técnicos o con muchos términos nuevos, es recomendable crear diccionarios personalizados (usandoscws-gen
para formatoxdb
) y añadir la ruta al archivo en la configuración. Modificar el peso de los diccionarios o las reglas de segmentación también puede ayudar, pero requiere mayor conocimiento.
2. ¿Cómo mejorar el rendimiento o la velocidad de segmentación?
- Solución: Asegúrate de que SCWS utilice diccionarios en formato
xdb
, no en texto plano. Los diccionariosxdb
son mucho más eficientes para carga y consultas. En la configuración, especifica siempre archivos.xdb
como diccionario. Para textos grandes, considera procesarlos en bloques más pequeños.
3. ¿Por qué el comando SCWS no funciona en la terminal?
- Solución: Es probable que el directorio de ejecutables de ServBay no esté añadido al PATH del sistema. Intenta ejecutar el comando usando la ruta completa, por ejemplo:
/Applications/ServBay/bin/scws -i ...
. También puedes editar tu configuración de shell (como~/.bash_profile
o~/.zshrc
) y añadir/Applications/ServBay/bin
al PATH, luego reiniciar la terminal.
4. ¿Por qué falla scws_open()
o PHP no reconoce las funciones SCWS?
- Solución: Esto indica que la extensión SCWS para PHP no se ha cargado. Revisa en el panel de control de ServBay cuál versión de PHP estás usando, abre la página de
phpinfo()
para comprobar si aparece la extensiónscws
y si está habilitada. Si no es así, confirma que el archivo de configuración de PHP (php.ini
) incluya una línea comoextension=scws.so
y que el archivoscws.so
exista en el directorio de extensiones de PHP (ServBay ya lo configura por defecto). Si todo está correcto y sigue sin funcionar, prueba reiniciar ServBay.
Resumen
SCWS es un sistema de segmentación de palabras en chino potente y eficiente. Gracias a la integración y extensión PHP incluida en los paquetes de ServBay, los desarrolladores pueden instalar, configurar y utilizar SCWS fácilmente en entornos locales sobre macOS, ya sea para procesamiento de textos mediante la línea de comandos o para segmentaciones dinámicas en aplicaciones PHP. Siguiendo esta guía, podrás empezar rápidamente y aprovechar SCWS en tus proyectos para mejorar el procesamiento de texto en chino.