SCWS dans ServBay : Guide d’installation, de configuration et d’utilisation pour la segmentation du chinois
ServBay est un environnement local de développement Web puissant, intégrant de nombreux outils et packages couramment utilisés par les développeurs. SCWS (Simple Chinese Word Segmentation) constitue un système performant d’analyse lexicale chinoise, essentiel pour le traitement de texte en chinois, tels que la recherche, le traitement du langage naturel ou l’analyse de contenu. ServBay inclut déjà SCWS et son module PHP, vous épargnant ainsi toute installation fastidieuse. Ce guide vous explique étape par étape comment configurer et utiliser SCWS sous ServBay, aussi bien en ligne de commande qu’au travers de l’API PHP.
Présentation
SCWS est une bibliothèque de segmentation de texte chinois hautes performances, parfaitement adaptée au traitement rapide et précis de grands volumes de texte en chinois. Elle propose différents modes d’analyse, la gestion de dictionnaires personnalisés et de règles spécifiques, faisant d'elle un outil fondamental pour les moteurs de recherche chinois, les systèmes de recommandation de contenu ou l’analyse de texte. ServBay intègre SCWS dans son package avec une extension PHP précompilée, ce qui simplifie grandement son utilisation sur macOS.
Prérequis
- ServBay doit être installé et fonctionnel sur le système d’exploitation macOS.
Installation et configuration
Installation
La philosophie de ServBay est de fournir un environnement de développement prêt à l’emploi. SCWS, en tant qu’outil clé pour le traitement du chinois, est préinstallé avec ServBay. Donc, aucune étape de téléchargement ou de compilation supplémentaire n’est requise. Les exécutables, fichiers de configuration et dictionnaires associés sont centralisés dans le dossier d’installation de ServBay, généralement sous /Applications/ServBay/
.
Configuration
Le fichier de configuration par défaut de SCWS se trouve à l’adresse /Applications/ServBay/etc/scws/scws.ini
dans le répertoire d’installation de ServBay. Vous pouvez modifier ce fichier pour ajuster le comportement de segmentation, l’encodage utilisé, les dictionnaires et les règles selon vos besoins.
Voici un exemple du contenu du fichier de configuration par défaut :
ini
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
[charset]
: définit l’encodage par défaut, habituellementutf8
.[rule]
: indique le chemin du fichier contenant les règles de segmentation.[dict]
: indique le chemin du dictionnaire utilisé pour la segmentation. Vous pouvez lister plusieurs dictionnaires, séparés par une virgule,
.
Utilisation de base : l’outil en ligne de commande
SCWS propose un outil CLI puissant, scws
, pour tester la segmentation ou traiter des fichiers en lot directement depuis le terminal. L’exécutable scws
est inclus dans le répertoire bin
de ServBay (normalement /Applications/ServBay/bin
), qui est ajouté automatiquement au PATH système. Ainsi, la commande scws
est directement accessible dans votre terminal.
Exemples de segmentation
Voici quelques utilisations courantes de l'outil en ligne de commande scws
:
Segmentation d’une chaîne de caractères
Envoyez une chaîne à SCWS via un pipe :
bash
echo "这是一个中文分词的例子" | scws -i
1
Segmentation à partir d’un fichier
L’option -i
sert à spécifier le fichier source, -o
le fichier résultat :
bash
scws -i input.txt -o output.txt
1
Utilisation d’un fichier de règles personnalisé
L’option -r
permet d’indiquer un fichier de règles :
bash
scws -i input.txt -o output.txt -r /chemin/vers/vos/rules.ini
1
Spécification d’un dictionnaire
L’option -d
permet de définir le chemin d’un dictionnaire personnalisé :
bash
scws -i input.txt -o output.txt -d /chemin/vers/votre/dict.utf8.xdb
1
Utilisation avancée
Dictionnaire personnalisé
Pour améliorer la précision de la segmentation, notamment face à des termes techniques, noms propres ou néologismes, vous pouvez créer votre propre dictionnaire. SCWS utilise le format optimisé xdb
. L’outil scws-gen
, fourni avec ServBay, permet de convertir un fichier texte au format xdb
.
Création d’un dictionnaire personnalisé :
Créez un fichier texte, par exemple
custom_dict.txt
. Chaque ligne contient un mot, suivi, de manière facultative, par un espace et un poids (nombre entier reflétant la priorité du mot).ServBay 10 environnement de développement local 8 segmentation du chinois 9
1
2
3Utilisez l’outil
scws-gen
pour générer un dictionnaire au formatxdb
. Lui aussi se trouve dans le répertoirebin
de ServBay.bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1Modifiez la section
[dict]
du fichier/Applications/ServBay/etc/scws/scws.ini
pour ajouter le chemin de votre dictionnaire, après le dictionnaire par défaut et séparé par une virgule.ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/chemin/vers/votre/custom_dict.xdb
1
2Veillez à indiquer le chemin correct où se trouve réellement votre dictionnaire personnalisé.
Adapter les règles de segmentation
Le fichier de règles (par défaut /Applications/ServBay/etc/scws/rules.ini
) définit la gestion des ambiguïtés ou des constructions complexes du chinois. Modifier ce fichier requiert une bonne compréhension de l’algorithme de SCWS. Pour la plupart des utilisateurs, le jeu de règles par défaut, combiné à un dictionnaire personnalisé, suffira dans la majorité des cas. Si vous souhaitez quand même les adapter, faites-le prudemment et référez-vous à la documentation officielle de SCWS si elle est disponible dans la version fournie par ServBay.
Exemple de contenu possible :
ini
[rule]
# Ajoutez ici vos règles de segmentation personnalisées
# Exemple : définir une règle simple
# pattern = result
1
2
3
4
2
3
4
Utilisation via l’API PHP
Pour les développeurs Web utilisant PHP, ServBay propose une extension PHP SCWS déjà activée. Vous n’avez aucune démarche d’installation ou de configuration supplémentaire : commencez simplement à utiliser l’API SCWS dans votre code PHP.
Vous pouvez vérifier l’activation de l’extension SCWS via la page intégrée phpinfo()
de ServBay.
Exemple d’utilisation
Voici un exemple simple de code PHP pour effectuer une segmentation avec l’API SCWS :
php
<?php
// Vérifiez que l’extension SCWS est chargée
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// Texte à segmenter
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// Ouvrir une instance du segmentateur SCWS
$sh = scws_open();
// Définir l'encodage, identique à celui de votre texte
scws_set_charset($sh, 'utf8');
// Définissez les chemins des dictionnaires et des règles
// Vérifiez que les chemins correspondent à votre installation 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);
// Envoyer le texte à analyser à l’instance SCWS
scws_send_text($sh, $text);
// Obtenir le résultat de la segmentation
echo "Texte original : " . $text . "\n";
echo "Résultat segmentation :\n";
// Parcourir et afficher les résultats
// $res est un tableau contenant chaque segment (mot, nature, poids, etc.)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Afficher le mot
echo $word_info['word'] . " ";
// Pour afficher d’autres infos :
// echo "Mot : " . $word_info['word'] . ", Nature : " . $word_info['attr'] . ", Poids : " . $word_info['idf'] . "\n";
}
}
echo "\n";
// Fermer l’instance SCWS et libérer la mémoire
scws_close($sh);
?>
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
Enregistrez ce code sous un fichier .php
(par exemple segment_test.php
), placez-le dans le dossier racine de votre site sous ServBay : /Applications/ServBay/www/servbay.demo/
(en supposant que votre site s’appelle servbay.demo
) puis accédez-y via un navigateur ou exécutez-le en ligne de commande à l’aide de PHP CLI pour visualiser le résultat.
Fonctions principales
Voici quelques fonctions essentielles de l’extension PHP SCWS :
scws_open()
: Initialise et ouvre une instance du segmentateur SCWS. Retourne un handle en cas de succès, oufalse
en cas d’échec.scws_set_charset($sh, $charset)
: Définit l’encodage de l’instance$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Définit le chemin du dictionnaire pour l’instance$sh
.$mode
précise le format (préférezxdb
à l’ancien mode texte).scws_set_rule($sh, $rule_path)
: Indique le chemin du fichier de règles.scws_send_text($sh, $text)
: Envoie le texte à analyser à l’instance$sh
.scws_get_result($sh)
: Récupère les segments calculés pour$sh
. Chaque appel retourne les infos détaillées d’un segment jusqu'à épuisement des résultats (false
alors).scws_close($sh)
: Ferme l’instance du segmentateur et libère la mémoire.
Pour davantage de fonctionnalités avancées (ignorance de ponctuation, modes de segmentation, poids des termes, etc.), consultez la documentation officielle de l’extension PHP SCWS.
FAQ - Foire aux questions
1. Les résultats de la segmentation SCWS ne sont pas précis ?
- Suggestion : Contrôlez d’abord que les chemins vers le dictionnaire (
dict
) et les règles (rule
) spécifiés dans/Applications/ServBay/etc/scws/scws.ini
sont corrects et pointent vers des fichiers existants. Pour du texte spécialisé ou des néologismes, créez un dictionnaire personnalisé (viascws-gen
), puis ajoutez son chemin au fichier de configuration. L’ajustement des poids ou la modification de règles peut aussi aider mais nécessite une bonne compréhension interne de SCWS.
2. Faible performance ou lenteur de SCWS ?
- Suggestion : Assurez-vous d’utiliser un dictionnaire au format
xdb
, optimisé pour la rapidité, et non l’ancien format texte. Dans la configuration, vérifiez que le chemin du dictionnaire se termine par.xdb
. Pour des textes volumineux, procédez par blocs.
3. L’outil en ligne de commande SCWS ne fonctionne pas, commande introuvable ?
- Suggestion : Généralement dû au fait que le répertoire
bin
de ServBay n’est pas dans le PATH système. Lancez alors la commande en précisant le chemin complet, par exemple/Applications/ServBay/bin/scws -i ...
. Sinon, ajoutez/Applications/ServBay/bin
à la variable PATH de votre shell (dans~/.bash_profile
,~/.zshrc
, etc.) et rechargez la configuration ou redémarrez le terminal.
4. scws_open()
échoue ou existe pas en PHP ?
- Suggestion : L’extension SCWS pour PHP n’est pas chargée dans l’environnement ServBay. Vérifiez la version PHP depuis le panneau ServBay, accédez à
phpinfo()
pour contrôler si l’extension est affichée et activée. Si besoin, contrôlez queextension=scws.so
est bien présent dans le fichier de configurationphp.ini
et que le fichierscws.so
existe dans le répertoire des extensions de PHP (normalement déjà configuré par ServBay). En cas de souci, redémarrez le service ServBay.
Conclusion
SCWS est un système de segmentation chinoise performant et complet. Grâce à son intégration native dans ServBay, les développeurs peuvent facilement l’installer, le configurer et l’exploiter sur macOS, à la fois en ligne de commande pour le traitement de texte ou dynamiquement dans leurs applications PHP. Suivez les étapes de ce guide pour commencer rapidement à utiliser SCWS et optimiser la gestion du texte chinois dans vos projets.