Come abilitare e configurare il modulo SCWS PHP in ServBay
ServBay è un potente ambiente di sviluppo web locale compatibile con macOS e Windows, che integra i runtime di PHP, Node.js, Python, Go, Java e numerosi database come MySQL, PostgreSQL, MongoDB e Redis, oltre al supporto per server web come Caddy e Nginx. Per gli sviluppatori che devono gestire testo in cinese nelle proprie applicazioni PHP, ServBay include il veloce modulo SCWS (Simple Chinese Word Segmentation) per la segmentazione delle parole cinesi, attivabile in modo estremamente semplice.
Di seguito, una guida dettagliata sull'attivazione dell'estensione PHP SCWS in ServBay, la configurazione dei file dizionario e un esempio pratico di utilizzo.
Panoramica del modulo SCWS
SCWS è un motore open source per la segmentazione delle parole cinesi, famoso per l’elevata velocità e precisione. Combina tecniche di matching su dizionario e modelli statistici per segmentare rapidamente e accuratamente testi in cinese, risultando ideale per motori di ricerca, mining testuale, analisi di contenuti, estrazione di parole chiave e analisi morfologica.
Caratteristiche principali
- Segmentazione ad alte prestazioni: Algoritmi ottimizzati consentono a SCWS di processare grandi volumi di testo cinese in modo efficiente.
- Alta precisione: L’approccio combinato di dizionario e modelli statistici garantisce eccellente accuratezza nella segmentazione.
- Funzionalità avanzate: Oltre alla segmentazione di base, offre estrazione di keyword e analisi morfologica avanzata.
- Facile da integrare: API semplici e dirette agevolano l’integrazione nei progetti PHP.
- Open source e gratuito: SCWS è software open source, libero e personalizzabile secondo necessità.
Versione SCWS preinstallata in ServBay
ServBay supporta diversi rilasci di PHP, e per ciascuno include il modulo SCWS appropriato. Al momento della stesura, ServBay offre SCWS 1.2.3 per tutte le versioni PHP da 5.6 a 8.4.
Come abilitare il modulo SCWS
Di default, SCWS è disabilitato in ServBay. Ci sono due metodi per attivarlo: tramite l’interfaccia grafica di ServBay oppure modificando manualmente i file di configurazione.
Metodo consigliato: abilitazione tramite interfaccia grafica ServBay
Questa è la procedura più semplice:
- Avvia ServBay.
- Nel menu di navigazione a sinistra, seleziona Linguaggi (Languages), poi scegli PHP.
- Dall’elenco delle versioni PHP, individua quella su cui desideri attivare SCWS (esempio,
PHP 8.4
). - Premi il pulsante Estensioni (Extensions) a fianco della versione PHP selezionata.
- Nella lista delle estensioni, individua il modulo
SCWS
. - Attiva lo switch accanto a
SCWS
(di norma diventa verde). - Premi Salva (Save) in basso alla finestra.
- Apparirà una richiesta di riavvio del pacchetto PHP per applicare le modifiche: premi Riavvia (Restart).
Dopo questi semplici passaggi, il modulo SCWS sarà attivo per la versione PHP selezionata.
Abilitazione manuale tramite file di configurazione (per utenti esperti o diagnosi problemi)
Per chi desidera maggior controllo o in caso di troubleshooting, è possibile agire direttamente sui file di configurazione PHP:
Trova il file di configurazione: Individua la cartella
conf.d
relativa alla tua versione PHP. La configurazione di SCWS risiede nel filescws.ini
, il cui percorso tipico è:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1Sostituisci
X.Y
con il numero esatto della versione PHP che stai utilizzando, come8.4
.Modifica
scws.ini
: Apri il filescws.ini
con un editor di testo e cerca le seguenti righe:ini[scws] ; Uncomment the following line to enable scws ;extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5Rimuovi il punto e virgola (
;
) all'inizio della rigaextension = scws.so
:ini[scws] ; Uncomment the following line to enable scws extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5(Opzionale) Puoi definire charset e percorso dizionario anche qui, ma si consiglia di farlo dinamicamente da codice PHP per maggiore flessibilità. Se preferisci impostarli qui, rimuovi il punto e virgola dalla rispettiva riga e aggiorna i valori. Per un dizionario in UTF-8:
ini[scws] ; Uncomment the following line to enable scws extension = scws.so scws.default.charset = utf8 scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5Salva e chiudi il file.
Riavvia il pacchetto PHP: Dall’interfaccia ServBay, vai alla sezione Pacchetti (Packages), trova la giusta versione di PHP (es. 8.4) e premi l’icona di riavvio (di solito una freccia circolare).
Verifica dell’attivazione del modulo SCWS
Dopo aver abilitato SCWS, è fondamentale verificarne il corretto caricamento. Il modo più immediato è tramite la funzione phpinfo()
:
- Nella directory principale dei siti ServBay
/Applications/ServBay/www
, crea una nuova cartella di test, ad esempioscws-test
. - All’interno (
/Applications/ServBay/www/scws-test
), crea il filephpinfo.php
. - Incolla il seguente codice PHP:php
<?php phpinfo(); ?>
1
2
3 - Assicurati che il server web (Caddy, Nginx) sia in funzione e che la directory
/Applications/ServBay/www
sia accessibile. Di default, ServBay configura il dominioservbay.demo
verso questa cartella. - Accedi dal browser a
https://servbay.demo/scws-test/phpinfo.php
. - Nella pagina PHP Info cerca la sezione "SCWS". Se noti informazioni e opzioni SCWS (come la versione), l’estensione è attiva.
(Nota: il percorso dell’immagine è un esempio. Consulta la documentazione ufficiale ServBay per dettagli aggiornati.)
Creazione e configurazione dei dizionari SCWS
La qualità della segmentazione con SCWS dipende fortemente dal dizionario utilizzato. ServBay fornisce dei dizionari e file di regole predefiniti, di solito nella cartella /Applications/ServBay/etc/scws
. Naturalmente puoi aggiungere un tuo dizionario personalizzato.
Formato dei file dizionario SCWS
SCWS gestisce sia semplici file testo sia file dizionario binari in formato xdb (consigliato per velocità ed efficienza).
Il formato testuale prevede una riga per ogni lemma, opzionalmente seguita da frequenza (numero: maggiore significa più comune) e categoria grammaticale.
Parola1 [Frequenza1] [Categoria1]
Parola2 [Frequenza2] [Categoria2]
...
1
2
3
2
3
Esempio:
Intelligenza artificiale 1000 n
Elaborazione del linguaggio naturale 800 n
ServBay 500 nz
1
2
3
2
3
Salva i termini personalizzati in un file testo (es. my_dict.txt
) e assicurati che la codifica corrisponda al charset desiderato (consigliato UTF-8).
Generazione di un dizionario in formato xdb
ServBay include lo strumento scws-gen-dict
di SCWS che converte file testo in formato xdb.
- Apri il terminale macOS.
- Usa
cd
per accedere alla cartella bin di ServBay, oppure indica il percorso completo discws-gen-dict
. Lo strumento è generalmente qui:bashSostituisci/Applications/ServBay/bin/scws-gen-dict -i /path/to/your/my_dict.txt -o /Applications/ServBay/etc/scws/my_dict.utf8.xdb -c utf8
1/path/to/your/my_dict.txt
con il percorso reale del tuo file. Con-o
indichi dove salvare il file xdb (consigliato:/Applications/ServBay/etc/scws
).-c utf8
imposta la codifica di input.
Configurare SCWS per usare il dizionario
Dopo aver generato il file xdb, puoi specificarlo nello script PHP:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Imposta il charset in base al dizionario
// Definisci il percorso del dizionario principale (predefinito o personalizzato)
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// Puoi aggiungere altri dizionari, es. utente
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT indica dizionario utente
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // Definisci file regole (preinstallato in ServBay)
// ... Procedura di segmentazione ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
set_dict()
imposta il dizionario principale (di solito quello ufficiale di SCWS), mentre add_dict()
serve per caricare il dizionario personalizzato dell’utente. SCWS_XDICT_TXT
è una costante per l’aggiunta dei dizionari utente.
Esempio d’uso di SCWS
Avendo attivato SCWS e configurato i dizionari, puoi utilizzare le funzioni SCWS nello script PHP per la segmentazione del testo. Di seguito una demo base:
php
<?php
// Verifica che l'estensione SCWS sia caricata
if (!extension_loaded('scws')) {
die('L\'estensione SCWS non è caricata.');
}
// Inizializza l’oggetto SCWS
$scws = scws_new();
if (!$scws) {
die('Impossibile inizializzare SCWS.');
}
// Imposta il charset (deve corrispondere a testo e dizionario)
$scws->set_charset('utf8');
// Imposta il percorso del dizionario (predefinito ServBay)
// set_dict(): imposta il dizionario principale
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict(): aggiungi dizionario personalizzato
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// Imposta il percorso del file regole (predefinito ServBay), per analisi morfologica ecc.
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// Definisci la modalità di segmentazione (opzionale: di default SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: separa caratteri latini, email, url
// SCWS_XDICT_DUALITY: segmentazione avanzata (bigrammi)
// $scws->set_ignore(true); // Ignora la punteggiatura
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // Segmentazione multipla avanzata
// Testo cinese da segmentare
$text = "ServBay 是一个强大的本地 Web 开发环境,支持 PHP、Node.js 和多种数据库。";
// Invio del testo a SCWS per la segmentazione
$scws->send_text($text);
// Recupera i risultati
echo "Testo originale: " . $text . "\n\n";
echo "Risultato segmentazione:\n";
// Itera tutti i risultati
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word è array associativo: 'word', 'idf', 'attr' (categoria) ecc.
echo "Parola: " . $word['word'] . " (Categoria: " . $word['attr'] . ")\n";
}
}
// Libera risorse
$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
Salva il codice in un file .php
(es. scws_example.php
) nella directory web di ServBay (ad esempio /Applications/ServBay/www/scws-test/
). Accedi all’indirizzo https://servbay.demo/scws-test/scws_example.php
per visualizzare i risultati nel browser.
Note importanti
- Assicurati che la versione di SCWS attivata sia compatibile con quella di PHP selezionata. ServBay gestisce la compatibilità, ma in caso di configurazione manuale effettua verifiche.
- La qualità del dizionario è cruciale per risultati ottimali con SCWS. Per testi specialistici, usa o crea dizionari per il settore di interesse.
- Verifica che i percorsi nei file di configurazione (
scws.ini
), dizionari (.xdb
) e regole (.ini
) siano corretti e che PHP abbia i permessi di lettura. - Dopo modifiche alla configurazione PHP, riavvia sempre il pacchetto PHP interessato per rendere effettive le modifiche.
Domande frequenti (FAQ)
Q: Ho attivato SCWS tramite la UI ServBay, ma non compare in phpinfo()
?
A: Controlla di aver riavviato il giusto pacchetto PHP: se ne sono attivi più di uno, riavvia quello associato al tuo sito. Se il problema persiste, modifica manualmente il file scws.ini
, verificando il percorso e la sintassi.
Q: Come posso creare e usare un dizionario personalizzato?
A: Consulta la sezione “Creazione e configurazione dei dizionari SCWS” di questo documento, usa lo strumento scws-gen-dict
per convertire il dizionario testuale in formato xdb e caricalo tramite add_dict()
nel codice PHP.
Q: Qual è lo scopo del file regole SCWS (rules.utf8.ini
)?
A: Il file regole definisce analisi morfologica e comportamenti speciali nella segmentazione. ServBay include già il file predefinito, solitamente non occorre modificarlo.
Conclusioni
ServBay offre agli sviluppatori un sistema semplice e potente per abilitare e gestire il modulo SCWS per PHP dedicato alla segmentazione di testi cinesi. Grazie all’interfaccia grafica intuitiva e alle opzioni di configurazione manuale, puoi integrare facilmente SCWS nel tuo ambiente di sviluppo PHP locale. Utilizza i tool e dizionari preinstallati per ottenere rapidamente risultati affidabili ed efficienti, rendendo le tue applicazioni web (motori di ricerca, analisi testo e altro) altamente performanti nel trattamento dati in cinese. L’integrazione di SCWS arricchisce l’ecosistema ServBay, confermando il ruolo di ServBay come soluzione completa e versatile per lo sviluppo web in locale.