วิธีเปิดใช้งานและตั้งค่าโมดูล SCWS PHP ใน ServBay
ServBay คือสภาพแวดล้อมการพัฒนาเว็บระดับมืออาชีพที่ออกแบบมาสำหรับ macOS รวบรวมรันไทม์ของภาษาอย่าง PHP, Node.js, Python, Go, Java รวมถึงฐานข้อมูลเช่น MySQL, PostgreSQL, MongoDB, Redis และรองรับ Web Server อย่าง Caddy และ Nginx สำหรับนักพัฒนาที่ต้องจัดการข้อมูลภาษาจีนในแอป PHP ServBay จะติดตั้ง SCWS (Simple Chinese Word Segmentation) โมดูลตัดคำภาษาจีนความเร็วสูงไว้ให้พร้อมใช้งาน และขั้นตอนการเปิดใช้งานก็ง่ายมาก
บทความนี้จะอธิบายวิธีเปิดใช้งาน SCWS PHP extension ใน ServBay การตั้งค่าพจนานุกรม รวมถึงตัวอย่างโค้ดเบื้องต้นในการใช้งาน
ภาพรวมของโมดูล SCWS
SCWS เป็นเอ็นจิ้นโอเพ่นซอร์สสำหรับการตัดคำภาษาจีนที่โดดเด่นทั้งเรื่องประสิทธิภาพและความแม่นยำ โดยใช้ทั้งวิธีจับคู่กับพจนานุกรมและโมเดลทางสถิติ ทำให้สามารถแยกคำจากข้อความจีนได้อย่างรวดเร็วและถูกต้อง เหมาะอย่างยิ่งสำหรับการสร้าง Search Engine, ขุดข้อมูล, วิเคราะห์เนื้อหา ดึง Keyword หรือการใส่ POS tagging
คุณสมบัติเด่น
- ตัดคำได้รวดเร็ว: SCWS ใช้อัลกอริธึมที่ปรับแต่งมาอย่างดี สามารถจัดการข้อมูลข้อความจีนจำนวนมากได้อย่างมีประสิทธิภาพ
- แม่นยำสูง: ด้วยการจับคู่พจนานุกรมและโมเดลสถิติ SCWS แยกคำได้แม่นยำกว่าวิธีทั่วไป
- ฟีเจอร์หลากหลาย: นอกจากการแยกคำแล้ว ยังรองรับการดึงคีย์เวิร์ด ใส่แท็กคำ (POS) ฯลฯ
- ต่อยอดและอินทิเกรตง่าย: API สำหรับ PHP ใช้งานง่าย พร้อมเชื่อมต่อเข้าระบบของคุณได้ทันที
- ฟรีและโอเพ่นซอร์ส: ใช้งานและปรับแต่งได้ฟรีโดยไม่มีข้อจำกัด
SCWS เวอร์ชันที่ติดตั้งมากับ ServBay
ServBay รองรับ PHP หลายเวอร์ชัน และติดตั้ง SCWS ไว้ให้อย่างครบถ้วน โดยปัจจุบัน ServBay มี SCWS 1.2.3 สำเร็จรูปสำหรับ PHP 5.6 ถึง PHP 8.4
วิธีเปิดใช้ SCWS โมดูล
โดยค่าตั้งต้น SCWS จะถูกปิดไว้ใน ServBay คุณสามารถเปิดใช้งานได้ 2 วิธีหลัก: ผ่าน ServBay GUI หรือปรับแต่งไฟล์คอนฟิกด้วยตนเอง
วิธีแนะนำ: เปิดใช้งานผ่าน GUI ของ ServBay
ขั้นตอนง่ายรวดเร็ว ดังนี้
- เปิดหน้าหลักของ ServBay
- ที่แถบเมนูด้านซ้าย คลิกที่ Languages (ภาษา) แล้วเลือก PHP
- ที่รายการ PHP ทางขวา เลือกเวอร์ชัน PHP ที่ต้องการเปิด SCWS (เช่น
PHP 8.4
) - คลิกปุ่ม Extensions (ส่วนขยาย) ด้านขวาของ PHP เวอร์ชันนั้น
- ในรายการส่วนขยายที่ปรากฏ ค้นหา
SCWS
- กดสวิตช์ทางซ้ายของ
SCWS
ให้กลายเป็นสถานะเปิด (มักจะเปลี่ยนเป็นสีเขียว) - คลิกปุ่ม Save (บันทึก) ด้านล่างของหน้าต่าง
- กล่องข้อความจะถามให้รีสตาร์ท PHP เพื่อให้การเปลี่ยนแปลงมีผล ให้คลิก Restart (รีสตาร์ท)
หลังจากทำตามขั้นตอนข้างต้น SCWS ก็จะถูกเปิดใช้งานใน PHP เวอร์ชันที่คุณเลือกทันที
เปิดด้วยการแก้ไขไฟล์คอนฟิก เหมาะสำหรับผู้ใช้ขั้นสูงหรือกรณีแก้ปัญหา
บางกรณีที่คุณต้องปรับแต่งเพิ่มเติมหรือแก้ไขปัญหา คุณสามารถแก้ไขไฟล์คอนฟิกของ PHP ได้โดยตรง
ค้นหาไฟล์คอนฟิก: ก่อนอื่นให้ไปยังโฟลเดอร์
conf.d
ของ PHP เวอร์ชันที่ต้องการ SCWS ซึ่ง SCWS จะกำหนดค่าในไฟล์scws.ini
เส้นทางของไฟล์จะคล้ายๆ ดังนี้/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1แทนที่
X.Y
ด้วยเวอร์ชัน PHP จริงของคุณ เช่น8.4
แก้ไขไฟล์
scws.ini
: เปิดไฟล์นี้ด้วย 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 และ path พจนานุกรมได้ที่นี่ หรือจะตั้งค่าแบบ dynamic ในโค้ด PHP ก็ได้ ซึ่งยืดหยุ่นกว่า หากจะตั้งที่นี่ อย่าลืมลบ ; และปรับค่า ตัวอย่างสำหรับ 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
5แล้วบันทึกและปิดไฟล์
scws.ini
รีสตาร์ท PHP: กลับที่ ServBay GUI แล้วไปที่ Packages (แพ็กเกจ) ค้นหา PHP เวอร์ชันที่คุณแก้ไข คลิกปุ่มรีสตาร์ท (ไอคอนลูกศรกลม)
วิธีตรวจสอบว่า SCWS โหลดสำเร็จหรือไม่
หลังจากเปิด SCWS แล้ว ควรตรวจสอบว่า PHP โหลดโมดูลสำเร็จ วิธีมาตรฐานคือเช็คผ่าน phpinfo()
- ไปยังโฟลเดอร์รากเว็บไซต์ใน ServBay
/Applications/ServBay/www
แล้วสร้างโฟลเดอร์สำหรับเทสต์ เช่นscws-test
- สร้างไฟล์ใหม่ชื่อ
phpinfo.php
ใน/Applications/ServBay/www/scws-test
- ใส่โค้ด PHP ต่อไปนี้ลงไปในไฟล์นั้นphp
<?php phpinfo(); ?>
1
2
3 - ตรวจสอบว่า Web Server ใน ServBay (Caddy หรือ Nginx) ได้ตั้งค่าถูกและรันอยู่แล้ว สามารถเข้าถึงโฟลเดอร์
www
ได้โดยตรง โดยปกติ ServBay จะเตรียมโดเมนservbay.demo
ไว้เชื่อมกับ/Applications/ServBay/www
- เปิดเบราว์เซอร์ไปที่
https://servbay.demo/scws-test/phpinfo.php
- เมื่อหน้า phpinfo แสดงขึ้นมา ให้เลื่อนดูส่วนที่ชื่อ "SCWS" หากพบรายละเอียดเวอร์ชันและการตั้งค่าต่างๆ ของ SCWS แสดงว่าการติดตั้งสำเร็จ
(หมายเหตุ: เส้นทางภาพเป็นตัวอย่าง ตรวจสอบเอกสาร ServBay ฉบับทางการอีกครั้ง)
สร้างและตั้งค่าพจนานุกรม SCWS
SCWS เป็นเอ็นจิ้นตัดคำที่ใช้พจนานุกรมเป็นหลัก คุณภาพของพจนานุกรมจึงมีผลโดยตรงต่อประสิทธิภาพและความแม่นยำ ServBay จะเตรียมพจนานุกรมมาตรฐานและไฟล์ rule ไว้ใน /Applications/ServBay/etc/scws
คุณสามารถสร้างหรือเพิ่มพจนานุกรมเองได้เช่นกัน
รูปแบบไฟล์พจนานุกรมของ SCWS
SCWS รองรับทั้งไฟล์ข้อความ (Text) และไฟล์ไบนารีแบบ xdb โดยแนะนำให้เลือกใช้ xdb เพราะโหลดเร็วและประหยัดหน่วยความจำ
ตัวอย่างไฟล์พจนานุกรมแบบ Text หนึ่งบรรทัดหนึ่งคำ อาจมีคะแนนความนิยม (ตัวเลข ยิ่งเยอะยิ่งใช้บ่อย) และชนิดคำ (POS)
คำศัพท์1 [ความถี่1] [ชนิดคำ1]
คำศัพท์2 [ความถี่2] [ชนิดคำ2]
...
1
2
3
2
3
ตัวอย่างเช่น
ปัญญาประดิษฐ์ 1000 n
การประมวลผลภาษาธรรมชาติ 800 n
ServBay 500 nz
1
2
3
2
3
บันทึกคำศัพท์ของคุณลงในไฟล์ เช่น my_dict.txt
และตรวจสอบให้แน่ใจว่าไฟล์ใช้รหัสอักขระตรงกับที่ต้องการ (แนะนำ UTF-8)
วิธีสร้างไฟล์พจนานุกรม xdb
ServBay มีเครื่องมือ scws-gen-dict
สำหรับแปลงไฟล์ข้อความให้เป็น xdb
- เปิด Terminal ของ macOS
- ใช้คำสั่ง cd ไปยังโฟลเดอร์ bin ของ ServBay หรือระบุ path เต็มของ
scws-gen-dict
เครื่องมือจะอยู่ใน/Applications/ServBay/bin
เช่น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
คือ charset ของไฟล์ input
ตั้งค่า SCWS ให้ใช้ไฟล์พจนานุกรม
เมื่อได้ไฟล์ xdb แล้ว กำหนดพาธไปยังไฟล์นั้นในโค้ด PHP
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // กำหนดรหัสอักขระให้ตรงกับพจนานุกรม
// ตั้งค่าพจนานุกรมหลัก อาจใช้ของ SCWS หรือที่คุณสร้างเอง
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// หากมีหลายพจนานุกรม สามารถเพิ่มแบบ supplementary ได้
$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 (ใส่ POS ฯลฯ) ServBay เตรียมให้ครบ
// ... โค้ดตัดคำต่อไป ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
set_dict()
สำหรับเซ็ตพจนานุกรมหลัก (มักใช้ของ SCWS) ส่วน add_dict()
สำหรับเพิ่มพจนานุกรมเสริมที่คุณสร้างเอง SCWS_XDICT_TXT
หมายถึงเพิ่มแบบเสริม
ตัวอย่างการใช้งาน SCWS
เมื่อระบบพร้อมแล้ว คุณสามารถใช้ SCWS ในโค้ด PHP ได้ทันที ตัวอย่างการตัดคำเบื้องต้นดังนี้
php
<?php
// ตรวจสอบว่า SCWS extension โหลดแล้วหรือยัง
if (!extension_loaded('scws')) {
die('SCWS extension is not loaded.');
}
// สร้างอ็อบเจ็กต์ SCWS
$scws = scws_new();
if (!$scws) {
die('Failed to initialize SCWS.');
}
// ตั้งค่า charset (ต้องให้ตรงกับไฟล์พจนานุกรมและข้อความ)
$scws->set_charset('utf8');
// ระบุ path พจนานุกรม (ที่ติดตั้งมากับ ServBay)
// 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);
// ระบุ path rule file (ที่เตรียมพร้อมแล้วโดย ServBay) สำหรับ POS ฯลฯ
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// ตั้งค่าการแบ่งคำ (ไม่บังคับ, ค่า default คือ SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: แยกอักขระ non-Chinese เช่น email, url ฯลฯ
// SCWS_XDICT_DUALITY: 2-gram segmentation
// $scws->set_ignore(true); // ตัดเครื่องหมายวรรคตอนออกหรือไม่
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // ระดับ compound word segmentation
// ข้อความที่ต้องการตัดคำ
$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 มีทั้ง '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 จะจัดการเรื่องความเข้ากันให้อัตโนมัติ แต่หากตั้งค่าด้วยตนเองควรตรวจเช็ก)
- ประสิทธิภาพการตัดคำของ SCWS ขึ้นกับคุณภาพพจนานุกรมในแต่ละแวดวง เช่น ข้อมูลด้านเทคนิค ควรหรือนิยามพจนานุกรมเฉพาะวงการ
- ตรวจสอบ path ไฟล์คอนฟิก (
scws.ini
), พจนานุกรม (.xdb
), และ rule (.ini
) ให้ถูกต้อง และ PHP มีสิทธิ์อ่านไฟล์เหล่านี้ - หากแก้ไขค่าคอนฟิก PHP ต้องรีสตาร์ท PHP ให้การเปลี่ยนแปลงมีผล
คำถามที่พบบ่อย (FAQ)
ถาม: เปิด SCWS ผ่าน UI ของ ServBay แล้ว แต่ไม่พบใน phpinfo()
?
ตอบ: ตรวจสอบว่ารีสตาร์ท PHP package ตรงกับเวอร์ชันที่เว็บไซต์ของคุณใช้หรือไม่ หากรันหลาย PHP อาจเผลอรีสตาร์ทผิดตัว ลองแก้ไข scws.ini ด้วยตนเองและตรวจสอบ path, ไวยากรณ์ในไฟล์อย่างละเอียด
ถาม: จะสร้างและใช้พจนานุกรมเองอย่างไร?
ตอบ: อ่านหัวข้อ “สร้างและตั้งค่าพจนานุกรม SCWS” ในเอกสารนี้ ใช้ scws-gen-dict
แปลงไฟล์ข้อความเป็น xdb แล้วโหลดผ่านเมธอด add_dict()
ในโค้ด PHP
ถาม: ไฟล์ rule ของ SCWS (rules.utf8.ini
) มีไว้ทำอะไร?
ตอบ: ไฟล์ rule ใช้สำหรับใส่แท็กชนิดคำ (POS) และกฎตัดคำพิเศษอื่นๆ ServBay เตรียมไฟล์นี้ไว้ให้แล้ว โดยทั่วไปคุณไม่ต้องปรับแต่งอะไร
สรุป
ServBay ช่วยให้นักพัฒนาสามารถเปิดใช้และจัดการโมดูล SCWS สำหรับ PHP ได้อย่างสะดวก ไม่ว่าคุณจะเลือกแบบ GUI ที่ใช้ง่าย หรือจะตั้งค่าผ่านไฟล์เองก็รองรับทุกสถานการณ์ พร้อมทั้งมี SCWS tools และพจนานุกรมมาตรฐานติดตั้งให้เสร็จสรรพ คุณจึงเริ่มจัดการข้อความจีน—ไม่ว่าจะในค้นหา วิเคราะห์เนื้อหา หรือประยุกต์งานอื่นๆ ได้อย่างรวดเร็วและแม่นยำ SCWS ใน ServBay คือหนึ่งในส่วนเสริมที่ช่วยยกระดับความครบถ้วนและประสบการณ์ใช้งานของสภาพแวดล้อมพัฒนาบนเครื่องของคุณให้สมบูรณ์แบบยิ่งขึ้น