Cách kích hoạt và cấu hình module SCWS PHP trên ServBay
ServBay là một môi trường phát triển web mạnh mẽ hỗ trợ cả macOS và Windows, được tích hợp nhiều môi trường runtime như PHP, Node.js, Python, Go, Java cùng các cơ sở dữ liệu như MySQL, PostgreSQL, MongoDB, Redis, và nhiều server web như Caddy và Nginx. Đối với các lập trình viên cần xử lý văn bản tiếng Trung trong ứng dụng PHP, ServBay đã tích hợp sẵn module SCWS (Simple Chinese Word Segmentation) giúp phân tách từ tiếng Trung hiệu quả, đồng thời quá trình bật module này cũng rất dễ dàng.
Bài viết này sẽ hướng dẫn chi tiết cách kích hoạt extension SCWS cho PHP trên ServBay, cấu hình file từ điển và minh họa cách sử dụng cơ bản với đoạn mã ví dụ.
Tổng quan về module SCWS
SCWS là một engine mã nguồn mở phân tách từ tiếng Trung nổi tiếng với hiệu năng cao và độ chính xác vượt trội. SCWS sử dụng kết hợp phương pháp so khớp từ điển và mô hình thống kê, giúp phân tách từ tiếng Trung một cách nhanh chóng và chính xác. Phù hợp cho các ứng dụng như công cụ tìm kiếm tiếng Trung, khai thác dữ liệu, phân tích nội dung, trích xuất từ khóa và gán loại từ.
Những điểm nổi bật
- Phân tách từ hiệu năng cao: SCWS sử dụng thuật toán tối ưu cho việc xử lý khối lượng lớn dữ liệu văn bản tiếng Trung.
- Độ chính xác vượt trội: Kết hợp giữa từ điển và mô hình thống kê, SCWS đạt hiệu quả cao trong phân tách từ.
- Chức năng đa dạng: Ngoài phân tách từ cơ bản, còn hỗ trợ trích xuất từ khóa và đánh dấu loại từ.
- Dễ dàng tích hợp: API đơn giản, tiện cho việc thêm vào ứng dụng PHP.
- Miễn phí và nguồn mở: SCWS là phần mềm nguồn mở, cho phép sử dụng miễn phí và tuỳ biến theo nhu cầu.
Phiên bản SCWS được tích hợp trong ServBay
ServBay hỗ trợ nhiều phiên bản PHP và với mỗi phiên bản nhập sẵn module SCWS tương ứng. Tính đến thời điểm viết bài này, ServBay đã cài sẵn extension SCWS 1.2.3 cho PHP từ 5.6 đến 8.4.
Cách kích hoạt module SCWS
Theo mặc định, module SCWS bị tắt trong ServBay. Có hai cách chính để bật module: qua giao diện đồ họa của ServBay hoặc chỉnh sửa cấu hình thủ công.
Cách tốt nhất: Kích hoạt qua giao diện đồ họa của ServBay
Đây là cách đơn giản và nhanh nhất:
- Mở giao diện chính của ServBay.
- Ở thanh điều hướng bên trái, chọn Ngôn ngữ (Languages), sau đó chọn PHP.
- Ở danh sách các phiên bản PHP bên phải, tìm phiên bản bạn muốn kích hoạt SCWS (ví dụ:
PHP 8.4
). - Nhấn vào nút Extensions (Tiện ích mở rộng) bên phải phiên bản PHP đó.
- Trong danh sách tiện ích hiển thị, tìm module
SCWS
. - Bật công tắc bên trái của
SCWS
sang trạng thái đã kích hoạt (thường chuyển sang màu xanh lá). - Nhấn nút Save (Lưu) ở cuối cửa sổ.
- ServBay sẽ yêu cầu khởi động lại package PHP để áp dụng thay đổi. Bấm Restart (Khởi động lại).
Sau khi hoàn tất các bước trên, module SCWS đã được kích hoạt cho phiên bản PHP bạn chọn.
Cách thủ công: Chỉnh sửa file cấu hình (dành cho lập trình viên nâng cao hoặc khi cần kiểm tra lỗi)
Nếu cần kiểm soát chi tiết hơn hoặc gặp vấn đề khi thao tác, bạn có thể chỉnh sửa file cấu hình PHP trực tiếp:
Xác định vị trí file cấu hình: Tìm thư mục
conf.d
ứng với phiên bản PHP bạn dùng. Cấu hình SCWS nằm trong filescws.ini
tại thư mục này, thường theo đường dẫn:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1Thay
X.Y
bằng phiên bản PHP cụ thể, ví dụ:8.4
.Sửa file
scws.ini
: Dùng trình soạn thảo mở filescws.ini
và tìm dòng sau: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
5Bỏ dấu chấm phẩy (
;
) ở đầu dòngextension = scws.so
để thành: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(Tùy chọn) Có thể thiết lập charset mặc định và đường dẫn từ điển tại đây, nhưng nên cài động trong code PHP để linh hoạt hơn. Nếu bạn đặt cấu hình tại đây, cần bỏ comment và điền giá trị phù hợp. Ví dụ, nếu từ điển dùng mã hóa 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
5Lưu lại và đóng file.
Khởi động lại package PHP: Mở giao diện chính ServBay, vào mục Packages (Gói phần mềm), tìm phiên bản PHP bạn vừa sửa, nhấn nút khởi động lại (biểu tượng mũi tên tròn).
Kiểm tra SCWS đã kích hoạt thành công hay chưa
Sau khi bật module, kiểm tra việc kích hoạt là bước cần thiết. Cách thông dụng là xem thông tin xuất đầu ra của PHP dùng phpinfo()
:
- Tại thư mục gốc web mà ServBay đề xuất
/Applications/ServBay/www
, tạo một thư mục con mới để test, ví dụ:scws-test
. - Trong thư mục này (
/Applications/ServBay/www/scws-test
), tạo filephpinfo.php
. - Sao chép đoạn mã PHP sau vào file
phpinfo.php
:php<?php phpinfo(); ?>
1
2
3 - Đảm bảo web server của ServBay (Caddy hoặc Nginx) đã được cấu hình và đang chạy, đồng thời có thể truy cập vào website tại
/Applications/ServBay/www
. Mặc định, ServBay sẽ tạo domainservbay.demo
trỏ về đây. - Mở trình duyệt và truy cập vào địa chỉ
https://servbay.demo/scws-test/phpinfo.php
. - Cuộn trên giao diện PHP Info để tìm phần "SCWS". Nếu thấy các thông tin cấu hình và phiên bản liên quan SCWS xuất hiện, module đã được kích hoạt thành công.
(Lưu ý: Đường dẫn hình chỉ là ví dụ, tham khảo đường dẫn hình thực tế từ tài liệu ServBay)
Tạo và cấu hình từ điển SCWS
SCWS là engine phân tách từ dựa trên từ điển, hiệu quả phân tách sẽ phụ thuộc vào chất lượng từ điển. ServBay đã nhập sẵn từ điển và file quy tắc SCWS đặt tại /Applications/ServBay/etc/scws
. Bạn cũng có thể tạo hoặc sử dụng từ điển tùy chỉnh riêng.
Định dạng file từ điển SCWS
SCWS hỗ trợ cả từ điển dạng text thường và binary xdb. Dạng xdb được khuyên dùng vì tốc độ load nhanh, tối ưu RAM.
Từ điển dạng text có cú pháp mỗi dòng một từ, sau có thể kèm tần suất (số, càng lớn càng phổ biến) và loại từ:
Từ_1 [Tần_suất_1] [Loại_từ_1]
Từ_2 [Tần_suất_2] [Loại_từ_2]
...
1
2
3
2
3
Ví dụ:
Trí tuệ nhân tạo 1000 n
Xử lý ngôn ngữ tự nhiên 800 n
ServBay 500 nz
1
2
3
2
3
Lưu danh sách từ tùy chỉnh thành file .txt – ví dụ my_dict.txt
. Đảm bảo mã hóa file theo yêu cầu (nên dùng UTF-8).
Tạo file từ điển dạng xdb
ServBay đã nhập sẵn công cụ scws-gen-dict
từ SCWS giúp chuyển từ điển text sang định dạng xdb.
- Mở Terminal trên macOS.
- Chạy lệnh sau, di chuyển vào thư mục bin của ServBay hoặc dùng đường dẫn đầy đủ. Thường công cụ nằm tại:bashĐổi
/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
thành đường dẫn thật đến file từ điển text vừa tạo. Tham số-o
xác định file xdb xuất, nên để vào/Applications/ServBay/etc/scws
.-c utf8
xác nhận mã hóa input.
Cấu hình SCWS sử dụng file từ điển
Sau khi có file xdb, bạn chỉ cần chỉ định cho SCWS sử dụng trong mã PHP:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Đặt charset, khớp với mã hóa từ điển
// Thiết lập đường dẫn từ điển chính, có thể là từ điển mặc định hoặc file xdb của bạn
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// Nếu dùng thêm nhiều từ điển, có thể thêm bổ sung
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT dùng cho từ điển riêng
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // Quy tắc từ loại, ServBay đã nhập sẵn
// ... Các thao tác phân tách từ tiếp theo ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Hàm set_dict()
dùng để thiết lập từ điển chính (thường là từ điển lớn mặc định của SCWS). add_dict()
để bổ sung từ điển cá nhân. Hằng số SCWS_XDICT_TXT
biểu thị từ điển tự tạo.
Ví dụ sử dụng SCWS
Sau khi kích hoạt module SCWS và cài đặt từ điển xong, bạn có thể gọi các hàm SCWS phân tách từ trong mã PHP. Dưới đây là ví dụ cơ bản:
php
<?php
// Kiểm tra đã nạp extension SCWS chưa
if (!extension_loaded('scws')) {
die('SCWS extension is not loaded.');
}
// Khởi tạo đối tượng SCWS
$scws = scws_new();
if (!$scws) {
die('Failed to initialize SCWS.');
}
// Đặt charset (phải trùng mã hóa của text và từ điển)
$scws->set_charset('utf8');
// Đặt đường dẫn từ điển (đã được ServBay chuẩn bị sẵn)
// set_dict() dùng cho từ điển chính
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() để thêm từ điển tự tạo
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// Đặt đường dẫn file quy tắc (ServBay đã nhập sẵn), hỗ trợ gán loại từ...
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// Tùy chỉnh chế độ phân tách (Mặc định: SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: tách ký tự x (phi tiếng Trung), như email, url
// SCWS_XDICT_DUALITY: phân tách hợp hai từ
// $scws->set_ignore(true); // Bỏ qua dấu câu
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // Cấp độ phân tách hợp
// Văn bản tiếng Trung cần xử lý
$text = "ServBay là một môi trường phát triển Web mạnh mẽ, hỗ trợ PHP, Node.js và nhiều cơ sở dữ liệu.";
// Gửi văn bản cho SCWS xử lý
$scws->send_text($text);
// Lấy kết quả phân tách từ
echo "Văn bản gốc: " . $text . "\n\n";
echo "Kết quả phân tách:\n";
// Lấy kết quả từng từ
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word là mảng chứa 'word', 'idf', 'attr' (loại từ) v.v.
echo "Từ: " . $word['word'] . " (Loại: " . $word['attr'] . ")\n";
}
}
// Giải phóng tài nguyên 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
Lưu mã trên thành file .php
(ví dụ: scws_example.php
) và đặt vào thư mục website ServBay (ví dụ /Applications/ServBay/www/scws-test/
). Truy cập bằng trình duyệt địa chỉ https://servbay.demo/scws-test/scws_example.php
để xem kết quả phân tách.
Lưu ý
- Đảm bảo module SCWS bạn kích hoạt tương thích với phiên bản PHP sử dụng. ServBay đã xử lý vấn đề này, nhưng lưu ý khi cấu hình thủ công.
- Hiệu quả phân tách SCWS phụ thuộc chất lượng từ điển. Với các văn bản chuyên ngành, nên tự tạo hoặc bổ sung từ điển chuyên sâu.
- Kiểm tra đường dẫn cấu hình SCWS (
scws.ini
), file từ điển (.xdb
), và quy tắc (.ini
) đảm bảo đúng và PHP có quyền truy cập đọc. - Sau khi sửa cấu hình PHP, nhất định phải khởi động lại package PHP mới áp dụng được thay đổi.
Giải đáp thắc mắc thường gặp (FAQ)
Q: Tôi đã bật SCWS qua giao diện ServBay UI nhưng không thấy trong phpinfo()
?
A: Hãy chắc chắn bạn đã khởi động lại đúng phiên bản PHP đang dùng website. Có thể có nhiều PHP cùng chạy, cần khởi động đúng phiên bản liên kết với site. Nếu vẫn không được, thử chỉnh thủ công file scws.ini
và kiểm tra kỹ đường dẫn, cú pháp.
Q: Làm sao tạo và sử dụng từ điển tự tạo?
A: Xem mục “Tạo và cấu hình từ điển SCWS”, dùng tool scws-gen-dict
chuyển file text sang xdb rồi tải vào bằng phương thức add_dict()
trong mã PHP.
Q: File quy tắc SCWS (rules.utf8.ini
) có vai trò gì?
A: File này chủ yếu dùng đánh dấu loại từ và một số quy tắc đặc biệt. ServBay đã nhập sẵn file mặc định, thông thường không cần chỉnh sửa.
Tổng kết
ServBay cung cấp giải pháp thuận tiện để kích hoạt và quản trị module SCWS cho PHP phân tách từ tiếng Trung. Dù thao tác qua giao diện đồ họa hay cấu hình linh hoạt thủ công, bạn đều có thể đưa SCWS vào quy trình phát triển PHP của mình dễ dàng. Nhờ các công cụ hỗ trợ và từ điển mặc định nhập sẵn trên ServBay, bạn có thể bắt đầu nhanh, tận dụng sức mạnh SCWS để xử lý tiếng Trung cho web (như tìm kiếm, phân tích nội dung) một cách hiệu quả. Tích hợp SCWS là điểm nhấn bổ sung cho hệ sinh thái phần mềm của ServBay, nâng cao giá trị thực tiễn của môi trường phát triển local.