Segmentazione Cinese SCWS in ServBay: Guida all'Installazione, Configurazione e Utilizzo
ServBay, un potente ambiente locale per lo sviluppo Web, integra moltissimi strumenti e pacchetti utilizzati dai developer. SCWS (Simple Chinese Word Segmentation) è un sistema efficiente per la segmentazione delle parole cinesi, fondamentale nell’elaborazione di testi in lingua cinese (ad esempio per ricerche, NLP, analisi dei contenuti). ServBay include già SCWS e il relativo modulo PHP preinstallati, eliminando la necessità di procedure di setup complesse. In questa guida, scoprirai come configurare e usare SCWS in ServBay, sia tramite strumenti a linea di comando che tramite API PHP.
Panoramica
SCWS è una libreria ad alte prestazioni per la segmentazione di testo cinese, ideale per suddividere rapidamente e con precisione grandi quantità di dati. Supporta molteplici modalità di segmentazione, dizionari e regole personalizzate, risultando uno strumento fondamentale per implementare ricerca in cinese, suggerimenti di contenuti o analisi dei testi. ServBay integra SCWS nel suo set di pacchetti, fornendo anche l'estensione PHP già compilata, rendendo semplicissimo il suo utilizzo in locale.
Prerequisiti
- Hai già installato e avviato ServBay correttamente su macOS.
Installazione e Configurazione
Installazione
L’obiettivo di ServBay è offrire un ambiente di sviluppo pronto all’uso. SCWS, come strumento fondamentale per l’elaborazione dei testi cinesi, è già incluso nel sistema. Non sono richiesti download o compilazioni aggiuntive. I file eseguibili, i file di configurazione e i dizionari relativi a SCWS si trovano nella directory d’installazione di ServBay, solitamente situata in /Applications/ServBay/
.
Configurazione
Il file di configurazione predefinito di SCWS è in /Applications/ServBay/etc/scws/scws.ini
. Puoi personalizzarlo in base alle tue esigenze per modificare comportamento della segmentazione, charset, dizionari e altre impostazioni.
Ecco un esempio della configurazione predefinita:
[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]
: Specifica il set di caratteri, solitamente impostato suutf8
.[rule]
: Percorso al file delle regole di segmentazione.[dict]
: Percorso del dizionario per la segmentazione. Puoi specificare più dizionari separandoli con virgole.
Uso Base: Strumento da Linea di Comando
SCWS fornisce un potente tool a linea di comando, scws
, che consente test rapidi o processamenti batch direttamente da terminale. In ServBay l’eseguibile scws
si trova di default nella cartella bin
; solitamente /Applications/ServBay/bin
è già presente tra i tuoi PATH, basta quindi richiamare il comando dal terminale.
Esempi di Segmentazione
Ecco alcune operazioni di base tramite la CLI di scws
:
Segmentare una stringa
Passa una stringa al comando scws
tramite pipe:
echo "这是一个中文分词的例子" | scws -i
Segmentare testo da file
Usa l'opzione -i
per indicare il file di input e -o
per il file di output:
scws -i input.txt -o output.txt
Specificare file di regole
Con il parametro -r
puoi indicare un percorso personalizzato per le regole:
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
Impostare un dizionario
Con il parametro -d
imposti un dizionario personalizzato:
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
Uso Avanzato
Dizionari Personalizzati
Per aumentare la precisione, in particolare con termini tecnici, nomi propri o neologismi, puoi creare dizionari custom. SCWS utilizza dizionari in formato xdb
ad alta efficienza. Puoi usare lo strumento scws-gen
(incluso in ServBay) per convertire file testo in formato xdb
.
Passaggi per creare un dizionario personalizzato:
Crea un file di testo come
custom_dict.txt
, con una parola per linea, opzionalmente seguita da uno spazio e un peso numerico (che determina la priorità di segmentazione):ServBay 10 Ambiente di sviluppo locale 8 Segmentazione cinese 9
1
2
3Utilizza
scws-gen
per convertire il file testo nel formatoxdb
:bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1Modifica il file di configurazione di SCWS (
/Applications/ServBay/etc/scws/scws.ini
), alla sezione[dict]
, per aggiungere il percorso del tuo dizionario personalizzato dopo quello di default (separando con una virgola):ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2Assicurati che
/path/to/your/custom_dict.xdb
corrisponda alla posizione reale del tuo file.
Personalizzare Le Regole di Segmentazione
Il file delle regole, predefinito in /Applications/ServBay/etc/scws/rules.ini
, definisce il comportamento di SCWS per strutture linguistiche ambigue o complesse. Modificare questo file richiede una buona comprensione degli algoritmi usati. Per la maggior parte dei casi bastano le regole di default accompagnate da dizionari personalizzati. Se vuoi comunque personalizzare le regole, procedi con cautela e consulta la documentazione ufficiale di SCWS (se inclusa nella tua versione di ServBay).
Esempio di contenuto di un file di regole (di solito contenente pattern di abbinamento):
[rule]
# Qui puoi aggiungere regole personalizzate per la segmentazione
# Esempio: definire una semplice regola
# pattern = result
2
3
4
Utilizzo via API PHP
Se sviluppi web application in PHP, troverai che l’estensione SCWS è già caricata nell’ambiente PHP di ServBay. Puoi quindi accedere direttamente alle API di segmentazione del testo cinese nelle tue applicazioni, senza installare moduli aggiuntivi.
Puoi verificare che l’estensione sia attiva tramite la pagina phpinfo()
di ServBay.
Esempio di utilizzo
Ecco un semplice esempio di codice PHP che mostra l’uso delle API di SCWS:
<?php
// Assicurati che l'estensione SCWS sia caricata
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// Testo da segmentare
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// Apri un'istanza SCWS
$sh = scws_open();
// Imposta charset, solitamente coincide con quello del testo
scws_set_charset($sh, 'utf8');
// Imposta i percorsi del dizionario e delle regole
// Assicurati che i path siano corretti per la tua installazione 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);
// Invia il testo all'istanza SCWS
scws_send_text($sh, $text);
// Recupera il risultato
echo "Testo originale: " . $text . "\n";
echo "Risultato della segmentazione:\n";
// Itera e stampa i risultati
// $res è un array, ogni elemento rappresenta una parola segmentata (con tipo, peso, ecc.)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Stampa la parola segmentata
echo $word_info['word'] . " ";
// Se vuoi, puoi stampare anche tipo o peso:
// echo "Parola: " . $word_info['word'] . ", Tipo: " . $word_info['attr'] . ", Peso: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// Chiudi l'istanza SCWS e libera le risorse
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
Salva questo file come .php
(es. segment_test.php
) e posizionalo nella root di un sito ServBay (es. /Applications/ServBay/www/servbay.demo/
, se hai una configurazione chiamata servbay.demo
). Puoi visualizzare il risultato da browser oppure dalla CLI PHP.
Funzioni Principali
Le funzioni chiave dell’estensione SCWS per PHP includono:
scws_open()
: Inizializza e restituisce un’istanza SCWS; in caso di errore restituiscefalse
.scws_set_charset($sh, $charset)
: Imposta il set di caratteri per l’istanza$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Imposta il dizionario per$sh
.$mode
indica il formato (il supporto TXT è deprecato, è consigliatoxdb
).scws_set_rule($sh, $rule_path)
: Imposta il file delle regole.scws_send_text($sh, $text)
: Invia il testo da segmentare all’istanza$sh
.scws_get_result($sh)
: Ottiene i risultati della segmentazione, come array. Restituiscefalse
a fine processo.scws_close($sh)
: Chiude l’istanza e libera risorse.
Per funzioni avanzate (ignorare la punteggiatura, modalità custom, pesi delle parole, ecc.), vedi la documentazione ufficiale dell’estensione.
Domande Frequenti (FAQ)
1. I risultati della segmentazione non sono accurati?
- Soluzione: Verifica che i percorsi di dizionario (
dict
) e delle regole (rule
) in/Applications/ServBay/etc/scws/scws.ini
siano corretti e i relativi file esistano e siano leggibili. Per testi di settore o con molti neologismi, crea un dizionario custom (xdb
) tramitescws-gen
e aggiungilo alla configurazione. Se hai padronanza, puoi modificare anche le regole o i pesi nel dizionario.
2. SCWS è lento con grandi volumi di testo?
- Soluzione: Accertati di utilizzare dizionari nel formato
xdb
, molto più veloci dei vecchi formati testuali. Verifica che i percorsi nei file di configurazione puntino a filexdb
. Per testi di grosse dimensioni, considera di suddividere l’elaborazione in blocchi.
3. Il comando scws
non viene riconosciuto nel terminale?
- Soluzione: Probabilmente la cartella degli eseguibili di ServBay non è nel tuo PATH. Specifica il percorso completo, ad esempio
/Applications/ServBay/bin/scws -i ...
, oppure aggiungi/Applications/ServBay/bin
al PATH nella configurazione della tua shell (~/.bash_profile
,~/.zshrc
ecc.) e ricarica le impostazioni o riavvia il terminale.
4. La funzione scws_open()
in PHP non esiste o risulta errore?
- Soluzione: Significa che l’estensione SCWS non è stata caricata nell’ambiente PHP di ServBay. Verifica la versione PHP in uso tramite la dashboard di ServBay e controlla la pagina
phpinfo()
per vedere se l’estensione è attiva. In caso negativo, controlla che nel relativophp.ini
ci sia una riga tipoextension=scws.so
e che il filescws.so
esista nella cartella delle estensioni di PHP (ServBay di norma gestisce tutto questo in automatico). Riavvia ServBay se necessario.
Conclusione
SCWS è una soluzione potente ed efficiente per la segmentazione del testo cinese. Grazie ai pacchetti e alle estensioni PHP già inclusi in ServBay, gli sviluppatori possono rapidamente installare, configurare e utilizzare SCWS sul proprio Mac, sia per processare testi da linea di comando che per implementare la segmentazione dinamica nelle proprie applicazioni PHP. Seguendo questa guida potrai integrare SCWS nei tuoi progetti e migliorare notevolmente l’elaborazione dei testi in cinese.