SCWS Chinesische Wortsegmentierung in ServBay: Installations-, Konfigurations- und Nutzungshandbuch
ServBay ist eine leistungsstarke lokale Web-Entwicklungsumgebung, die viele für Entwickler gängige Tools und Softwarepakete direkt integriert. SCWS (Simple Chinese Word Segmentation) ist ein effizienter Mechanismus zur chinesischen Wortsegmentierung, der bei der Verarbeitung chinesischer Texte (z. B. bei Suche, Natural Language Processing, Inhaltsanalyse etc.) unverzichtbar ist. ServBay liefert SCWS samt PHP-Modul bereits vorinstalliert – zusätzliche, aufwendige Installationsschritte entfallen also. In dieser Anleitung zeigen wir Ihnen im Detail, wie Sie SCWS in ServBay konfigurieren und nutzen, sowohl über das Kommandozeilenwerkzeug als auch über das PHP-API.
Überblick
SCWS ist eine leistungsfähige chinesische Wortsegmentierungsbibliothek, die speziell für Szenarien entwickelt wurde, in denen große Mengen chinesischer Texte schnell und präzise segmentiert werden müssen. Sie unterstützt verschiedene Segmentierungsmodi, benutzerdefinierte Wörterbücher und Regeln und ist ein grundlegendes Werkzeug für den Aufbau von Suchmaschinen, Content-Empfehlungen oder Textanalysetools für chinesische Sprachinhalte. ServBay integriert SCWS vollständig inkl. vorcompiliertem PHP-Addon und vereinfacht damit den Einsatz für Entwickler im lokalen Umfeld erheblich.
Voraussetzungen
- Sie haben ServBay erfolgreich auf Ihrem macOS-Betriebssystem installiert und gestartet.
Installation und Konfiguration
Installation
Das Konzept von ServBay ist ein direkt einsatzfähiges Entwicklungspaket. Als wichtiger Bestandteil für die Verarbeitung chinesischer Inhalte ist SCWS bereits standardmäßig vorinstalliert. Es sind keine weiteren Downloads oder Kompilierschritte notwendig. Alle zugehörigen ausführbaren Dateien, Konfigurationen und Wörterbücher sind zentral im Installationsverzeichnis von ServBay abgelegt, typischerweise unter /Applications/ServBay/
.
Konfiguration
Die Standardkonfigurationsdatei von SCWS befindet sich im ServBay-Verzeichnis unter /Applications/ServBay/etc/scws/scws.ini
. Sie können diese Datei an Ihre Projektanforderungen anpassen, um das Segmentierungsverhalten, die Zeichencodierung, das Wörterbuch und die Regeldateien zu verändern.
Beispielinhalt der Standard-Konfigurationsdatei:
[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]
: Gibt das Standard-Zeichencodierungsschema an, i. d. R.utf8
.[rule]
: Definiert den Pfad zur Segmentierungsregeldatei.[dict]
: Definiert den Pfad zum Wörterbuch. Mehrere Wörterbuchdateien können mit Komma,
getrennt werden.
Grundlagen: Kommandozeilen-Tool
SCWS bietet ein mächtiges Kommandozeilen-Tool namens scws
, mit dem Sie direkt im Terminal chinesische Texte segmentieren oder Batch-Verarbeitung durchführen können. Das SCWS-Binärprogramm ist im bin
-Verzeichnis von ServBay zu finden, meist ist /Applications/ServBay/bin
bereits in Ihren System-PATH aufgenommen, sodass Sie den Befehl einfach anwenden können.
Beispiele für die Segmentierung
Hier ein paar grundlegende Beispiele für den Einsatz des SCWS-CLI-Tools:
Einen String segmentieren
Übergeben Sie einen Textstring per Pipe an SCWS:
echo "这是一个中文分词的例子" | scws -i
Segmentierung von Text aus einer Datei
Nutzen Sie das -i
Flag für den Eingabepfad und -o
für den Ausgabeort:
scws -i input.txt -o output.txt
Segmentierungsregeln angeben
Mit -r
können Sie den individuellen Pfad zur Regeldatei angeben:
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
Wörterbuch definieren
Mit -d
legen Sie den Dateipfad zu einem benutzerdefinierten Wörterbuch fest:
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
Fortgeschrittene Nutzung
Benutzerdefinierte Wörterbücher
Um die Genauigkeit der Segmentierung zu erhöhen, insbesondere bei Fachbegriffen, Namen, Ortsangaben oder neuen Wörtern, können Sie eigene Wörterbücher erstellen. SCWS arbeitet mit dem hocheffizienten xdb
-Format für Wörterbücher. Mit dem in ServBay enthaltenen Tool scws-gen
wandeln Sie ein Textwörterbuch in das benötigte xdb
-Format um.
So erstellen Sie Ihr eigenes Wörterbuch:
Erstellen Sie eine Textdatei, zum Beispiel
custom_dict.txt
. Jede Zeile enthält ein Wort, optional gefolgt von einem Leerzeichen und einer Gewichtung (Einfluss auf die Segmentierungspriorität), z. B.:ServBay 10 Lokale Entwicklungsumgebung 8 Chinesische Wortsegmentierung 9
1
2
3Mit dem Tool
scws-gen
generieren Sie daraus diexdb
-Datei. Auchscws-gen
finden Sie im Verzeichnisbin
von ServBay.bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1Öffnen Sie die SCWS-Konfigurationsdatei
/Applications/ServBay/etc/scws/scws.ini
und editieren Sie den Abschnitt[dict]
. Fügen Sie den Pfad zu Ihrer benutzerdefinierten Wörterbuchdatei nach dem Standardwörterbuch hinzu (mit Komma,
trennen):ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2Achten Sie darauf, dass
/path/to/your/custom_dict.xdb
dem tatsächlichen Speicherort Ihres eigenen Wörterbuchs entspricht.
Segmentierungsregeln anpassen
Die Regeldatei (standardmäßig /Applications/ServBay/etc/scws/rules.ini
) legt fest, wie SCWS mehrdeutige oder komplizierte chinesische Konstruktionen handhabt. Änderungen an dieser Datei erfordern gutes Verständnis des SCWS-Algorithmus. Für normale Anwendungsfälle reicht in der Regel das Standardregelwerk zusammen mit einem angepassten Wörterbuch. Falls Sie Regeln modifizieren wollen, arbeiten Sie vorsichtig und konsultieren Sie ggf. die SCWS-Dokumentation (sofern im von ServBay gelieferten SCWS einbezogen).
Beispiel für den Inhalt einer Regeldatei (mit Platz für Ihre eigenen Musterregeln):
[rule]
# Hier können benutzerdefinierte Segmentierungsregeln eingetragen werden
# Beispiel: Definition einer einfachen Regel
# pattern = result
2
3
4
Nutzung im PHP-API
Wenn Sie Web-Applikationen in PHP entwickeln, müssen Sie für die Nutzung von SCWS keine eigenen PHP-Extensions installieren oder konfigurieren – das SCWS-Modul ist bereits im PHP-Stack von ServBay integriert. Sie können die SCWS-API direkt aus Ihrer PHP-Anwendung heraus verwenden.
Überprüfen Sie auf der von ServBay bereitgestellten internen phpinfo()
-Seite, ob die SCWS-Erweiterung geladen ist.
Anwendungsbeispiel
Hier eine einfache PHP-Beispielanwendung zur Segmentierung mit der SCWS-API:
<?php
// Überprüfen, ob die SCWS-Erweiterung geladen wurde
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// Zu segmentierender Text
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// Öffnen Sie eine neue SCWS-Instanz
$sh = scws_open();
// Zeichenkodierung festlegen – sollte Ihrer Textkodierung entsprechen
scws_set_charset($sh, 'utf8');
// Wörterbuch- und Regeldateipfade setzen
// Bitte stellen Sie sicher, dass Sie hier die tatsächlichen Dateipfade der ServBay-Installation angeben
$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);
// Text zur Segmentierung an die Instanz senden
scws_send_text($sh, $text);
// Segmentierungsergebnis holen
echo "Originaltext: " . $text . "\n";
echo "Segmentiertes Ergebnis:\n";
// Über die Resultate iterieren und ausgeben
// $res ist ein Array, jedes Element steht für einen Segmentierungstreffer (Wort, Wortart etc.)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Ausgabe des gefundenen Wortes
echo $word_info['word'] . " ";
// Falls benötigt, können Sie auch Wortart oder Gewicht mit ausgeben, z.B.:
// echo "Wort: " . $word_info['word'] . ", Wortart: " . $word_info['attr'] . ", Gewicht: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// Die SCWS-Instanz schließen und Ressourcen freigeben
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
Sie können diesen Code als .php
-Datei speichern (z. B. segment_test.php
), im Web-Verzeichnis von ServBay ablegen (/Applications/ServBay/www/servbay.demo/
, sofern Sie eine entsprechende Seite konfiguriert haben) und per Browser oder mit PHP-CLI ausführen, um das Segmentierungsergebnis zu sehen.
Wichtige Funktionen
Die folgenden Funktionen sind in der SCWS-PHP-Erweiterung besonders zentral:
scws_open()
: Initialisiert und öffnet eine neue SCWS-Instanz (gibt Ressourcen-Handle zurück).scws_set_charset($sh, $charset)
: Setzt das Zeichencodierungsschema für die Instanz$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Definiert die Wörterbuchdatei für$sh
.$mode
bezeichnet das Format (Text ist veraltet, nutzen Sie dasxdb
-Format).scws_set_rule($sh, $rule_path)
: Legt die Pfad zur Regeldatei für die Instanz$sh
fest.scws_send_text($sh, $text)
: Übergibt den zu segmentierenden Text an SCWS.scws_get_result($sh)
: Holt die Segmentierungsergebnisse aus der SCWS-Instanz. Gibt mit jedem Aufruf ein Array mit Treffern zurück; bei Abschluss folgtfalse
.scws_close($sh)
: Schließt und räumt die SCWS-Instanz auf.
Weitere fortgeschrittene Möglichkeiten (z. B. Ignorieren von Satzzeichen, Einstellen von Segmentierungsmodi, Wörterbuchgewichtungen etc.) entnehmen Sie bitte der offiziellen Dokumentation der SCWS-PHP-Erweiterung.
Häufige Fragen (FAQ)
1. Die Segmentierungsergebnisse von SCWS sind nicht zufriedenstellend?
- Lösung: Prüfen Sie, ob im SCWS-Konfigurationsfile (
/Applications/ServBay/etc/scws/scws.ini
) die Wege für Wörterbuch (dict
) und Regeln (rule
) korrekt gesetzt sind. Achten Sie darauf, dass diese Dateien tatsächlich existieren und lesbar sind. Für Fachtexte oder neue Begriffe empfiehlt es sich, ein eigenes Wörterbuch (mitscws-gen
alsxdb
-Datei) zu erstellen und im Konfigfile einzutragen. Feintuning bei Gewichtungen oder Regeln kann helfen, erfordert aber tiefere Kenntnis.
2. SCWS ist langsam in der Verarbeitung?
- Lösung: Nutzen Sie bevorzugt das optimierte
xdb
-Format für Wörterbücher, nicht das alte Textformat. Das Laden und Abfragen ist wesentlich schneller. Prüfen Sie Ihre Konfiguration auf ein korrektes Wörterbuchformat. Bei sehr großen Textmengen empfiehlt sich, die Verarbeitung zu stückeln.
3. Kommandozeilen-Tool SCWS lässt sich nicht starten ("Befehl nicht gefunden")?
- Lösung: Sehr häufig ist das ausführbare Verzeichnis von ServBay nicht im System-PATH eingetragen. Sie können entweder den vollständigen Pfad nutzen (z. B.
/Applications/ServBay/bin/scws -i ...
) oder/Applications/ServBay/bin
Ihrem Shell-PATH hinzufügen (z. B. in~/.bash_profile
,~/.zshrc
). Danach laden Sie die Shell-Konfiguration oder starten das Terminal neu.
4. scws_open()
in PHP schlägt fehl oder ist nicht verfügbar?
- Lösung: Offenbar ist das zugehörige PHP-Modul nicht geladen. Überprüfen Sie im ServBay-Controlpanel die verwendete PHP-Version und schauen Sie mit
phpinfo()
, ob diescws
-Erweiterung gelistet und aktiviert ist. Falls nicht, prüfen Sie Ihrephp.ini
(z. B.extension=scws.so
muss enthalten sein) und ob die Dateiscws.so
im PHP-Extensionsverzeichnis existiert (wird von ServBay bereitgestellt). Starten Sie bei Problemen den ServBay-Dienst neu.
Zusammenfassung
SCWS ist eine robuste und effiziente Lösung für die chinesische Wortsegmentierung. Dank der nahtlosen Vorinstallation in ServBay mitsamt PHP-Extension können Entwickler unter macOS im lokalen Umfeld unkompliziert SCWS installieren, konfigurieren und einsetzen – sowohl über die Kommandozeile für Textanalysen als auch direkt aus PHP-Anwendungen heraus. Mit dieser Anleitung gelingt Ihnen der schnelle Einstieg in SCWS, wodurch Sie die Verarbeitung chinesischer Texte in Ihren Projekten komfortabel optimieren können.