Cómo habilitar y configurar el módulo SCWS de PHP en ServBay
ServBay es un potente entorno local de desarrollo web compatible con macOS y Windows, que integra múltiples entornos de ejecución como PHP, Node.js, Python, Go y Java, además de bases de datos como MySQL, PostgreSQL, MongoDB y Redis. También soporta servidores web como Caddy y Nginx. Para los desarrolladores que necesitan procesar texto chino en aplicaciones PHP, ServBay incluye el eficiente módulo SCWS (Simple Chinese Word Segmentation) para segmentación de palabras chinas, y su activación es muy sencilla.
En este artículo se detalla cómo habilitar la extensión SCWS para PHP en ServBay, configurar los archivos de diccionario y mostrar ejemplos básicos de uso en código.
Resumen del módulo SCWS
SCWS es un motor de segmentación de palabras chinas de código abierto, reconocido por su alto rendimiento y precisión. Usa una combinación de diccionarios y modelos estadísticos para segmentar texto chino de forma rápida y precisa, siendo ideal para motores de búsqueda en chino, minería de texto, análisis de contenido, extracción de palabras clave y etiquetado de categorías gramaticales.
Principales características
- Segmentación de alta velocidad: SCWS emplea algoritmos optimizados para procesar grandes volúmenes de texto chino de manera eficiente.
- Alta precisión: Combinando diccionario y modelo estadístico, ofrece resultados muy precisos en tareas de segmentación.
- Funciones avanzadas: Además de la segmentación básica, permite extraer palabras clave y realizar etiquetado gramatical avanzado.
- Fácil integración: Proporciona una API sencilla para integrarse en aplicaciones PHP.
- Código abierto y gratuito: Puede usarse libremente y personalizarse según las necesidades.
Versión preinstalada de SCWS en ServBay
ServBay soporta varias versiones de PHP, y cada una cuenta con el módulo SCWS instalado por defecto. Al momento de escribir este documento, ServBay incluye la extensión SCWS 1.2.3 para versiones de PHP desde 5.6 hasta 8.4.
Cómo habilitar el módulo SCWS
Por defecto, el módulo SCWS está deshabilitado en ServBay. Hay dos formas principales de habilitarlo: mediante la interfaz gráfica o editando archivos de configuración manualmente.
Método recomendado: habilitar desde la interfaz gráfica de ServBay
Este es el método más sencillo y rápido:
- Abre la interfaz principal de ServBay.
- En la barra lateral izquierda, haz clic en Languages (Idiomas) y luego selecciona PHP.
- En la lista de versiones de PHP que aparece a la derecha, localiza la versión PHP en la que deseas habilitar SCWS (por ejemplo,
PHP 8.4). - Haz clic en el botón Extensions (Extensiones) junto a esa versión.
- En la ventana emergente de extensiones, busca el módulo
SCWS. - Activa el interruptor a la izquierda de
SCWS(debería cambiar a verde para indicar que está habilitado). - Haz clic en el botón Save (Guardar) en la parte inferior de la ventana.
- ServBay te pedirá reiniciar el paquete de PHP para aplicar los cambios. Haz clic en Restart (Reiniciar).
Tras estos pasos, el módulo SCWS estará habilitado para la versión PHP seleccionada.
Habilitación manual a través de archivos de configuración (para usuarios avanzados o resolución de problemas)
Si necesitas un control más detallado o solucionar problemas, también puedes editar el archivo de configuración de PHP:
Localiza el archivo de configuración: Encuentra el directorio
conf.dpara tu versión de PHP. El archivo de configuración para SCWS esscws.iniy su ruta suele ser:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini1Sustituye
X.Ypor tu número de versión PHP, como8.4.Edita el archivo
scws.ini: Abre el archivoscws.inicon un editor de texto y busca el siguiente contenido:ini[scws] ; Descomenta la siguiente línea para habilitar scws ;extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws1
2
3
4
5Elimina el punto y coma (
;) al inicio de la líneaextension = scws.sopara dejarlo así:ini[scws] ; Descomenta la siguiente línea para habilitar scws extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws1
2
3
4
5(Opcional) Puedes configurar aquí el juego de caracteres y la ruta de diccionario; sin embargo, se recomienda hacerlo en código PHP para mayor flexibilidad. Si decides configurarlo aquí, descomenta y modifica las líneas correspondientes. Por ejemplo, si tu diccionario está en UTF-8:
ini[scws] ; Descomenta la siguiente línea para habilitar scws extension = scws.so scws.default.charset = utf8 scws.default.fpath = /Applications/ServBay/etc/scws1
2
3
4
5Guarda y cierra el archivo.
Reinicia el paquete PHP: En la interfaz de ServBay, ve a Packages (Paquetes), localiza la versión PHP que modificaste (por ejemplo, PHP 8.4) y haz clic en el botón de reinicio (usualmente un ícono de flecha circular).
Verificar que el módulo SCWS se ha cargado correctamente
Es importante confirmar que el módulo se ha habilitado. El método más usado es consultar la salida de phpinfo() en PHP:
- En el directorio raíz sugerido
/Applications/ServBay/www, crea una subcarpeta nueva para pruebas, comoscws-test. - Dentro de esa carpeta (
/Applications/ServBay/www/scws-test), crea un archivo llamadophpinfo.php. - Copia el siguiente código PHP en
phpinfo.php:php<?php phpinfo(); ?>1
2
3 - Asegúrate de que tu servidor web ServBay (Caddy o Nginx, por ejemplo) esté funcionando y tenga acceso al directorio
/Applications/ServBay/www. Por defecto, ServBay usa el dominioservbay.demopara ese directorio. - Accede desde el navegador a
https://servbay.demo/scws-test/phpinfo.php. - En la página de información de PHP, busca la sección "SCWS". Si ves la configuración y los datos de SCWS (como versión y opciones), el módulo está correctamente cargado.
(Nota: la ruta de esta imagen es de ejemplo; consulta la documentación oficial de ServBay para imágenes reales)
Creación y configuración de diccionarios para SCWS
SCWS es un motor basado en diccionarios, por lo que su eficacia depende en gran parte del diccionario utilizado. ServBay proporciona diccionarios y archivos de reglas predeterminados, normalmente ubicados en /Applications/ServBay/etc/scws. También puedes crear o importar tus propios diccionarios.
Formato de archivos de diccionario SCWS
SCWS admite archivos de diccionario en texto plano y en formato binario xdb. Se recomienda el formato xdb por su mayor velocidad y menor consumo de memoria.
El formato de texto es el siguiente: cada línea contiene una palabra, que puede estar seguida opcionalmente por su frecuencia (número, cuanto mayor más común) y categoría gramatical:
Palabra1 [Frecuencia1] [Categoría1]
Palabra2 [Frecuencia2] [Categoría2]
...1
2
3
2
3
Por ejemplo:
Inteligencia artificial 1000 n
Procesamiento del lenguaje natural 800 n
ServBay 500 nz1
2
3
2
3
Guarda tus palabras personalizadas en un archivo de texto, por ejemplo my_dict.txt. Asegúrate de que la codificación de archivo coincida con la que utilizarás (se recomienda UTF-8).
Crear un archivo de diccionario en formato xdb
ServBay incluye la herramienta scws-gen-dict para convertir diccionarios en texto a formato xdb.
- Abre Terminal en macOS.
- Usa el comando
cdpara ir al directorio bin de ServBay o indica la ruta completa. Normalmente la herramienta está aquí:bashSustituye/Applications/ServBay/bin/scws-gen-dict -i /path/to/your/my_dict.txt -o /Applications/ServBay/etc/scws/my_dict.utf8.xdb -c utf81/path/to/your/my_dict.txtpor la ruta real de tu diccionario en texto. El parámetro-oindica la ruta y nombre de archivo de salida en xdb (se recomienda/Applications/ServBay/etc/scws).-c utf8indica la codificación del archivo de entrada.
Configurar SCWS para usar archivos de diccionario
Una vez generado el archivo xdb, puedes indicarle a SCWS que lo utilice desde tu código PHP:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Configura el juego de caracteres, debe coincidir con el diccionario
// Establece la ruta del diccionario principal, puede ser el predeterminado o uno creado por ti
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// Para añadir otros diccionarios
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT indica un diccionario adicional del usuario
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // Archivo de reglas para etiquetado gramatical; ServBay lo incluye por defecto
// ... operaciones de segmentación a continuación ...
?>1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
set_dict() establece el diccionario principal, habitualmente el oficial de SCWS. add_dict() permite agregar tus propios diccionarios. SCWS_XDICT_TXT es una constante que indica que se trata de un diccionario de usuario.
Ejemplo de uso de SCWS
Cuando el módulo SCWS está habilitado y el diccionario configurado, puedes segmentar texto directamente desde PHP. Este es un ejemplo básico:
php
<?php
// Comprueba que la extensión SCWS está cargada
if (!extension_loaded('scws')) {
die('La extensión SCWS no está cargada.');
}
// Inicializa el objeto SCWS
$scws = scws_new();
if (!$scws) {
die('No fue posible inicializar SCWS.');
}
// Configura el juego de caracteres (debe coincidir con tu texto y diccionario)
$scws->set_charset('utf8');
// Establece la ruta del diccionario (predeterminado de ServBay)
// set_dict() establece el diccionario principal
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() permite agregar diccionarios personalizados
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// Establece la ruta del archivo de reglas (predeterminado de ServBay), para etiquetado gramatical
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// Configuración de modos de segmentación (opcional, por defecto SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: Segmenta caracteres no chinos como email, url
// SCWS_XDICT_DUALITY: Segmentación compuesta (bigramas)
// $scws->set_ignore(true); // Ignorar signos de puntuación
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // Nivel de segmentación compuesta
// Texto chino a segmentar
$text = "ServBay 是一个强大的本地 Web 开发环境,支持 PHP、Node.js 和多种数据库。";
// Envía el texto para procesamiento
$scws->send_text($text);
// Obtén los resultados de la segmentación
echo "Texto original: " . $text . "\n\n";
echo "Resultados de segmentación:\n";
// Itera sobre los resultados
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word es un array asociativo con 'word', 'idf', 'attr' (categoría gramatical), etc.
echo "Palabra: " . $word['word'] . " (Categoría: " . $word['attr'] . ")\n";
}
}
// Libera recursos 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
Guarda este código como .php (por ejemplo, scws_example.php) y colócalo en el directorio del sitio web de ServBay (por ejemplo, /Applications/ServBay/www/scws-test/). Accede mediante el navegador a https://servbay.demo/scws-test/scws_example.php para ver el resultado de la segmentación.
Consideraciones importantes
- Asegúrate de que la versión del módulo SCWS es compatible con la versión de PHP que utilizas. ServBay gestiona la compatibilidad por ti, pero si configuras manualmente, compruébalo.
- La calidad de la segmentación depende directamente del diccionario. Para textos de nicho, crea o utiliza diccionarios especializados.
- Verifica que los archivos de configuración (
scws.ini), diccionarios (.xdb) y reglas (.ini) tengan las rutas correctas y los permisos de lectura necesarios para PHP. - Siempre reinicia el paquete PHP correspondiente después de modificar la configuración para activar los cambios.
Preguntas frecuentes (FAQ)
P: Habilité SCWS desde la interfaz de ServBay pero no lo veo en phpinfo()
R: Asegúrate de haber reiniciado el paquete PHP correcto. Puede haber varias versiones de PHP en uso; reinicia la versión asociada a tu sitio web. Si aún tienes problemas, edita manualmente el archivo scws.ini y revisa cuidadosamente la ruta y la sintaxis.
P: ¿Cómo creo y uso un diccionario personalizado?
R: Revisa la sección "Creación y configuración de diccionarios SCWS", usa la herramienta scws-gen-dict para convertir tu archivo de texto a xdb y cárgalo en tu código PHP con el método add_dict().
P: ¿Para qué sirve el archivo de reglas de SCWS (rules.utf8.ini)?
R: Es principalmente para etiquetado gramatical y reglas especiales de segmentación. ServBay ya incluye un archivo de reglas predeterminado, normalmente no necesitas modificarlo.
Conclusión
ServBay proporciona a los desarrolladores una forma práctica de habilitar y gestionar el módulo de segmentación de palabras chinas SCWS para PHP. Tanto a través de la interfaz gráfica como mediante configuración manual, puedes integrar fácilmente SCWS en tus proyectos PHP. Gracias a las herramientas y diccionarios preinstalados de ServBay, comenzar es rápido y sencillo. SCWS te permite procesar texto chino de forma eficiente y precisa, dotando a tus aplicaciones web (por ejemplo, motores de búsqueda, análisis de contenido) de sólidas capacidades de manejo de texto en chino. Como parte del ecosistema de ServBay, la integración de SCWS mejora aún más la utilidad y el alcance global de este entorno de desarrollo local.
