SCWS – Segmentacja słów chińskich w ServBay: przewodnik instalacji, konfiguracji i użytkowania
ServBay to potężne, lokalne środowisko do programowania aplikacji webowych, które integruje wiele popularnych narzędzi i pakietów używanych przez programistów. SCWS (Simple Chinese Word Segmentation) jest wydajnym systemem segmentacji słów chińskich, niezbędnym przy przetwarzaniu tekstu w języku chińskim (np. wyszukiwanie, NLP, analiza treści). ServBay ma już wbudowaną instalację SCWS oraz jego moduł PHP — nie są wymagane żadne dodatkowe, skomplikowane kroki instalacji. W tym przewodniku dowiesz się, jak skonfigurować i korzystać z SCWS w środowisku ServBay, zarówno z poziomu narzędzia wiersza poleceń, jak i API PHP.
Przegląd
SCWS to wysokowydajna biblioteka do segmentacji słów po chińsku, idealnie nadająca się do szybkiego i precyzyjnego przetwarzania dużych zbiorów tekstu. Obsługuje różne tryby segmentacji, niestandardowe słowniki oraz reguły, stanowiąc podstawowe narzędzie dla aplikacji takich jak wyszukiwarki, systemy rekomendacji czy analiza tekstu. SCWS jest już zintegrowany z ServBay i udostępnia prekompilowane rozszerzenie dla PHP, co znacznie upraszcza obsługę segmentacji w środowisku lokalnym.
Wymagania wstępne
- Musisz mieć zainstalowany i uruchomiony ServBay na systemie macOS.
Instalacja i konfiguracja
Instalacja
Filozofia ServBay opiera się na dostarczeniu gotowego do użycia środowiska deweloperskiego. SCWS, jako kluczowe narzędzie do obsługi języka chińskiego, jest instalowane domyślnie wraz z ServBay. Nie musisz nic pobierać ani kompilować — wszystkie pliki wykonywalne, pliki konfiguracyjne oraz słowniki znajdują się w katalogu instalacyjnym ServBay, zwykle /Applications/ServBay/
.
Konfiguracja
Domyślny plik konfiguracyjny SCWS znajduje się pod adresem /Applications/ServBay/etc/scws/scws.ini
. Możesz go edytować, aby dostosować działanie SCWS do własnych potrzeb — zmienić zachowanie segmentacji, zestaw znaków, pliki słowników i reguł.
Przykładowa zawartość pliku konfiguracyjnego:
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]
: określa domyślny zestaw znaków — zwykle „utf8”.[rule]
: ścieżka do pliku reguł segmentacji.[dict]
: ścieżka do pliku słownika segmentacji. Możliwe jest wskazanie wielu słowników, oddzielonych przecinkami.
Podstawowe użycie: narzędzie wiersza poleceń
SCWS oferuje potężne narzędzie wiersza poleceń scws
, które pozwala testować segmentację lub przetwarzać teksty zbiorczo bezpośrednio w terminalu. Plik wykonywalny scws
jest dołączony w katalogu bin
ServBay; ścieżka /Applications/ServBay/bin
powinna być już dodana do zmiennej PATH systemu, więc możesz od razu wywoływać polecenie scws
w terminalu.
Przykłady segmentacji
Oto kilka podstawowych przykładów użycia narzędzia scws
:
Segmentacja ciągu tekstowego
Przekazanie ciągu tekstowego do scws
poprzez potok:
bash
echo "这是一个中文分词的例子" | scws -i
1
Odczyt tekstu z pliku i segmentacja
Użyj opcji -i
, by wskazać plik wejściowy, i -o
, by zdefiniować plik wyjściowy:
bash
scws -i input.txt -o output.txt
1
Wskazanie pliku reguł segmentacji
Za pomocą opcji -r
możesz wyznaczyć ścieżkę do własnego pliku reguł:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
1
Wskazanie własnego słownika
Z opcją -d
podaj ścieżkę do własnego pliku ze słownikiem:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
1
Zaawansowane użytkowanie
Niestandardowy słownik
Aby poprawić precyzję segmentacji — zwłaszcza dla terminologii branżowej, nazw własnych lub nowych słów — możesz utworzyć własny słownik. SCWS używa wydajnego formatu xdb
. Narzędzie scws-gen
, dołączone w ServBay w katalogu bin
, służy do konwersji słowników tekstowych do formatu xdb
.
Jak utworzyć własny słownik:
Przygotuj plik tekstowy, np.
custom_dict.txt
. Każdy wiersz to jedno słowo, z opcjonalną wagą (liczba całkowita wpływająca na priorytet segmentacji).ServBay 10 lokalne środowisko 8 segmentacja chińska 9
1
2
3Skonwertuj słownik do formatu
xdb
za pomocąscws-gen
:bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1W pliku konfiguracyjnym SCWS
/Applications/ServBay/etc/scws/scws.ini
w sekcji[dict]
dołącz ścieżkę do własnego słownika po domyślnym, oddzielając przecinkiem:ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2Upewnij się, że
/path/to/your/custom_dict.xdb
wskazuje rzeczywistą lokalizację twojego pliku.
Modyfikacja reguł segmentacji
Plik z regułami segmentacji (domyślnie /Applications/ServBay/etc/scws/rules.ini
) definiuje sposób, w jaki SCWS radzi sobie z niejednoznacznościami i złożonymi strukturami języka chińskiego. Modyfikacja reguł wymaga dogłębnej znajomości działania algorytmu SCWS. Dla większości użytkowników domyślne reguły plus własny słownik są wystarczające. Jeśli jednak chcesz je zmodyfikować, zachowaj ostrożność i skorzystaj z dokumentacji SCWS (jeśli jest załączona w pakiecie ServBay).
Przykład zawartości pliku reguł (zawiera podstawowe dopasowania wzorców):
ini
[rule]
# Dodaj tu własne reguły segmentacji
# Przykład: definiowanie prostej reguły
# pattern = result
1
2
3
4
2
3
4
Korzystanie z API PHP
Dla deweloperów tworzących aplikacje webowe w PHP, ServBay ma wbudowane rozszerzenie SCWS — nie musisz nic instalować ani konfigurować. API SCWS jest gotowe do użycia w twoich skryptach PHP.
Możesz sprawdzić, czy rozszerzenie SCWS jest aktywne, odwiedzając stronę phpinfo()
w ServBay.
Przykład użycia
Poniżej prosty przykład kodu PHP ilustrujący użycie SCWS:
php
<?php
// Sprawdź, czy rozszerzenie SCWS jest załadowane
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// Tekst do segmentacji
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// Otwórz instancję segmentera SCWS
$sh = scws_open();
// Ustaw kodowanie znaków, zgodne z kodowaniem Twojego tekstu
scws_set_charset($sh, 'utf8');
// Wskaż ścieżki do plików słownika i reguł
// Upewnij się, że te ścieżki są poprawne dla środowiska 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);
// Przekaż tekst do segmentacji do instancji SCWS
scws_send_text($sh, $text);
// Pobierz wynik segmentacji
echo "Oryginalny tekst: " . $text . "\n";
echo "Wynik segmentacji:\n";
// Pętla — pobieranie i wypisywanie wyników segmentacji
// $res to tablica — każdy element to wynik segmentacji (słowo, kategoria itd.)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Wyświetl samo słowo
echo $word_info['word'] . " ";
// Możesz też wypisać inne dane, np. kategorię:
// echo "Słowo: " . $word_info['word'] . ", Kategoria: " . $word_info['attr'] . ", Waga: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// Zamknij instancję segmentera SCWS i zwolnij zasoby
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
Zapisz ten kod jako plik .php
, np. segment_test.php
, umieść go w katalogu głównym witryny ServBay /Applications/ServBay/www/servbay.demo/
(przy założeniu, że masz skonfigurowaną stronę servbay.demo
). Następnie otwórz go w przeglądarce lub uruchom z terminala, aby zobaczyć wynik segmentacji.
Najważniejsze funkcje
Wybrane, najważniejsze funkcje rozszerzenia SCWS dla PHP:
scws_open()
: Inicjuje i otwiera instancję segmentera; zwraca uchwyt lubfalse
przy niepowodzeniu.scws_set_charset($sh, $charset)
: Ustawia kodowanie znaków w instancji$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Ustawia ścieżkę do słownika;$mode
to typ słownika (tekstowy niezalecany — używajxdb
).scws_set_rule($sh, $rule_path)
: Ustawia ścieżkę do pliku reguł segmentacji.scws_send_text($sh, $text)
: Przesyła tekst do segmentacji do instancji$sh
.scws_get_result($sh)
: Pobiera wyniki segmentacji; każdorazowe wywołanie zwraca tablicę z informacjami o słowach, aż do końca tekstu (zwracafalse
).scws_close($sh)
: Zamyka segmenter i zwalnia zasoby.
Dokładny opis wszystkich dostępnych funkcji znajdziesz w oficjalnej dokumentacji rozszerzenia PHP SCWS — sprawdź również funkcje do pomijania znaków interpunkcyjnych, zmiany trybu segmentacji, pobierania wag itp.
Najczęstsze pytania (FAQ)
1. Co zrobić, jeśli wyniki segmentacji w SCWS nie są precyzyjne?
- Rozwiązanie: Najpierw sprawdź, czy w pliku konfiguracyjnym
/Applications/ServBay/etc/scws/scws.ini
są poprawnie ustawione ścieżki do słownika (dict
) i reguł (rule
). Upewnij się, że wskazane pliki istnieją i są czytelne. Dla tekstów specjalistycznych lub zawierających nowe słowa zaleca się utworzenie własnego słownika (za pomocąscws-gen
, formatxdb
) i dodanie go do konfiguracji. Zmiana wag w słowniku lub reguł segmentacji może być pomocna, lecz wymaga większej wiedzy o SCWS.
2. Słaba wydajność SCWS? Segmentacja przebiega wolno?
- Rozwiązanie: Sprawdź, czy SCWS korzysta z wydajnego słownika
xdb
, a nie przestarzałego tekstowego. Słownikixdb
są zoptymalizowane pod kątem szybkości ładowania i wyszukiwania. W pliku .ini podawaj wyłącznie pliki.xdb
. Dla bardzo dużych tekstów rozważ przetwarzanie „na partie”.
3. Komenda SCWS nie działa w terminalu („brak polecenia”)?
- Rozwiązanie: Najprawdopodobniej katalog z plikami wykonywalnymi ServBay nie został dodany do zmiennej PATH. Możesz uruchomić polecenie z pełną ścieżką, np.
/Applications/ServBay/bin/scws -i ...
. Alternatywnie, dodaj/Applications/ServBay/bin
do konfiguracji swojego shell-a (~/.bash_profile
,~/.zshrc
itd.) i ponownie załaduj konfigurację lub uruchom terminal.
4. Funkcja scws_open()
w PHP nie działa lub „funkcja nieznana”?
- Rozwiązanie: To znaczy, że rozszerzenie PHP SCWS nie jest załadowane w środowisku ServBay. Sprawdź wybraną wersję PHP w panelu ServBay, przejdź do strony
phpinfo()
, by upewnić się, żescws
jest aktywne. Jeśli nie jest, sprawdź plik konfiguracyjny PHP (zwyklephp.ini
), szukając wpisuextension=scws.so
lub podobnego; upewnij się, że plikscws.so
istnieje w katalogu rozszerzeń PHP (ServBay zapewnia te pliki domyślnie). Jeśli problem się powtarza – zrestartuj serwis ServBay.
Podsumowanie
SCWS to wszechstronny i efektywny system segmentacji słów w języku chińskim. Dzięki integracji z ServBay i wbudowanemu rozszerzeniu PHP, programiści mogą bardzo łatwo zainstalować, skonfigurować i wykorzystywać SCWS na macOS — zarówno jako narzędzie wiersza poleceń do analizy tekstu, jak i w kodzie PHP do dynamicznej segmentacji. Postępując zgodnie z tym przewodnikiem, szybko rozpoczniesz pracę z SCWS i zwiększysz możliwości przetwarzania tekstów chińskich w swoich projektach.