SCWS Chinese Woordsegmentatie in ServBay: Installatie-, Configuratie- en Gebruikersgids
ServBay is een krachtige lokale webontwikkelomgeving die boordevol zit met veelgebruikte tools en softwarepakketten voor ontwikkelaars. SCWS (Simple Chinese Word Segmentation) is een efficiënt Chinees woordsegmentatiesysteem dat essentieel is bij het verwerken van Chinese teksten, bijvoorbeeld bij zoekopdrachten, natural language processing of contentanalyse. ServBay wordt standaard geleverd met SCWS inclusief de bijbehorende PHP-module; extra installatiehandelingen zijn dus niet nodig. In deze gids leer je hoe je SCWS configureert en gebruikt in ServBay, zowel via de commandline als via de PHP API.
Overzicht
SCWS is een krachtige Chinese woordsegmentatiebibliotheek, uitermate geschikt voor scenario's waarin je grote hoeveelheden Chinese tekst snel en accuraat moet verwerken. Het systeem ondersteunt meerdere segmentatiemodi, aangepaste woordenboeken en regels, en vormt zo de basis voor toepassingen als Chinese zoekmachines, contentaanbevelingen en tekstanalyse. ServBay heeft SCWS geïntegreerd in haar softwarepakket inclusief een vooraf gecompileerde PHP-extensie, zodat het gebruik ervan in je lokale ontwikkelomgeving sterk vereenvoudigd wordt.
Voorwaarden
- Je hebt ServBay succesvol geïnstalleerd en draait op macOS.
Installatie en Configuratie
Installatie
ServBay is ontworpen als een direct-klaar-voor-gebruik ontwikkelomgeving. SCWS is als belangrijk tekstverwerkingstool standaard opgenomen in ServBay; je hoeft dus geen extra download- of compilatiestappen te doorlopen. Alle relevante executables, configuratie- en woordenbestanden vind je in het installatiepad van ServBay, meestal /Applications/ServBay/
.
Configuratie
Het standaard configuratiebestand van SCWS bevindt zich op /Applications/ServBay/etc/scws/scws.ini
binnen de ServBay-installatiemap. Je kunt dit bestand aanpassen aan je eigen behoeften, bijvoorbeeld om het segmentatiegedrag, de tekenset, woordenboeken en segmentatieregels te wijzigen.
Een voorbeeld van de standaard configuratie:
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]
: Geeft de standaard tekenset aan, meestal laten staan alsutf8
.[rule]
: Geeft het pad naar het segmentatieregelsbestand aan.[dict]
: Geeft het pad naar het segmentatiewoordenboek aan. Je kunt meerdere woordenboeken opgeven, gescheiden door komma's,
.
Basisgebruik: Commandline Tool
SCWS biedt een krachtige commandline-tool scws
, waarmee je eenvoudig tekstsegmentatie kunt uitvoeren in je terminal—of het nu gaat om tests of batchverwerking. ServBay bevat het scws
-commando in de bin
-map. In de meeste gevallen is /Applications/ServBay/bin
al toegevoegd aan je systeem-PATH zodat je de scws
-tool direct vanuit de terminal kunt aanroepen.
Segmentatievoorbeelden
Hieronder enkele vaak gebruikte voorbeelden met de scws
-tool:
Segmenteren van een tekstregel
Stuur een string via een pipe naar het scws
-commando:
bash
echo "这是一个中文分词的例子" | scws -i
1
Tekst uit een bestand segmenteren
Gebruik -i
om het invoerbestand op te geven, en -o
voor het uitvoerbestand:
bash
scws -i input.txt -o output.txt
1
Eigen segmentatieregels gebruiken
Met -r
geef je het pad naar een aangepast regelsbestand aan:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
1
Eigen woordenboek gebruiken
Geef een aangepast woordenboekpad op met -d
:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
1
Geavanceerd Gebruik
Eigen Woordenboeken
Wil je betere segmentatieresultaten—vooral met vakjargon, namen, locaties of nieuwe woorden—dan kun je een eigen woordenboek aanmaken. SCWS gebruikt het efficiënte xdb
-formaat. Met de scws-gen
-tool, die ServBay meelevert, kun je een tekstbestand omzetten naar een xdb
-woordenboek.
Zelf woordenboek aanmaken:
Maak een tekstbestand, bijvoorbeeld
custom_dict.txt
, waarin elke regel een woord bevat, optioneel gevolgd door een spatie en een gewichtsgetal (meestal een integer die de prioriteit in de segmentatie bepaalt).ServBay 10 Lokale ontwikkelomgeving 8 Chinese segmentatie 9
1
2
3Gebruik
scws-gen
(ook te vinden in ServBay’sbin
-map) om het bestand om te zetten:bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1Voeg het pad van je eigen woordenboek, gescheiden door een komma, toe aan het
[dict]
-gedeelte van het SCWS-configuratiebestand/Applications/ServBay/etc/scws/scws.ini
.ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2Let erop dat
/path/to/your/custom_dict.xdb
het werkelijke pad naar jouw woordenboek is.
Segmentatieregels aanpassen
Het regelsbestand voor segmentatie (standaard /Applications/ServBay/etc/scws/rules.ini
) bepaalt hoe SCWS omgaat met ambiguïteiten en complexe Chinese structuren. Het wijzigen van dit bestand vereist een goede kennis van de SCWS-algoritmen. In de meeste gevallen volstaat het om het standaardregelsbestand te gebruiken in combinatie met een aangepast woordenboek. Wil je toch regels aanpassen, doe dit dan zorgvuldig en raadpleeg de officiële SCWS-documentatie over het formaat en de syntaxis (voor zover meegeleverd met jouw versie van SCWS in ServBay).
Voorbeeld van een (lege) regelsbestand-entry:
ini
[rule]
# Eigen segmentatieregels kun je hier toevoegen
# Voorbeeld: definieer een eenvoudige regel
# pattern = result
1
2
3
4
2
3
4
Gebruik met PHP API
Ontwikkel je webapplicaties in PHP? De PHP-omgeving van ServBay bevat standaard het SCWS-extensiemodule. Je hoeft daardoor geen aparte installatie of configuratie uit te voeren; je kunt direct in je PHP-code SCWS-functies aanroepen om Chinese tekstanalyse mee uit te voeren.
Je kunt via de ingebouwde phpinfo()
-pagina van ServBay nagaan of de SCWS-extensie actief is.
Voorbeeldgebruik
Hieronder een eenvoudig PHP-voorbeeld van segmentatie met SCWS:
php
<?php
// Controleer of de SCWS-extensie beschikbaar is
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// De te segmenteren tekst
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// Open een nieuwe SCWS-segmentator-instantie
$sh = scws_open();
// Stel de tekenset in (meestal ‘utf8’)
scws_set_charset($sh, 'utf8');
// Stel het woordenboek- en regelsbestand in
// Zorg dat deze paden correct zijn binnen jouw ServBay-omgeving
$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);
// Verstuur de tekst voor segmentatie
scws_send_text($sh, $text);
// Haal de resultaten op en toon deze
echo "Originele tekst: " . $text . "\n";
echo "Segmentatieresultaat:\n";
// Print woord voor woord (elk $res is een array met details)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Druk het woord zelf af
echo $word_info['word'] . " ";
// Voor meer details kun je dit uitbreiden:
// echo "Woord: " . $word_info['word'] . ", Pos: " . $word_info['attr'] . ", Gewicht: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// Sluit de SCWS-segmentator en maak geheugen vrij
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
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
Sla deze code op als bijvoorbeeld segment_test.php
en plaats hem in de webroot van ServBay (/Applications/ServBay/www/servbay.demo/
, als je een siteconfiguratie met servbay.demo
hebt). Je kunt het script in je browser openen of op de commandline uitvoeren via PHP CLI om de segmentatieresultaten te bekijken.
Veelgebruikte functies
Hieronder een overzicht van de belangrijkste functies in de SCWS PHP-extensie:
scws_open()
: Start en initialiseert een nieuwe SCWS-instantie. Geeft een resource terug bij succes, andersfalse
.scws_set_charset($sh, $charset)
: Bepaalt de tekenset voor de instantie$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Zet het woordenboekpad in naar$dict_path
voor instantie$sh
.$mode
bepaalt het formaat; gebruikxdb
voor optimale resultaten (tekstformaat wordt niet meer aanbevolen).scws_set_rule($sh, $rule_path)
: Zet het segmentatieregelsbestand voor instantie$sh
.scws_send_text($sh, $text)
: Geeft de te segmenteren tekst$text
aan de instantie$sh
door.scws_get_result($sh)
: Haalt segmentatieresultaten op als array; roep herhaaldelijk aan tot het resultaatfalse
teruggeeft.scws_close($sh)
: Sluit de instantie$sh
en ruimt geheugen op.
Voor meer geavanceerde functies (zoals interpunctie negeren, segmentatiemodus instellen, woordgewichten ophalen, etc.) raadpleeg je de officiële documentatie van de SCWS PHP-extensie.
Veelgestelde Vragen (FAQ)
1. Segmentatieresultaten zijn niet accuraat, wat nu?
- Oplossing: Controleer allereerst of de paden naar woordenboek (
dict
) en regelsbestand (rule
) in/Applications/ServBay/etc/scws/scws.ini
correct zijn en de bestanden bestaan. Voeg voor domeinspecifieke woorden of nieuwe termen een eigen woordenboek toe (gebruikscws-gen
om eenxdb
-bestand te maken) en voeg dit toe in de configuratie via een komma. Je kunt ook gewichten/frequenties aanpassen of regels wijzigen, maar hiervoor is diepgaandere kennis nodig.
2. SCWS werkt traag of lijkt langzaam te segmenteren?
- Oplossing: Gebruik altijd het geoptimaliseerde
xdb
-woordenboek en niet het oude tekstformaat.xdb
-woordenboeken zijn veel sneller in laden en zoeken. Controleer in het configuratiebestand of het pad naar eenxdb
-bestand wijst. Werk je met grote teksten, deel deze dan op in stukken voor verwerking.
3. Het commando ‘scws’ werkt niet of wordt niet gevonden?
- Oplossing: Meestal komt dit doordat de uitvoermap van ServBay niet aan je omgevingsvariabele PATH is toegevoegd. Start dan het commando met het volledige pad, bijvoorbeeld
/Applications/ServBay/bin/scws -i ...
, of voeg/Applications/ServBay/bin
zelf toe aan je shellconfiguratie (~/.bash_profile
,~/.zshrc
, etc.). Herstart vervolgens je terminal of laad het configuratiebestand opnieuw.
4. scws_open()
werkt niet of bestaat niet in PHP?
- Oplossing: De SCWS-extensie is niet geladen in je actieve PHP configuratie. Check in het ServBay-configuratiescherm welke PHP-versie je gebruikt en open de
phpinfo()
-pagina (ServBay biedt daar meestal een shortcut voor). Controleer of 'scws' vermeld en geactiveerd is. Zie je hem niet, controleer of je in hetphp.ini
-bestand van de juiste PHP-versie een regel alsextension=scws.so
hebt staan en of het bestand ook fysiek aanwezig is in de extensiemap van PHP (in ServBay vooraf geconfigureerd). Herstart ServBay als het probleem blijft.
Samenvatting
SCWS is een krachtig en efficiënt Chinees woordsegmentatiesysteem. Dankzij de voorgeïnstalleerde pakketten en PHP-extensie van ServBay kunnen ontwikkelaars binnen een macOS-lokale omgeving snel SCWS installeren, configureren en gebruiken—zowel via de terminal als binnen PHP-applicaties voor dynamische woordsegmentatie. Volg deze gids om direct aan de slag te kunnen en verbeter de verwerking van Chinese teksten binnen je projecten aanzienlijk.