SCWS PHP-module inschakelen en configureren in ServBay
ServBay is een krachtige, speciaal voor macOS ontworpen lokale webontwikkelomgeving. Het integreert runtimes voor talen als PHP, Node.js, Python, Go en Java, ondersteunt databases als MySQL, PostgreSQL, MongoDB en Redis, en werkt samen met webservers als Caddy en Nginx. Voor ontwikkelaars die Chinese tekst binnen PHP-applicaties willen verwerken, biedt ServBay standaard de efficiënte SCWS (Simple Chinese Word Segmentation) module voor Chinese woordsegmentatie. Het inschakelen ervan is zeer eenvoudig.
In dit artikel lees je hoe je de SCWS PHP-extensie in ServBay activeert, hoe je woordenboekbestanden instelt, en wordt met voorbeeldcode de basistoepassing gedemonstreerd.
SCWS-module: Overzicht
SCWS is een open-source Chinese segmentatie-engine die uitblinkt in prestaties en nauwkeurigheid. Door een combinatie van woordenboekmatching en statistische modellen verwerkt het snel en precies Chinese teksten — ideaal voor zoekmachines, tekst mining, content-analyse, trefwoordextractie en taalkundige tagging.
Belangrijkste kenmerken
- Snelle segmentatie: SCWS gebruikt geoptimaliseerde algoritmen voor vlotte verwerking van grote hoeveelheden Chinese data.
- Hoge nauwkeurigheid: Dankzij de combinatie van woordenboeken en statistische modellen presteert SCWS uitstekend qua precisie.
- Rijk aan functies: Naast standaard segmentatie biedt SCWS mogelijkheden als trefwoordextractie en woordsoorttagging.
- Eenvoudige integratie: Beschikbaar via een overzichtelijke API, waardoor toevoeging aan PHP-projecten moeiteloos verloopt.
- Open-source: Gratis te gebruiken en aanpasbaar naar wens.
Vooraf geïnstalleerde SCWS-versie in ServBay
ServBay ondersteunt meerdere PHP-versies en heeft voor ieder daarvan de passende SCWS-module alvast geïnstalleerd. Op het moment van schrijven is SCWS 1.2.3 beschikbaar voor PHP-versies 5.6 t/m 8.4.
SCWS-module inschakelen
Standaard staat de SCWS-module in ServBay uit. Je kunt hem op twee manieren inschakelen: via de grafische interface van ServBay of door handmatig een configuratiebestand aan te passen.
Aanbevolen: inschakelen via de ServBay-interface
Zo doe je dat het snelst:
- Open de ServBay-hoofdinterface.
- Klik in de linkernavigatie op Talen (Languages) en kies PHP.
- Zoek in de rechterkolom het PHP-versienummer waarbij je SCWS wilt inschakelen (bijvoorbeeld
PHP 8.4
). - Klik op de Extensies (Extensions) knop rechts naast die PHP-versie.
- Zoek in de lijst naar het
SCWS
-module. - Zet de schakelaar links van
SCWS
op actief (deze wordt meestal groen). - Klik onderaan op Opslaan (Save).
- ServBay vraagt je nu om het PHP-pakket opnieuw te starten om de wijziging door te voeren. Klik op Herstarten (Restart).
Hiermee is de SCWS-module ingeschakeld voor jouw gekozen PHP-versie.
Handmatig via het configuratiebestand (voor gevorderden of probleemoplossing)
Wil je meer controle of storingen oplossen, wijzig dan het PHP-configuratiebestand direct:
Vind het configuratiebestand: Zoek de
conf.d
map bij de juiste PHP-versie. De SCWS-configuratie staat inscws.ini
, meestal te vinden via:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1Vervang
X.Y
door het versienummer (bijv.8.4
).Bewerk het bestand
scws.ini
: Open het bestand met een teksteditor. Zie bijvoorbeeld: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
5Verwijder de puntkomma voor
extension = scws.so
zodat deze geactiveerd wordt: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(Optioneel) Stel hier charset en woordenboekpad in, of doe dit flexibeler in je PHP-code. Wil je de standaard-instellingen in deze file wijzigen (bijvoorbeeld als je woordenboek UTF-8 gebruikt), pas dan ook deze waardes aan en haal de puntkomma’s weg:
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
5Sla het bestand
scws.ini
op en sluit af.Herstart het PHP-pakket: Open ServBay, ga naar Packages, selecteer je aangepaste PHP-versie (bijvoorbeeld, PHP 8.4), en klik op het herstart-icoon (een ronde pijl).
Controleren of de SCWS-module is geladen
Na inschakelen is het belangrijk te controleren of de module nu beschikbaar is. Dit doe je het makkelijkste met de output van phpinfo()
:
- Maak in de aanbevolen webroot van ServBay (
/Applications/ServBay/www
) een submap voor je test, bijvoorbeeldscws-test
. - Maak in deze map (
/Applications/ServBay/www/scws-test
) een bestand aan genaamdphpinfo.php
. - Zet hierin de volgende PHP-code:php
<?php phpinfo(); ?>
1
2
3 - Zorg dat je ServBay-webserver (Caddy of Nginx) goed draait en toegang heeft tot
/Applications/ServBay/www
. Meestal wijst ServBay de domeinnaamservbay.demo
naar deze map. - Ga in de browser naar
https://servbay.demo/scws-test/phpinfo.php
. - Zoek op de PHP-info pagina naar het gedeelte “SCWS”. Zie je daar SCWS-informatie, zoals versie en instellingen, dan is de module actief.
(Let op: Het pad naar de afbeelding is een voorbeeld, gebruik de juiste uit de ServBay-documentatie)
Eigen SCWS-woordenboek maken en instellen
SCWS werkt woordenboek-gestuurd: de segmentatiekwaliteit hangt dus sterk samen met het gebruikte woordenboek. ServBay levert standaard woordenboeken en regelbestanden mee, meestal te vinden onder /Applications/ServBay/etc/scws
. Je kunt ook je eigen woordenboek toevoegen.
SCWS-woordenboekbestand: formaat
SCWS ondersteunt zowel gewone tekstbestanden als het snellere, geheugen-zuinigere binaire xdb-formaat.
Tekstformaat (één item per regel, gevolgd optioneel door frequentie en woordsoort):
woord1 [frequentie1] [woordsoort1]
woord2 [frequentie2] [woordsoort2]
...
1
2
3
2
3
Bijvoorbeeld:
kunstmatige intelligentie 1000 n
natuurlijke taalverwerking 800 n
ServBay 500 nz
1
2
3
2
3
Bewaar je eigen woorden als een tekstbestand, bijvoorbeeld my_dict.txt
. Zorg dat de bestandsencoding overeenkomt met je gewenste karakterset (aanbevolen: UTF-8).
xdb-woordenboekbestand genereren
ServBay bevat het SCWS-hulpprogramma scws-gen-dict
om tekstwoordenboeken naar xdb-formaat om te zetten.
- Start de Terminal-app op je Mac.
- Navigeer met
cd
naar de ServBay-bin directory, of verwijs direct naar het pad vanscws-gen-dict
(meestal als volgt):bashVervang/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
door het pad naar je eigen tekstwoordenboek. Met-o
kies je waar het xdb-bestand komt, bij voorkeur in/Applications/ServBay/etc/scws
. Met-c utf8
geef je de encoding op.
SCWS gebruiken met eigen woordenboek
Na het maken van het xdb-bestand wijs je dit aan in je PHP-code:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Stel tekenset in, moet matchen met encoding van je woordenboek
// Hoofdwoordenboek instellen (af fabriek of eigen xdb-file)
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// Eventueel extra woordenboek toevoegen
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT = extra eigen woordenlijst
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // Regelbestand, standaard bijgeleverd in ServBay
// ... verdere segmentatiehandelingen ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Met set_dict()
kies je het hoofdwoordenboek (meestal het grote standaardbestand). Met add_dict()
laad je extra eigen woorden. SCWS_XDICT_TXT
is een constante voor aangeven dat het om een gebruikerswoordenboek gaat.
Voorbeeld: SCWS gebruiken
Na inschakelen van SCWS en instellen van woordenboeken, kun je SCWS direct in je PHP-code aanspreken. Een eenvoudig praktijkvoorbeeld:
php
<?php
// Zorg dat de SCWS-extensie geladen is
if (!extension_loaded('scws')) {
die('SCWS extension is not loaded.');
}
// Initialiseer SCWS-object
$scws = scws_new();
if (!$scws) {
die('Failed to initialize SCWS.');
}
// Stel tekenset in (moet overeenkomen met tekst en woordenboek)
$scws->set_charset('utf8');
// Stel pad naar woordenboekbestanden in (standaard ServBay-locatie)
// set_dict() voor hoofdwoordenboek
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() kan gebruikt worden voor extra eigen woordenboek
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// Stel pad naar regelbestand in (standaard bij ServBay), gebruikt voor o.a. woordsoorttagging
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// Segmentatie-instellingen (optioneel, standaard SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: splitst niet-Chinese tekens (zoals e-mail of URL)
// SCWS_XDICT_DUALITY: “dual word segmentation” (twee-woorden-segmentatie)
// $scws->set_ignore(true); // Interpunctie negeren
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // Specifieer granulariteit van segmentatie
// De Chinese tekst die gesegmenteerd moet worden
$text = "ServBay 是一个强大的本地 Web 开发环境,支持 PHP、Node.js 和多种数据库。";
// Stuur de tekst naar SCWS voor verwerking
$scws->send_text($text);
// Haal het resultaat op
echo "Originele tekst: " . $text . "\n\n";
echo "Segmentatieresultaat:\n";
// Haal alle segmentaties op in een loop
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word is een associatieve array met 'word', 'idf', 'attr' (woordsoort) enz.
echo "Woord: " . $word['word'] . " (Woordsoort: " . $word['attr'] . ")\n";
}
}
// Resources sluiten
$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
Sla dit script op als .php
bestand (bijvoorbeeld scws_example.php
) in je ServBay-webmap (/Applications/ServBay/www/scws-test/
). Bezoek https://servbay.demo/scws-test/scws_example.php
in je browser om de segmentatieresultaten te zien.
Let op
- Controleer dat de versie van SCWS die je inschakelt compatibel is met de actieve PHP-versie. ServBay regelt dit standaard, maar bij handmatige wijzigingen moet je hierop letten.
- De segmentatieprestaties van SCWS hangen sterk af van de inhoud en kwaliteit van het woordenboek. Bij specialistische teksten is een eigen branchewoordenboek aan te raden.
- Zorg dat de paden voor configuratie (
scws.ini
), je woordenboek-bestand (.xdb
) en regelbestand (.ini
) kloppen en dat PHP-leestoegang tot die bestanden heeft. - Als je de PHP-configuratie wijzigt, moet het desbetreffende PHP-pakket opnieuw worden gestart.
Veelgestelde vragen (FAQ)
Vraag: Ik heb SCWS via de ServBay-interface aangezet, maar zie het niet bij phpinfo()
?
Antwoord: Controleer eerst of je het juiste PHP-pakket hebt herstart. Soms draaien meerdere PHP-versies tegelijk; herstart de versie die bij je website hoort. Blijft het probleem, pas dan het bestand scws.ini
handmatig aan en let op het juiste pad en de syntax.
Vraag: Hoe maak ik een eigen woordenboek en gebruik ik dit?
Antwoord: Zie hierboven bij "Eigen SCWS-woordenboek maken en instellen" – met het hulpprogramma scws-gen-dict
kun je je tekstwoordenboek eenvoudig omzetten naar xdb-formaat, en in PHP koppel je dat via de add_dict()
methode.
Vraag: Waarvoor dient het SCWS-regelbestand (rules.utf8.ini
)?
Antwoord: Het regelbestand bevat segmentatieregels en wordt vooral gebruikt voor woordsoorttagging. ServBay levert standaard een beproefde file mee — aanpassingen zijn meestal niet nodig.
Samenvatting
ServBay biedt ontwikkelaars een eenvoudige en krachtige manier om de SCWS PHP Chinese segmentatiemodule te activeren en beheren. Via zowel de toegankelijke gebruikersinterface als flexibele handmatige configuratie kun je SCWS snel integreren in je PHP-ontwikkelwerkzaamheden. Dankzij de standaard SCWS-tools en woordenboeken van ServBay kun je meteen aan de slag en profiteren van de snelle, nauwkeurige verwerking van Chinese tekst — ideaal voor toepassingen als zoeken en content-analyse. Deze integratie maakt ServBay tot een nog completere en veelzijdigere lokale ontwikkelomgeving voor elk webproject.