Cách Bật và Cấu Hình Mô-đun SCWS PHP trong ServBay
ServBay là môi trường phát triển Web cục bộ mạnh mẽ dành cho macOS, tích hợp các runtime như PHP, Node.js, Python, Go, Java và cơ sở dữ liệu như MySQL, PostgreSQL, MongoDB, Redis, cùng hỗ trợ các máy chủ Web như Caddy và Nginx. Đối với 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 mô-đun phân tách từ tiếng Trung hiệu quả SCWS (Simple Chinese Word Segmentation), với quá trình kích hoạt vô cùng đơn giản.
Bài viết này sẽ hướng dẫn chi tiết cách bật mở rộng SCWS PHP trong ServBay, cấu hình file từ điển và minh họa cách sử dụng cơ bản thông qua mã ví dụ.
Tổng Quan Về Mô-đun SCWS
SCWS là một bộ máy phân tách từ tiếng Trung mã nguồn mở nổi bật với hiệu năng và độ chính xác cao. SCWS kết hợp giữa phương pháp so khớp từ điển và mô hình thống kê, mang lại khả năng phân tách văn bản tiếng Trung nhanh và chính xác, cực kỳ phù hợp cho các ứng dụng như xây dựng công cụ tìm kiếm tiếng Trung, khai thác dữ liệu văn bản, phân tích nội dung, trích xuất từ khóa và gán nhãn loại từ.
Tính Năng Nổi Bật
- Phân tách từ hiệu suất cao: SCWS sử dụng thuật toán tối ưu cho khả năng xử lý khối lượng lớn dữ liệu tiếng Trung.
- Độ chính xác cao: Kết hợp từ điển và mô hình thống kê giúp SCWS đạt kết quả chính xác vượt trội khi phân tách từ tiếng Trung.
- Đa dạng tính năng: Ngoài phân tách cơ bản, SCWS còn hỗ trợ trích xuất từ khóa, gán nhãn loại từ và các tính năng nâng cao.
- Dễ tích hợp: Cung cấp API đơn giản, thuận tiện cho lập trình viên tích hợp vào ứng dụng PHP.
- Mã nguồn mở miễn phí: SCWS hoàn toàn miễn phí, bạn có thể sử dụng hoặc tùy chỉnh theo nhu cầu.
Phiên Bản SCWS Tích Hợp Trong ServBay
ServBay hỗ trợ nhiều phiên bản PHP và đã cài sẵn mô-đun SCWS tương ứng cho từng phiên bản. Tính đến thời điểm viết bài, ServBay đã tích hợp SCWS 1.2.3 cho các phiên bản PHP 5.6 đến PHP 8.4.
Cách Bật SCWS Module
Theo mặc định, mô-đun SCWS bị vô hiệu hóa trong ServBay. Bạn có hai cách chính để kích hoạt nó: qua giao diện đồ họa ServBay hoặc chỉnh sửa thủ công file cấu hình.
Khuyến nghị: Bật qua giao diện đồ họ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, bấm vào Ngôn ngữ (Languages), chọn PHP.
- Ở bên phải, trong danh sách phiên bản PHP, tìm phiên bản bạn muốn bật SCWS (ví dụ:
PHP 8.4
). - Nhấn nút Mở rộng (Extensions) ở bên phải phiên bản PHP đó.
- Trong danh sách mở rộng hiện ra, tìm mô-đun
SCWS
. - Nhấn công tắc bên trái
SCWS
để chuyển sang trạng thái bật (thường sẽ chuyển thành màu xanh lá). - Nhấn Lưu (Save) ở cuối cửa sổ.
- ServBay sẽ nhắc bạn cần khởi động lại gói PHP để áp dụng thay đổi. Bấm Khởi động lại (Restart).
Hoàn thành các bước trên, mô-đun SCWS đã được kích hoạt cho phiên bản PHP bạn chọn.
Thủ công: Chỉnh sửa file cấu hình (cho người dùng nâng cao hoặc khi cần xử lý sự cố)
Nếu bạn muốn kiểm soát chi tiết hơn, hoặc cần kiểm tra/troubleshoot, bạn có thể chỉnh file cấu hình PHP trực tiếp:
Tìm file cấu hình: Đầu tiên, xác định thư mục
conf.d
ứng với phiên bản PHP bạn dùng. Có file cấu hìnhscws.ini
nằm trong thư mục này. Đường dẫn thường có dạng:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1Thay
X.Y
bằng đúng phiên bản PHP bạn đang dùng, ví dụ8.4
.Chỉnh sửa file
scws.ini
: Mở filescws.ini
với trình soạn thảo văn bản. Tìm nội dung 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
;
đầ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(Không bắt buộc) Bạn có thể đặt charset mặc định và đường dẫn từ điển ở đây, nhưng nên cấu hình động trong code PHP để linh hoạt hơn. Nếu cấu hình trực tiếp, nhớ bỏ dấu
;
và sửa lại giá trị. 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 và đóng file
scws.ini
.Khởi động lại gói PHP: Mở giao diện chính ServBay, vào Gói phần mềm (Packages), tìm PHP phiên bản vừa chỉnh, nhấn nút khởi động lại ở bên phải (biểu tượng mũi tên vòng tròn).
Kiểm Tra SCWS Module Đã Được Tải Chưa
Sau khi bật, bạn nên kiểm tra mô-đun SCWS đã thực sự được tải chưa. Phương pháp phổ biến nhất là dùng output của hàm PHP phpinfo()
:
- Trong thư mục gốc web được ServBay đề xuất
/Applications/ServBay/www
, tạo một thư mục con cho thử nghiệm, 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 máy chủ Web của ServBay (ví dụ Caddy hoặc Nginx) đã cấu hình và chạy, truy cập được website trong
/Applications/ServBay/www
. Mặc định ServBay sẽ dựng domainservbay.demo
trỏ vào đó. - Mở trình duyệt, truy cập
https://servbay.demo/scws-test/phpinfo.php
. - Khi trang thông tin PHP mở ra, kéo xuống tìm mục "SCWS". Nếu có cấu hình hoặc thông tin liên quan SCWS (thí dụ: phiên bản, tùy chọn cấu hình...), nghĩa là mô-đun đã tải thành công.
(Lưu ý: Đường dẫn ảnh chỉ mang tính minh họa, xem tài liệu chính thức của ServBay để tra ảnh thật)
Tạo và Cấu Hình Từ Điển SCWS
SCWS là bộ phân tách dựa trên từ điển; hiệu quả phụ thuộc nhiều vào từ điển dùng. ServBay đã tích hợp sẵn từ điển và file quy tắc mặc định của SCWS, thường đặt trong /Applications/ServBay/etc/scws
. Bạn hoàn toàn có thể tạo hoặc dùng từ điển tùy chỉnh.
Định Dạng File Từ Điển SCWS
SCWS hỗ trợ file từ điển dạng text thường và định dạng nhị phân xdb. Đề xuất dùng định dạng xdb vì tốc độ tải nhanh, tiết kiệm bộ nhớ.
File từ điển text có format như sau, mỗi dòng một từ, sau từ có thể có tần suất (số, càng lớn càng thông dụng) và loại từ:
Từ1 [Tần suất1] [Loại từ1]
Từ2 [Tần suất2] [Loại từ2]
...
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
2
3
Lưu các từ vựng tự tạo thành file text, ví dụ my_dict.txt
. Đảm bảo mã hóa file trùng với charset mong muốn (khuyến nghị UTF-8).
Tạo File Từ Điển Định Dạng xdb
ServBay tích hợp sẵn công cụ scws-gen-dict
của SCWS để chuyển từ điển text sang xdb.
- Mở Terminal (ứng dụng dòng lệnh trên macOS).
- Dùng lệnh
cd
vào thư mục bin của ServBay, hoặc chỉ rõ đường dẫn đầy đủ đếnscws-gen-dict
. Công cụ này thường ở:bashThay/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
bằng đường dẫn thật của file từ điển text. Tham số-o
chỉ đường ra và tên file xdb đầu ra, nên để tại/Applications/ServBay/etc/scws
.-c utf8
chỉ định mã hóa đầu vào.
Cấu Hình SCWS Sử Dụng File Từ Điển
Sau khi tạo xong file xdb, có thể chỉ định SCWS dùng file từ điển này trong code PHP:
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // Đặt charset trùng với mã hóa từ điển
// Đặt đường dẫn từ điển chính, thường là từ điển default của ServBay hoặc file xdb bạn đã tạo
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// Nếu có nhiều từ điển, có thể nạp thêm
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT: nạp từ điển người dùng
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // Đặt file quy tắc, ServBay đã có sẵn
// ... Thực hiện các thao tác phân tách tiếp theo ...
?>
2
3
4
5
6
7
8
9
10
11
set_dict()
để đặt từ điển chính (thường là từ điển chuẩn của SCWS). add_dict()
để nạp thêm từ điển người dùng. SCWS_XDICT_TXT
là hằng số báo hiệu đang nạp thêm từ điển tự tạo.
Ví Dụ Sử Dụng SCWS
Sau khi bật SCWS và cấu hình từ điển, bạn có thể dùng các hàm SCWS trong code PHP để phân tách văn bản. Dưới đây là ví dụ cơ bản:
<?php
// Đảm bảo mở rộng SCWS đã được nạp
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 với mã hóa của văn bản và từ điển)
$scws->set_charset('utf8');
// Đặt file từ điển (đường dẫn mặc định của ServBay)
// set_dict() đặt từ điển chính
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() để nạp thêm từ điển người dùng
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// Đặt đường dẫn file quy tắc (ServBay đã có), dùng cho gán nhãn loại từ, v.v.
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// Đặt chế độ phân tách (tùy chọn, mặc định là SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: chia tách các ký tự đặc biệt như email, url...
// SCWS_XDICT_DUALITY: phân tách tổ hợp (bigrams)
// $scws->set_ignore(true); // Bỏ qua dấu câu, ký hiệu
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // Đặt mức độ phân tách tổ hợp
// Văn bản tiếng Trung cần phân tách
$text = "ServBay là môi trường phát triển Web cục bộ mạnh mẽ, hỗ trợ PHP, Node.js cùng 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ặp qua và xuất từng kết quả
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word là mảng kết hợp, gồm 'word', 'idf', 'attr' (loại từ)...
echo "Từ: " . $word['word'] . " (Loại từ: " . $word['attr'] . ")\n";
}
}
// Giải phóng tài nguyên SCWS
$scws->close();
?>
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 code trên thành file .php
(thí dụ scws_example.php
) và đặt vào thư mục web ServBay (như /Applications/ServBay/www/scws-test/
). Truy cập https://servbay.demo/scws-test/scws_example.php
trên trình duyệt để xem kết quả phân tách.
Lưu Ý
- Đảm bảo phiên bản SCWS bật lên tương thích với phiên bản PHP bạn đang dùng. ServBay đã giải quyết phần lớn vấn đề tương thích; nếu cấu hình thủ công, cần quan sát kỹ.
- Hiệu quả phân tách của SCWS phụ thuộc chất lượng từ điển. Đối với văn bản chuyên ngành, hãy tự tạo hoặc dùng từ điển chuyên dụng.
- Đảm bảo đường dẫn file cấu hình SCWS (
scws.ini
), từ điển (.xdb
), file quy tắc (.ini
) chính xác, và quá trình PHP có quyền đọc các tệp này. - Sau khi sửa cấu hình PHP, nhất định phải khởi động lại PHP tương ứng mới được áp dụng.
Câu Hỏi Thường Gặp (FAQ)
Q: Tôi đã bật SCWS qua giao diện ServBay, nhưng không thấy trong phpinfo()
?
A: Hãy chắc chắn bạn đã khởi động lại đúng gói PHP đang sử dụng cho trang web. Có thể có nhiều phiên bản PHP chạy song song, bạn phải restart đúng phiên bản gắn với website. Nếu vẫn không thấy, thử chỉnh file scws.ini
thủ công, kiểm tra lại đường dẫn và cú pháp.
Q: Làm thế nào để tạo và dùng từ điển tùy chỉnh?
A: Xem phần “Tạo và Cấu Hình Từ Điển SCWS” trong tài liệu này, dùng công cụ scws-gen-dict
chuyển từ text sang xdb, sau đó dùng hàm add_dict()
trong code PHP để nạp từ điển của bạn.
Q: File quy tắc SCWS (rules.utf8.ini
) dùng để làm gì?
A: File này chủ yếu dùng cho gán nhãn loại từ cũng như các quy tắc đặc biệt khi phân tách. ServBay đã tích hợp sẵn, thông thường bạn không cần chỉnh sửa gì thêm.
Tổng Kết
ServBay cung cấp cho lập trình viên một giải pháp dễ dàng để bật và quản lý mô-đun phân tách từ tiếng Trung SCWS trên PHP. Dù bạn thao tác qua giao diện đồ họa trực quan hay cấu hình thủ công linh hoạt, việc tích hợp SCWS vào quy trình phát triển PHP trở nên đơn giản hơn bao giờ hết. Kết hợp cùng các công cụ và từ điển SCWS được cài sẵn trong ServBay, bạn có thể bắt đầu nhanh chóng, tận dụng SCWS để xử lý tiếng Trung hiệu quả—cho các ứng dụng web như tìm kiếm, phân tích nội dung. Là một phần quan trọng trong hệ sinh thái phần mềm đa dạng của ServBay, SCWS càng củng cố vị thế của ServBay như một môi trường phát triển cục bộ toàn diện và tiện lợi.