Jak włączyć i skonfigurować moduł SCWS PHP w ServBay
ServBay to wydajne, lokalne środowisko deweloperskie stworzone specjalnie dla macOS, które integruje środowiska uruchomieniowe wielu języków (PHP, Node.js, Python, Go, Java i inne) oraz bazy danych (MySQL, PostgreSQL, MongoDB, Redis), a także obsługuje serwery WWW takie jak Caddy i Nginx. Dla programistów, którzy potrzebują przetwarzać tekst chiński w aplikacjach PHP, ServBay domyślnie zawiera wydajny moduł SCWS (Simple Chinese Word Segmentation) ułatwiający segmentację tekstu chińskiego, którego uruchomienie jest niezwykle proste.
W tym artykule znajdziesz szczegółowe instrukcje, jak włączyć rozszerzenie SCWS dla PHP w ServBay, skonfigurować pliki słownika i zobaczyć przykłady kodu pokazujące podstawowe zastosowania SCWS.
Przegląd modułu SCWS
SCWS to otwartoźródłowy silnik do segmentacji tekstu w języku chińskim, ceniony za wysoką wydajność i precyzję. Korzysta z połączenia metody słownikowej i modelu statystycznego, pozwalając na szybkie i dokładne dzielenie tekstu chińskiego na słowa, co jest idealne m.in. do wyszukiwarek, eksploracji tekstu, analizy treści, ekstrakcji słów kluczowych i tagowania części mowy.
Najważniejsze cechy
- Wysoka wydajność: SCWS używa zoptymalizowanego algorytmu segmentacji, umożliwiającego efektywne przetwarzanie dużych ilości tekstu chińskiego.
- Duża dokładność: Dzięki połączeniu słownika i modelu statystycznego SCWS oferuje wysoką precyzję segmentacji.
- Bogata funkcjonalność: Oprócz podstawowej segmentacji SCWS obsługuje także ekstrakcję słów kluczowych, oznaczanie części mowy i inne zaawansowane funkcje.
- Prosta integracja: Przyjazne API pozwala łatwo zintegrować SCWS z aplikacjami PHP.
- Wolny i otwartoźródłowy: SCWS jest oprogramowaniem open-source, którego możesz używać i dostosowywać za darmo.
Wersja SCWS wbudowana w ServBay
ServBay obsługuje wiele wersji PHP i do każdej dołącza odpowiedni moduł SCWS. Na dzień powstania tej instrukcji, ServBay oferuje wstępnie zainstalowane rozszerzenie SCWS 1.2.3 dla wersji PHP od 5.6 do 8.4.
Jak aktywować moduł SCWS
Domyślnie rozszerzenie SCWS jest wyłączone w ServBay. Możesz je włączyć na dwa sposoby: poprzez graficzny interfejs ServBay lub ręczną edycję pliku konfiguracyjnego.
Zalecany sposób: włączanie przez interfejs graficzny ServBay
To najprostsza i najszybsza metoda:
- Otwórz główne okno ServBay.
- W panelu nawigacyjnym po lewej stronie kliknij sekcję Języki (Languages), a następnie wybierz PHP.
- W prawej części znajdź wersję PHP, dla której chcesz włączyć SCWS (np.
PHP 8.4
). - Kliknij przycisk Rozszerzenia (Extensions) przy wybranej wersji PHP.
- W wyświetlonej liście rozszerzeń znajdź moduł
SCWS
. - Przełącz przełącznik po lewej od
SCWS
na pozycję włączoną (zazwyczaj zmienia kolor na zielony). - Kliknij przycisk Zapisz (Save) na dole okna.
- ServBay wyświetli komunikat o konieczności ponownego uruchomienia pakietu PHP, aby zastosować zmiany. Kliknij Restart (Restart).
Po wykonaniu tych kroków SCWS zostaje aktywowany dla wybranej wersji PHP.
Włączanie manualne przez edycję pliku konfiguracyjnego (dla zaawansowanych i podczas diagnozowania)
Dla większej kontroli lub diagnostyki, możesz samodzielnie zmodyfikować plik konfiguracyjny PHP:
Znajdź plik konfiguracyjny: Najpierw zlokalizuj katalog
conf.d
odpowiedniej wersji PHP. Konfiguracja SCWS znajduje się w plikuscws.ini
w tym katalogu. Ścieżka zazwyczaj wygląda tak:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1Zastąp
X.Y
właściwą wersją PHP, np.8.4
.Edytuj plik
scws.ini
: Otwórz plikscws.ini
w edytorze tekstu. Znajdź takie linie: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
5Usuń średnik z początku linii
extension = scws.so
, by uzyskać: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(Opcjonalnie) Możesz tu też ustawić domyślną stronę kodową i ścieżkę do słowników, ale zwykle lepiej ustawić je dynamicznie w kodzie PHP dla większej elastyczności. Jeśli jednak chcesz ustawić np. kodowanie UTF-8:
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
5Zapisz i zamknij plik
scws.ini
.Restart pakietu PHP: Otwórz OKNO ServBay, przejdź do sekcji Pakiety (Packages), znajdź odpowiednią wersję PHP (np. PHP 8.4) i kliknij przycisk restartu (zwykle ikona okrężnej strzałki).
Weryfikacja, czy moduł SCWS został poprawnie wczytany
Po włączeniu modułu warto sprawdzić, czy został prawidłowo załadowany. Najłatwiej zrobić to przez funkcję phpinfo()
:
- W katalogu domyślnej strony ServBay
/Applications/ServBay/www
utwórz nowy podkatalog, np.scws-test
. - W katalogu
/Applications/ServBay/www/scws-test
utwórz plikphpinfo.php
. - Wklej poniższy kod PHP do pliku
phpinfo.php
:php<?php phpinfo(); ?>
1
2
3 - Upewnij się, że Twój serwer WWW ServBay (np. Caddy lub Nginx) jest skonfigurowany i działa oraz umożliwia dostęp do
/Applications/ServBay/www
. ServBay domyślnie konfiguruje domenęservbay.demo
, wskazującą na ten katalog. - Otwórz w przeglądarce adres
https://servbay.demo/scws-test/phpinfo.php
. - Na stronie z informacjami PHP znajdź sekcję "SCWS". Jeśli widzisz informacje o SCWS (np. numer wersji, opcje konfiguracyjne), moduł został wczytany.
(Uwaga: ścieżka obrazka jest przykładowa. Sprawdź oficjalną dokumentację ServBay, by zobaczyć aktualne grafiki.)
Tworzenie i konfigurowanie słowników SCWS
SCWS działa na podstawie słownika, a jakość segmentacji zależy w dużej mierze od używanej bazy wyrazów. Domyślny słownik SCWS oraz reguły znajdziesz zwykle w /Applications/ServBay/etc/scws
. Możesz też łatwo dodać lub stworzyć własny słownik.
Format pliku słownika SCWS
SCWS obsługuje słowniki w zwykłym formacie tekstowym oraz szybszym, binarnym formacie xdb. Zaleca się używanie plików xdb, bo są ładowane szybciej i zużywają mniej pamięci.
Format pliku tekstowego jest prosty, każdy wpis w osobnej linii, opcjonalnie z częstotliwością (im wyższa liczba, tym słowo bardziej powszechne) oraz oznaczeniem części mowy:
Wyraz1 [częstotliwość1] [typ1]
Wyraz2 [częstotliwość2] [typ2]
...
1
2
3
2
3
Przykład:
sztuczna inteligencja 1000 n
przetwarzanie języka naturalnego 800 n
ServBay 500 nz
1
2
3
2
3
Własny słownik możesz zapisać jako plik tekstowy, np. my_dict.txt
. Upewnij się, że kodowanie pliku zgadza się z używaną przez Ciebie stroną kodową (zalecane UTF-8).
Tworzenie słownika w formacie xdb
Do ServBay dołączone jest narzędzie SCWS scws-gen-dict
, umożliwiające konwersję plików tekstowych do formatu xdb.
- Otwórz Terminal w macOS.
- Przejdź do katalogu bin ServBay lub użyj pełnej ścieżki do narzędzia. Typowa komenda:bashZamień
/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
na właściwą ścieżkę do pliku.-o
określa ścieżkę i nazwę pliku wynikowego (zalecane umieszczenie w/Applications/ServBay/etc/scws
).-c utf8
wymusza określone kodowanie.
Konfigurowanie SCWS do użycia słownika
Po wygenerowaniu pliku xdb możesz wskazać go w kodzie PHP:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Ustaw kodowanie znaków zgodne z plikiem słownika
// Ustaw główny słownik — domyślny lub własny plik xdb
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// Możesz dograć dodatkowe słowniki użytkownika
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT oznacza dodatkowy słownik
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // Reguły do oznaczania części mowy, ServBay dostarcza gotowe
// ... dalsze operacje segmentacji ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Funkcja set_dict()
ustawia główny słownik, zazwyczaj oficjalny plik xdb. add_dict()
pozwala załadować własny słownik użytkownika — stała SCWS_XDICT_TXT
oznacza słownik dodatkowy.
Przykład użycia SCWS
Po włączeniu SCWS i wskazaniu słownika, możesz segmentować tekst z poziomu PHP. Oto prosty przykład:
php
<?php
// Upewnij się, że rozszerzenie SCWS jest załadowane
if (!extension_loaded('scws')) {
die('Rozszerzenie SCWS nie jest załadowane.');
}
// Inicjalizacja obiektu SCWS
$scws = scws_new();
if (!$scws) {
die('Nie udało się zainicjować SCWS.');
}
// Ustaw kodowanie znaków (musi odpowiadać kodowaniu tekstu i słownika)
$scws->set_charset('utf8');
// Ustaw ścieżkę do słownika (domyślna ścieżka w ServBay)
// set_dict() ustawia główny słownik
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() pozwala dodać własny słownik użytkownika
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// Ustaw ścieżkę do pliku reguł (gotowy plik ServBay), przydatny do tagowania części mowy
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// Możesz wybrać tryb segmentacji (domyślnie SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN – dzieli znaki niechińskie (np. email, url itp.)
// SCWS_XDICT_DUALITY – segmentacja zbitek wyrazowych (bigramy)
// $scws->set_ignore(true); // Czy ignorować znaki interpunkcyjne
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // Ustaw poziom segmentacji zbitkowej
// Tekst do segmentacji
$text = "ServBay 是一个强大的本地 Web 开发环境,支持 PHP、Node.js 和多种数据库。";
// Przekazanie tekstu do SCWS
$scws->send_text($text);
// Pobranie wyników segmentacji
echo "Tekst oryginalny: " . $text . "\n\n";
echo "Wynik segmentacji:\n";
// Pętla po wynikach
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word to tablica z kluczami 'word', 'idf', 'attr' (część mowy) itd.
echo "Wyraz: " . $word['word'] . " (część mowy: " . $word['attr'] . ")\n";
}
}
// Zwolnij zasoby SCWS
$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
Zapisz powyższy kod jako plik .php
(np. scws_example.php
) w katalogu serwisu ServBay (np. /Applications/ServBay/www/scws-test/
). Otwórz w przeglądarce https://servbay.demo/scws-test/scws_example.php
, aby zobaczyć wyniki dzielenia tekstu.
Wskazówki i uwagi
- Upewnij się, że wybrana wersja rozszerzenia SCWS jest kompatybilna z instalacją PHP. ServBay automatyzuje kwestię kompatybilności, lecz przy ręcznej konfiguracji zwróć na to uwagę.
- Efektywność segmentacji zależy w dużej mierze od jakości słownika. Do tekstów branżowych zawsze warto używać specjalistycznych słowników.
- Ustaw odpowiednie ścieżki do plików konfiguracyjnych SCWS (
scws.ini
), słownika (.xdb
) oraz reguł (.ini
). Proces PHP musi mieć do nich prawa odczytu. - Po zmianie konfiguracji PHP nie zapomnij o ponownym uruchomieniu odpowiadającego pakietu PHP, by zmiany zaczęły działać.
Najczęstsze pytania (FAQ)
Q: Włączyłem SCWS przez interfejs ServBay, ale nie widzę go w phpinfo()
?
A: Upewnij się, że ponownie uruchomiłeś prawidłowy pakiet PHP. Jeśli masz kilka wersji PHP, musisz zrestartować tę, z której korzysta Twoja strona. W przypadku dalszych problemów spróbuj włączyć SCWS ręcznie, edytując plik scws.ini
, i sprawdź ścieżki oraz ewentualne błędy składni.
Q: Jak stworzyć i załadować własny słownik?
A: Zobacz sekcję „Tworzenie i konfigurowanie słowników SCWS” powyżej. Za pomocą narzędzia scws-gen-dict
przekonwertuj plik tekstowy na xdb i załaduj go do SCWS w PHP przez metodę add_dict()
.
Q: Do czego służy plik reguł SCWS (rules.utf8.ini
)?
A: Plik reguł służy głównie do tagowania części mowy i definiowania szczegółowych reguł segmentacji. ServBay dostarcza domyślny plik reguł i zazwyczaj nie ma potrzeby jego modyfikacji.
Podsumowanie
ServBay zapewnia wygodny sposób włączania i zarządzania modułem SCWS do segmentacji tekstu chińskiego w PHP. Dzięki prostemu interfejsowi lub możliwości konfiguracji ręcznej, możesz płynnie integrować SCWS z własnym workflow developerskim. Korzystając z gotowych narzędzi i słowników ServBay, łatwo i szybko rozpoczniesz pracę, wykorzystując SCWS do wydajnego i precyzyjnego przetwarzania tekstu chińskiego — nie tylko w wyszukiwarkach, ale też w analizie treści czy ekstrakcji informacji. SCWS stanowi ważne rozszerzenie bogatego ekosystemu ServBay dla programistów i zwiększa kompleksowość tego środowiska jako lokalnej platformy developerskiej.