SCWS PHP-module inschakelen en configureren in ServBay
ServBay is een krachtige lokale webontwikkelomgeving die macOS en Windows ondersteunt. Het biedt geïntegreerde runtimes voor talen zoals PHP, Node.js, Python, Go en Java, diverse databases zoals MySQL, PostgreSQL, MongoDB en Redis, en ondersteuning voor webservers als Caddy en Nginx. Voor ontwikkelaars die Chinese tekst in hun PHP-applicatie willen verwerken, is ServBay uitgerust met de efficiënte SCWS (Simple Chinese Word Segmentation) module, die eenvoudig te activeren is.
In dit document lees je hoe je de SCWS PHP-extensie activeert in ServBay, configueert met woordenlijstbestanden en deze basisfunctionaliteiten demonstreert via voorbeeldcode.
Overzicht van de SCWS-module
SCWS is een open source Chinese segmentatie-engine, bekend om zijn hoge snelheid en nauwkeurigheid. Het combineert woordenlijstmatching met statistische modellen om snel en precies Chinese tekst te segmenteren. Dit is vooral bruikbaar voor het bouwen van Chinese zoekmachines, tekst mining, contentanalyse, trefwoordextractie en POS-tagging (woordsoorten).
Belangrijkste kenmerken
- Hoge prestaties: SCWS gebruikt een geoptimaliseerd algoritme en verwerkt moeiteloos grote hoeveelheden Chinese tekst.
- Hoge nauwkeurigheid: Door woordenlijsten en statistiek te combineren bereikt SCWS zeer betrouwbare segmentatie-resultaten.
- Veelzijdig: Naast basissegmentatie ondersteunt SCWS geavanceerde functies zoals trefwoordextractie en woordsoorttagging.
- Eenvoudige integratie: Dankzij een overzichtelijke API kunnen ontwikkelaars SCWS snel integreren in hun PHP-applicatie.
- Open source en gratis: SCWS is vrij te gebruiken en aan te passen aan je eigen behoeften.
Door ServBay meegeleverde SCWS-versie
ServBay biedt ondersteuning voor meerdere PHP-versies en installeert automatisch de bijbehorende SCWS-module. Op het moment van schrijven levert ServBay SCWS 1.2.3 mee voor PHP 5.6 tot PHP 8.4.
Hoe SCWS inschakelen
Standaard is de SCWS-module uitgeschakeld in ServBay. Je kunt deze op twee manieren activeren: via de grafische interface van ServBay, of door handmatige aanpassing van configuratiebestanden.
Aanbevolen methode: inschakelen via ServBay’s grafische interface
Dit is de snelste en makkelijkste methode:
- Open het hoofdscherm van ServBay.
- Klik in de linker navigatiebalk op Talen (Languages) en kies PHP.
- Selecteer in de rechter lijst het gewenste PHP-versienummer waar je SCWS wilt inschakelen (bijvoorbeeld
PHP 8.4
). - Klik rechts bij deze PHP-versie op de knop Extensies (Extensions).
- Zoek de
SCWS
module in de lijst die verschijnt. - Zet het schakelaartje links van
SCWS
aan (groen). - Klik onderaan het venster op Opslaan (Save).
- ServBay vraagt nu om het PHP-pakket te herstarten. Klik op Herstarten (Restart).
Na deze stappen is de SCWS-module geactiveerd voor de gekozen PHP-versie.
Handmatige configuratie bestand aanpassen (voor gevorderde gebruikers of foutopsporing)
Wil je meer controle of problemen oplossen, dan kun je de PHP-configuratie direct aanpassen:
Vind het configuratiebestand: Zoek het
conf.d
-map van de PHP-versie die je gebruikt. De SCWS-configuratie vind je in het bestandscws.ini
, meestal op:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1Vervang
X.Y
door het specifieke PHP-versienummer, bijvoorbeeld8.4
.Pas
scws.ini
aan: Openscws.ini
met een teksteditor. Je ziet iets als: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
5Haal het puntkomma (
;
) weg voorextension = scws.so
, zodat: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) Je kunt hier ook het standaard karakterset en woordenlijstpad instellen, maar doorgaans is dynamische configuratie in de PHP-code flexibeler. Als je dit toch wilt instellen en je woordenlijst is UTF-8 gecodeerd:
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 op en sluit af.
Herstart het PHP-pakket: Ga in ServBay naar Pakketten (Packages), zoek het PHP-versienummer dat je hebt aangepast (bijv. PHP 8.4), en klik op de herstartknop (rond pijltje).
Controleren of SCWS correct is geladen
Na het inschakelen is het belangrijk te controleren of SCWS daadwerkelijk geladen is. Dat doe je met een eenvoudige phpinfo()
:
- Maak in ServBay’s website-root
/Applications/ServBay/www
een nieuwe submap, bijvoorbeeldscws-test
. - Plaats daarin een bestand
phpinfo.php
. - Zet hierin de volgende PHP-code:php
<?php phpinfo(); ?>
1
2
3 - Zorg dat je ServBay-webserver (zoals Caddy of Nginx) loopt en
/Applications/ServBay/www
toegankelijk is. Standaard verwijst het domeinservbay.demo
hiernaar. - Surf naar
https://servbay.demo/scws-test/phpinfo.php
. - Zoek in het informatiescherm naar het onderdeel “SCWS”. Zie je SCWS-specifieke informatie (versie, instellingen), dan is de module goed geladen.
(Let op: dit is een voorbeeldpad, raadpleeg de ServBay-documentatie voor de juiste afbeelding)
SCWS-woordenlijst maken en configureren
SCWS is een engine die werkt op basis van woordenlijsten. De segmentatieresultaten zijn sterk afhankelijk van de gebruikte woordenlijst. ServBay levert standaard een SCWS-woordenlijst en regelbestand mee, meestal te vinden in /Applications/ServBay/etc/scws
. Je kunt natuurlijk ook een eigen woordenlijst maken of gebruiken.
Formaat SCWS-woordenlijstbestand
SCWS ondersteunt zowel gewone tekstbestanden als xdb-bestanden in binair formaat. Xdb-formaat is aan te raden voor snelheid en efficiënt geheugenverbruik.
Het tekstformaat is:
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
Sla je aangepaste woorden op als tekstbestand, bijvoorbeeld mijn_dict.txt
. Zorg dat de codering overeenkomt met je voorkeur (bijvoorbeeld UTF-8).
xdb-woordenlijst genereren
ServBay levert het SCWS-hulpmiddel scws-gen-dict
mee om tekstwoordenlijsten om te zetten naar het xdb-formaat.
- Open de Terminal op macOS.
- Navigeer met
cd
naar de ServBay-binmap of gebruik het volledige pad vanscws-gen-dict
. Meestal:bashVervang/Applications/ServBay/bin/scws-gen-dict -i /pad/naar/mijn_dict.txt -o /Applications/ServBay/etc/scws/mijn_dict.utf8.xdb -c utf8
1/pad/naar/mijn_dict.txt
door het daadwerkelijke pad van je woordenlijst. Met-o
geef je het uitvoerbestand en de locatie op (bij voorkeur/Applications/ServBay/etc/scws
). De-c utf8
parameter staat voor de codering van het invoerbestand.
SCWS laten verwijzen naar je woordenlijstbestand
Na het genereren van het xdb-bestand, configureer je SCWS in PHP als volgt:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Stel tekenset in, moet overeenkomen met woordenlijst
// Stel het hoofdwoordenlijstbestand in, kan standaard ServBay-bestand of eigen xdb zijn
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// Meerdere woordenlijsten kun je toevoegen
$scws->add_dict('/Applications/ServBay/etc/scws/mijn_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT betekent extra gebruikerswoordenlijst
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // Regelbestand instellen voor o.a. POS-tagging (ServBay standaard aanwezig)
// ... verdere segmentatieacties ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Gebruik set_dict()
voor het hoofdwoordenlijstbestand. Met add_dict()
voeg je een extra, gebruikersspecifieke woordenlijst toe. SCWS_XDICT_TXT
is een constante voor dergelijke uitbreiding.
SCWS in gebruik — voorbeeld
Nadat SCWS is geactiveerd en een woordenlijst is geconfigureerd, kun je in PHP direct SCWS-functies gebruiken. Hieronder een basisvoorbeeld:
php
<?php
// Controleer of de SCWS-extensie is geladen
if (!extension_loaded('scws')) {
die('SCWS-extensie is niet geladen.');
}
// Initialiseer SCWS-object
$scws = scws_new();
if (!$scws) {
die('Initialiseren van SCWS is mislukt.');
}
// Stel karakterset in (moet overeenkomen met tekst en woordenlijst)
$scws->set_charset('utf8');
// Stel woordenlijstbestand in (ServBay standaardpad)
// set_dict() voor de hoofdwoordenlijst
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() optioneel voor extra woordenlijst van gebruiker
// $scws->add_dict('/Applications/ServBay/etc/scws/mijn_dict.utf8.xdb', SCWS_XDICT_TXT);
// Stel regelbestand in (ServBay standaardpad), voor o.a. POS-tagging
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// Stel segmentatiemodus in (optioneel, standaard: SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: splitst ‘x’-karakters (niet-Chinees), zoals email, URL, enzovoort
// SCWS_XDICT_DUALITY: binair segmenteren
// $scws->set_ignore(true); // Negeer interpunctie
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // Segmentatieniveau instellen
// Chinese tekst om te segmenteren
$text = "ServBay 是一个强大的本地 Web 开发环境,支持 PHP、Node.js 和多种数据库。";
// Verstuur tekst naar SCWS
$scws->send_text($text);
// Verkrijg resultaat
echo "Originele tekst: " . $text . "\n\n";
echo "Segmentatieresultaat:\n";
// Resultaten ophalen in een loop
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word is een associatief array met 'word', 'idf', 'attr' (woordsoort), enzovoort
echo "Woord: " . $word['word'] . " (Woordsoort: " . $word['attr'] . ")\n";
}
}
// Maak SCWS-resource vrij
$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 deze code op als .php
bestand (bijv. scws_voorbeeld.php
) in ServBay's webmap (bijv. /Applications/ServBay/www/scws-test/
). Bezoek vervolgens https://servbay.demo/scws-test/scws_voorbeeld.php
in je browser voor het resultaat.
Aandachtspunten
- Controleer altijd of de SCWS-moduleversie overeenkomt met jouw PHP-versie. ServBay regelt compatibiliteit, maar bij handmatige configuratie dien je dit te checken.
- Het segmentatieresultaat hangt sterk af van de kwaliteit van de woordenlijst. Voor specifieke domeinen is een branchespecifieke woordenlijst aan te raden.
- Controleer de paden voor SCWS-configuratiebestand (
scws.ini
), woordenlijst (.xdb
) en regelbestand (.ini
) en zorg dat PHP toegang heeft tot deze bestanden. - Na wijzigen van PHP-instellingen, altijd het betreffende PHP-pakket herstarten om de wijzigingen door te voeren.
Veelgestelde vragen (FAQ)
Q: Ik heb SCWS via de ServBay-interface ingeschakeld, maar zie het niet in phpinfo()
?
A: Controleer of je het juiste PHP-pakket hebt herstart. Er kunnen meerdere PHP-versies actief zijn; herstart de versie die aan jouw website gekoppeld is. Werkt het nog steeds niet, probeer dan scws.ini
handmatig te wijzigen en controleer zorgvuldig het pad en de syntax.
Q: Hoe maak en gebruik ik een aangepaste woordenlijst?
A: Zie het hoofdstuk “SCWS-woordenlijst maken en configureren.” Gebruik het programma scws-gen-dict
om je tekstbestand om te zetten naar een xdb-bestand en laad dit in PHP met add_dict()
.
Q: Waar dient het regelbestand (rules.utf8.ini
) voor?
A: Dit bestand bevat segmentatieregels, o.a. voor woordsoorttagging. ServBay voorziet standaard in een regelbestand dat meestal volstaat.
Samenvatting
ServBay maakt het voor ontwikkelaars eenvoudig om de SCWS PHP-module voor Chinese segmentatie te activeren en beheren. Via de gebruiksvriendelijke interface óf handmatige configuratie kun je SCWS snel integreren in je PHP-ontwikkelworkflow. Met de bijgeleverde tools en woordenlijsten kun je direct aan de slag en profiteren van SCWS's krachtige en nauwkeurige verwerking van Chinese tekst voor je webapplicatie (zoals zoeken en contentanalyse). Als onderdeel van ServBay's uitgebreide software-ecosysteem versterkt de SCWS-integratie de veelzijdigheid en waarde van ServBay als lokale ontwikkelomgeving.