วิธีเปิดใช้งานและกำหนดค่า SCWS PHP โมดูลใน ServBay
ServBay คือสภาพแวดล้อมสำหรับการพัฒนาเว็บแบบโลคอลที่ทรงพลัง รองรับทั้ง macOS และ Windows พร้อมรวมรันไทม์หลากหลายภาษาอย่าง PHP, Node.js, Python, Go, Java และฐานข้อมูลยอดนิยม เช่น MySQL, PostgreSQL, MongoDB, Redis รวมทั้งเว็บเซิร์ฟเวอร์อย่าง Caddy และ Nginx สำหรับนักพัฒนาที่ต้องจัดการข้อความภาษาจีนในแอปพลิเคชัน PHP ServBay ได้ติดตั้ง SCWS (Simple Chinese Word Segmentation) โมดูลแยกคำภาษาจีนประสิทธิภาพสูงมาให้เรียบร้อย ทำให้การใช้งานง่ายมาก
ในเอกสารนี้ คุณจะได้รู้วิธีเปิดใช้งานส่วนขยาย SCWS PHP, การตั้งค่าไฟล์พจนานุกรม พร้อมตัวอย่างโค้ดสำหรับการใช้งานเบื้องต้น
ภาพรวม SCWS โมดูล
SCWS เป็นเอนจินแยกคำภาษาจีนแบบโอเพนซอร์สที่ขึ้นชื่อเรื่องความเร็วและความแม่นยำ โดยใช้การจับคู่อย่างมีพจนานุกรมร่วมกับโมเดลทางสถิติ จึงสามารถแยกข้อความภาษาจีนได้เร็วและแม่นยำ เหมาะกับงานสร้างเครื่องมือค้นหา, วิเคราะห์ข้อความ, ดึงคีย์เวิร์ด และการแท็กคำประเภทต่าง ๆ
คุณสมบัติหลัก
- แยกคำความเร็วสูง: อัลกอริทึมถูกออกแบบให้จัดการข้อความขนาดใหญ่ได้อย่างรวดเร็ว
- ความแม่นยำสูง: ด้วยการผสมผสานระหว่างพจนานุกรมกับสถิติผลลัพธ์แม่นยำมากขึ้น
- ฟีเจอร์ครบ: นอกจากแยกคำพื้นฐาน ยังรองรับฟีเจอร์ขั้นสูง เช่น ดึงคีย์เวิร์ด, แท็กคำประเภท
- ติดตั้งง่าย: API ที่ใช้งานง่ายสำหรับการเชื่อมกับโค้ด PHP
- โอเพนซอร์สและฟรี: ใช้งานและปรับแต่งได้อย่างอิสระ
SCWS เวอร์ชันที่ติดตั้งมาใน ServBay
ServBay รองรับ PHP หลายเวอร์ชัน โดยแต่ละเวอร์ชันมี SCWS ติดตั้งไว้แล้ว ปัจจุบัน PHP 5.6 ถึง PHP 8.4 จะมาพร้อม SCWS 1.2.3 โดยอัตโนมัติ
วิธีเปิดใช้งาน SCWS โมดูล
ค่าดีฟอลต์ SCWS จะถูกปิดไว้ สามารถเปิดได้สองวิธีหลัก คือ ผ่าน UI ของ ServBay หรือปรับแต่งไฟล์ config ด้วยตัวเอง
วิธีแนะนำ: เปิดผ่าน UI ของ ServBay
ขั้นตอนง่าย ๆ มีดังนี้
- เปิดแอปหลัก ServBay
- ในแถบด้านซ้ายเลือก Languages (ภาษา) แล้วคลิก PHP
- เลือกเวอร์ชัน PHP ที่ต้องการเปิด SCWS (เช่น
PHP 8.4
) - คลิกปุ่ม Extensions (ส่วนขยาย) ข้างเวอร์ชัน PHP
- หาโมดูล
SCWS
ในรายการ - เปลี่ยนสวิตช์ซ้ายมือของ
SCWS
ให้เป็นเปิด (สีเขียว) - คลิก Save (บันทึก) ด้านล่างหน้าต่าง
- ระบบจะขอให้คุณรีสตาร์ท PHP เพื่อใช้การเปลี่ยนแปลง คลิก Restart (รีสตาร์ท)
หลังขั้นตอนนี้ SCWS ก็เปิดใช้สำหรับเวอร์ชัน PHP ที่คุณเลือกแล้ว
เปิดด้วยไฟล์ config แบบแมนนวล (สำหรับสายเทคนิค/แก้ไขปัญหา)
หากต้องการควบคุมละเอียดหรือแก้ไขปัญหา สามารถแก้ไฟล์ config PHP ได้เองดังนี้
หาไฟล์ config:
ไปยังโฟลเดอร์conf.d
ของเวอร์ชัน PHP ที่ต้องการ SCWS config จะอยู่ในไฟล์scws.ini
เช่น/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1โดย
X.Y
ต้องเปลี่ยนเป็นเวอร์ชัน PHP จริงของคุณ (เช่น8.4
)แก้ไขไฟล์
scws.ini
:
เปิดไฟล์ด้วย text editor จะพบเนื้อหาประมาณนี้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ให้ลบ
;
หน้าextension = scws.so
เพื่อเปิดการใช้งาน ดังนี้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(เพิ่ม/เปลี่ยนค่า charset กับ fpath ได้เช่นกัน แต่โดยทั่วไปจะแนะนำให้ตั้งจากโค้ด PHP เพื่อความยืดหยุ่น)
ตัวอย่าง ถ้าดิกชันนารีใช้ UTF-8ini[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
5บันทึกและปิดไฟล์
รีสตาร์ท PHP:
เปิด ServBay หลัก ไปที่ Packages (ซอฟต์แวร์) หา PHP เวอร์ชันที่จังหวัดค่าด้วยตนเอง คลิกปุ่มรีสตาร์ท (สัญลักษณ์ลูกศรวนวงกลม)
วิธีตรวจสอบว่า SCWS โมดูลเปิดใช้งานสำเร็จหรือไม่
ควรตรวจสอบว่าโมดูลเปิดใช้งานพร้อมหรือยัง โดยวิธีดูผ่าน phpinfo()
- ที่โฟลเดอร์ root เว็บไซต์ ServBay
/Applications/ServBay/www
สร้างโฟลเดอร์ทดสอบใหม่เช่นscws-test
- ที่โฟลเดอร์
/Applications/ServBay/www/scws-test
สร้างไฟล์phpinfo.php
- ใส่โค้ดนี้ในไฟล์php
<?php phpinfo(); ?>
1
2
3 - ตรวจสอบว่าเว็บเซิร์ฟเวอร์ (Caddy หรือ Nginx) ใน ServBay ตั้งค่าถูกและรันอยู่ สามารถเข้าถึงโฟลเดอร์นี้ได้ โดยทั่วไป ServBay จะใช้โดเมน
servbay.demo
ชี้ไปที่/Applications/ServBay/www
- เปิดเบราว์เซอร์ไปที่
https://servbay.demo/scws-test/phpinfo.php
- ดูหน้า PHP info เลื่อนหาหัวข้อ "SCWS" หากพบการตั้งค่าและรายละเอียด SCWS แสดงว่าทำงานสมบูรณ์
(หมายเหตุ: เส้นทางภาพเป็นตัวอย่าง โปรดดูภาพจริงจากเอกสาร ServBay)
การสร้างและตั้งค่าไฟล์พจนานุกรม SCWS
SCWS ทำงานแบบอิงพจนานุกรม ผลลัพธ์การแยกคำจึงขึ้นกับคุณภาพดิกชันนารี ServBay มีไฟล์พจนานุกรมและ rule ดีฟอลต์อยู่แล้วที่ /Applications/ServBay/etc/scws
คุณยังสามารถสร้างพจนานุกรมเองได้
รูปแบบไฟล์พจนานุกรม SCWS
SCWS รองรับไฟล์ข้อความปกติ และไฟล์ xdb (ไบนารี) ควรใช้ xdb เพราะโหลดเร็ว กิน RAM น้อย
ตัวอย่างไฟล์ตัวอักษรแต่ละบรรทัดบันทึกเช่นนี้
คำศัพท์ [ความถี่] [ประเภทคำ]
คำศัพท์2 [ความถี่2] [ประเภท2]
...
1
2
3
2
3
ตัวอย่าง
ปัญญาประดิษฐ์ 1000 n
การประมวลผลภาษา 800 n
ServBay 500 nz
1
2
3
2
3
บันทึกคำที่คุณต้องการในไฟล์ข้อความเช่น my_dict.txt
ตรวจสอบ encoding ให้ตรงกับ charset ที่ต้องการ (UTF-8 แนะนำ)
วิธีสร้างไฟล์พจนานุกรม xdb
ServBay มีเครื่องมือ scws-gen-dict
สำหรับแปลงไฟล์ text เป็น xdb
- เปิดแอป Terminal ใน macOS
- ใช้
cd
ไปยังโฟลเดอร์ bin ของ ServBay หรือระบุ path เต็ม ๆ ก็ได้ โดยไฟล์เครื่องมืออยู่ที่bashโดย/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
คือ path ไฟล์ดิกชันนารีของคุณ-o
ระบุ path ไฟล์ xdb ผลลัพธ์ (เสนอให้วางที่/Applications/ServBay/etc/scws
)-c utf8
คือ encoding อินพุต
ตั้งค่า SCWS ให้ใช้พจนานุกรมที่ต้องการ
เมื่อสร้าง xdb แล้ว กำหนดพาธไฟล์ในโค้ด PHP ได้เลย
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // ตั้ง charset ต้องตรงกับ encoding ไฟล์พจนานุกรม
// ตั้งพาธดิกดีฟอลต์ จะใช้ไฟล์ xdb ที่ติดตั้งหรือไฟล์ที่สร้างเองก็ได้
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// หากมีหลายดิกชันนารี สามารถเพิ่มเข้าไปเพิ่ม
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT คือพจนานุกรมที่ผู้ใช้เพิ่ม
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // ตั้ง rule ให้กับการแบ่งประเภทคำ
// ... ดำเนินการแยกคำต่อไป ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
set_dict()
คือกำหนดพจนานุกรมหลัก (ที่มาด้วยหรือไฟล์คุณเองก็ได้)add_dict()
คือโหลดไฟล์พจนานุกรมผู้ใช้เพิ่มSCWS_XDICT_TXT
คือค่าคงที่สำหรับดิกของผู้ใช้
ตัวอย่างการใช้งาน SCWS
หลังเปิดใช้งาน SCWS และวางพจนานุกรมแล้ว สามารถเขียนโค้ด PHP เพื่อแยกคำได้เลย ตัวอย่างเบื้องต้น
php
<?php
// ตรวจสอบว่าโหลด SCWS แล้วหรือยัง
if (!extension_loaded('scws')) {
die('SCWS extension is not loaded.');
}
// สร้างอ็อบเจกต์ SCWS
$scws = scws_new();
if (!$scws) {
die('Failed to initialize SCWS.');
}
// กำหนดชุดอักขระ (encoding) ต้องตรงกับข้อความและดิกชันนารี
$scws->set_charset('utf8');
// ระบุพาธไฟล์พจนานุกรมหลัก (พาธที่ติดตั้งหรือสร้างเองก็ได้)
// set_dict() ใช้กับดิกหลัก
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() สำหรับพจนานุกรมตามที่ผู้ใช้ระบุเพิ่มเติม
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// ตั้งพาธ rule (ไฟล์ rule มาพร้อมกับ ServBay) สำหรับการแท็กประเภทคำ เช่น n, v, adj ฯลฯ
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// ตั้งโหมดแบ่งคำ (เลือกได้, ปกติเป็น SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: แยก x อักขระ (อักขระไม่ใช่จีน เช่น email, url)
// SCWS_XDICT_DUALITY: แยกคำแบบดูอัล (สองคำในชุดเดียวกัน)
// $scws->set_ignore(true); // ตั้งค่ามองข้ามจุดหรือเครื่องหมายวรรคตอน
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // ระดับการแบ่งคำแบบกลุ่ม
// ข้อความจีนที่จะแยกคำ
$text = "ServBay คือสภาพแวดล้อมสำหรับการพัฒนาเว็บแบบโลคอลที่ทรงพลัง รองรับ PHP, Node.js และฐานข้อมูลหลายประเภท.";
// ส่งข้อความไป SCWS เพื่อประมวลผล
$scws->send_text($text);
// แสดงผลลัพธ์
echo "ข้อความต้นฉบับ: " . $text . "\n\n";
echo "ผลลัพธ์การแยกคำ:\n";
// วนลูปดูผล
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word คือ array ประกอบด้วย 'word', 'idf', 'attr' (ประเภทคำ)
echo "คำ: " . $word['word'] . " (ประเภท: " . $word['attr'] . ")\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
บันทึกโค้ดนี้เป็นไฟล์ .php
(เช่น scws_example.php
) แล้ววางไว้ที่เว็บไซต์ใน ServBay (/Applications/ServBay/www/scws-test/
)
เข้าผ่านเบราว์เซอร์ที่ https://servbay.demo/scws-test/scws_example.php
จะเห็นผลลัพธ์คำที่แยกออกมา
ข้อควรระวัง
- ตรวจสอบเวอร์ชัน SCWS ให้สอดคล้องกับเวอร์ชัน PHP ที่ใช้งาน ServBay ได้จัดการรองรับ แต่หากตั้งเองต้องตรวจสอบด้วยตนเอง
- คุณภาพผลลัพธ์แยกคำขึ้นกับพจนานุกรม หากใช้ข้อความเฉพาะด้าน ควรสร้าง/ใช้พจนานุกรมสำหรับสาขาโดยเฉพาะ
- พาธไฟล์ config (
scws.ini
), ไฟล์ xdb และ rule ต้องถูกต้อง PHP ต้องมีสิทธิ์อ่านไฟล์เหล่านี้ - ทุกครั้งที่เปลี่ยน config PHP ต้องรีสตาร์ท PHP จึงจะเห็นผล
คำถามที่พบบ่อย (FAQ)
ถาม: เปิด SCWS ผ่าน UI แล้วแต่ใน phpinfo()
ไม่เจอ?
ตอบ: กรุณาตรวจสอบว่ารีสตาร์ท PHP ถูกเวอร์ชันหรือไม่ อาจมีหลายเวอร์ชัน PHP รันพร้อมกัน ต้องรีสตาร์ทเวอร์ชันที่เว็บใช้งานจริง หากยังมีปัญหาให้ลองแก้ไข scws.ini
ด้วยตนเองและตรวจ path กับไวยากรณ์ไฟล์
ถาม: จะสร้างและใช้ดิกชันนารีเองได้อย่างไร?
ตอบ: อ่านขั้นตอนในส่วน "การสร้างและตั้งค่าไฟล์พจนานุกรม SCWS" ใช้เครื่องมือ scws-gen-dict
แปลงไฟล์ text เป็น xdb แล้วใช้คำสั่ง add_dict()
ใน PHP เพื่อโหลดไฟล์ดิกของคุณ
ถาม: ไฟล์ rule (rules.utf8.ini
) ใช้ทำอะไร?
ตอบ: ไฟล์ rule ใช้สำหรับแท็กประเภทคำ และตั้งกฎแยกคำ ServBay ติดตั้งไฟล์นี้ให้แล้ว ไม่ต้องแก้ไขโดยทั่วไป
สรุป
ServBay ช่วยให้นักพัฒนาติดตั้งและจัดการ SCWS PHP โมดูลแยกคำภาษาจีนได้ง่ายมาก จะเลือกใช้งานผ่าน UI ที่เข้าใจง่ายหรือแก้ config โดยตรงก็สะดวก และสามารถออกแบบ workflow ให้เหมาะกับโครงการของคุณ ด้วยเครื่องมือและพจนานุกรม SCWS ที่ ServBay เตรียมไว้ คุณจึงพร้อมใช้งานฟีเจอร์แยกคำจีนที่แม่นยำรวดเร็ว ส่งเสริมความสามารถเว็บแอปทั้งด้านค้นหาและวิเคราะห์เนื้อหา SCWS คือส่วนสำคัญที่ช่วยเสริม ecosystem ซอฟต์แวร์ใน ServBay ให้สมบูรณ์และตอบโจทย์งานพัฒนาเว็บอย่างมืออาชีพ