การตัดคำภาษาจีน SCWS ใน ServBay: คู่มือการติดตั้ง กำหนดค่า และใช้งาน
ServBay เป็นสภาพแวดล้อมสำหรับการพัฒนาเว็บในเครื่องที่ทรงพลัง โดยได้ติดตั้งเครื่องมือและชุดซอฟต์แวร์ยอดนิยมที่นักพัฒนานิยมใช้งานไว้มากมาย SCWS (Simple Chinese Word Segmentation) คือระบบตัดคำภาษาจีนที่มีประสิทธิภาพสูง มีความสำคัญมากเมื่อต้องประมวลผลข้อความภาษาจีน เช่น งานค้นหา การประมวลผลภาษาธรรมชาติ หรือวิเคราะห์คอนเทนต์ ปัจจุบัน ServBay ได้ติดตั้งทั้ง SCWS และโมดูล PHP ที่เกี่ยวข้องไว้ล่วงหน้า คุณจึงไม่ต้องติดตั้งอะไรเพิ่มเติม บทความนี้จะแนะนำวิธีการกำหนดค่าและใช้งาน SCWS ใน ServBay ทั้งในรูปแบบคำสั่งและ PHP API อย่างละเอียด
ภาพรวม
SCWS เป็นคลังตัดคำภาษาจีนประสิทธิภาพสูง เหมาะสำหรับงานที่ต้องตัดคำข้อความจีนขนาดใหญ่ได้อย่างรวดเร็วและแม่นยำ รองรับโหมดตัดคำหลากหลาย กำหนดพจนานุกรมและกฎการแบ่งคำได้เอง จึงเป็นหนึ่งในเครื่องมือพื้นฐานสำหรับแอปพลิเคชั่นค้นหา แนะนำเนื้อหา หรือวิเคราะห์ข้อความภาษา จีน ServBay ได้บรรจุ SCWS ไว้ในชุดซอฟต์แวร์และเตรียมส่วนขยาย PHP ที่ถูกคอมไพล์สำเร็จไว้ให้ ช่วยให้ใช้งาน SCWS บนเครื่องของคุณได้สะดวกรวดเร็ว
ข้อกำหนดเบื้องต้น
- คุณได้ติดตั้งและใช้งาน ServBay บน macOS เรียบร้อยแล้ว
การติดตั้งและกำหนดค่า
การติดตั้ง
ปรัชญาการออกแบบของ ServBay คือมอบสภาพแวดล้อมพร้อมใช้งานทันที โดย SCWS จะถูกติดตั้งไว้ล่วงหน้าในฐานะเครื่องมือภาษาจีนสำคัญ คุณสามารถใช้งานได้ทันทีโดยไม่ต้องดาวน์โหลดหรือคอมไพล์เพิ่มอะไร ไฟล์โปรแกรม, ไฟล์ config และพจนานุกรมต่างๆ จะถูกรวมไว้ในโฟลเดอร์หลักของ ServBay เสมอ โดยตำแหน่งปกติคือ /Applications/ServBay/
การกำหนดค่า
ไฟล์กำหนดค่าเริ่มต้นของ SCWS จะอยู่ที่ /Applications/ServBay/etc/scws/scws.ini
ภายในโฟลเดอร์ติดตั้งของ ServBay คุณสามารถปรับแต่งไฟล์นี้ได้ตามต้องการ เพื่อปรับเปลี่ยนลักษณะการตัดคำ, กำหนด charset, พจนานุกรม หรือไฟล์กฎ
ตัวอย่างเนื้อหา configuration เริ่มต้น:
ini
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
[charset]
: กำหนด encoding หลัก ปกติให้ใช้utf8
[rule]
: ระบุ path สำหรับไฟล์กฎการตัดคำ[dict]
: ระบุ path สำหรับไฟล์พจนานุกรม สามารถระบุได้หลายไฟล์โดยคั่นด้วยเครื่องหมายคอมมา,
การใช้งานพื้นฐาน: เครื่องมือบรรทัดคำสั่ง
SCWS มาพร้อมเครื่องมือบรรทัดคำสั่งชื่อ scws
สำหรับทดสอบตัดคำหรือประมวลผลข้อความชุดใหญ่ได้โดยตรงจาก terminal ServBay ได้จัดเตรียมไฟล์ scws
ไว้ในโฟลเดอร์ bin
โดยปกติ path /Applications/ServBay/bin
จะถูกเพิ่มลงใน PATH ของระบบอัตโนมัติ คุณจึงสามารถเรียกใช้คำสั่ง scws
ได้ทันทีใน terminal
ตัวอย่างการตัดคำ
ตัวอย่างใช้งานคำสั่ง scws
พื้นฐานมีดังนี้:
ตัดคำจากสตริง
ส่งสตริงเข้าคำสั่ง scws
ด้วย pipe:
bash
echo "这是一个中文分词的例子" | scws -i
1
อ่านข้อความจากไฟล์เพื่อตัดคำ
ใช้ option -i
เพื่อระบุไฟล์ input, และ -o
เพื่อกำหนดไฟล์ output:
bash
scws -i input.txt -o output.txt
1
ระบุไฟล์กฎการตัดคำ
ใช้ option -r
เพื่อระบุ path ของไฟล์กฎที่ต้องการ:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
1
ระบุพจนานุกรมที่ใช้
ใช้ option -d
เพื่อระบุ path ของพจนานุกรม:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
1
ขั้นสูง
การสร้างพจนานุกรมเอง
เพื่อเพิ่มความแม่นยำของผลลัพธ์ โดยเฉพาะกรณีคำเฉพาะทาง ชื่อคน สถานที่ หรือคำใหม่ๆ สามารถสร้างพจนานุกรมเองได้ SCWS ใช้พจนานุกรมรูปแบบ xdb
ที่มีประสิทธิภาพ คุณสามารถใช้เครื่องมือ scws-gen
ที่มีอยู่ใน ServBay เพื่อแปลงไฟล์พจนานุกรมแบบข้อความเป็น xdb ได้ง่ายๆ
ขั้นตอนการสร้างพจนานุกรมเอง:
สร้างไฟล์ข้อความเช่น
custom_dict.txt
ในแต่ละบรรทัดให้ระบุคำศัพท์ สามารถตามด้วยช่องว่างและน้ำหนัก (ค่า integer มีผลกับลำดับความสำคัญ)ServBay 10 สภาพแวดล้อมพัฒนาในเครื่อง 8 ตัดคำภาษาจีน 9
1
2
3ใช้
scws-gen
เพื่อแปลงไฟล์เป็นรูปแบบxdb
ข้อควรจำ:scws-gen
จะอยู่ในโฟลเดอร์bin
เช่นกันbashscws-gen -i custom_dict.txt -o custom_dict.xdb
1แก้ไขไฟล์ config ของ SCWS
/Applications/ServBay/etc/scws/scws.ini
ที่ส่วน[dict]
แล้วเพิ่ม path ของพจนานุกรมของคุณต่อท้ายพจนานุกรมหลัก คั่นด้วยเครื่องหมายคอมมาini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2ให้แน่ใจว่า
/path/to/your/custom_dict.xdb
คือที่อยู่จริงของไฟล์พจนานุกรมที่สร้างใหม่
การปรับแต่งกฎการตัดคำ
ไฟล์กฎการตัดคำ (โดยปกติคือ /Applications/ServBay/etc/scws/rules.ini
) ใช้กำหนดวิธีที่ SCWS จัดการกับโครงสร้างภาษาและความกำกวมบางอย่าง การปรับไฟล์นี้ต้องเข้าใจเกี่ยวกับอัลกอริทึมของ SCWS พอสมควร สำหรับผู้ใช้ส่วนใหญ่แล้ว การใช้กฎเริ่มต้นคู่กับพจนานุกรมกำหนดเองจะเพียงพอ หากต้องการปรับแต่ง ควรศึกษาเอกสาร SCWS เพิ่มเติมและระมัดระวังทุกการเปลี่ยนแปลง
ตัวอย่างเนื้อหาไฟล์กฎ (โดยทั่วไปประกอบด้วย pattern):
ini
[rule]
# สามารถเพิ่มกฎตัดคำเองที่นี่
# ตัวอย่าง: กำหนดกฎพื้นฐาน
# pattern = result
1
2
3
4
2
3
4
การใช้งานผ่าน PHP API
สำหรับนักพัฒนาที่สร้างเว็บแอปพลิเคชันด้วย PHP ServBay ได้ลงโมดูล SCWS สำหรับ PHP ไว้เรียบร้อยแล้ว คุณจึงสามารถเรียกใช้ API ได้ทันที จากโค้ด PHP ของคุณโดยไม่ต้องติดตั้งหรือตั้งค่า extension เพิ่ม
คุณสามารถตรวจสอบว่า SCWS extension ถูกเปิดใช้งานแล้วผ่านหน้า phpinfo()
ที่มาพร้อมกับ ServBay
ตัวอย่างการใช้งาน
ตัวอย่างโค้ด PHP ง่าย ๆ สำหรับใช้งาน SCWS API ในการตัดคำ:
php
<?php
// ตรวจสอบว่าได้โหลด SCWS แล้ว
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// ข้อความที่ต้องการตัดคำ
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// เปิด instance ของ SCWS
$sh = scws_open();
// กำหนด charset ให้ตรงกับ encoding ของข้อความ
scws_set_charset($sh, 'utf8');
// กำหนด path ของพจนานุกรมและกฎตัดคำ
// ตรวจสอบให้แน่ใจว่า path เหล่านี้ถูกต้องในระบบของคุณ
$dict_path = '/Applications/ServBay/etc/scws/dict.utf8.xdb';
$rule_path = '/Applications/ServBay/etc/scws/rules.ini';
if (!file_exists($dict_path)) {
die("SCWS dictionary file not found: " . $dict_path);
}
if (!file_exists($rule_path)) {
die("SCWS rules file not found: " . $rule_path);
}
scws_set_dict($sh, $dict_path);
scws_set_rule($sh, $rule_path);
// ส่งข้อความที่ต้องการตัดคำเข้าสู่ instance
scws_send_text($sh, $text);
// ดึงผลลัพธ์การตัดคำ
echo "ข้อความต้นฉบับ: " . $text . "\n";
echo "ผลลัพธ์การตัดคำ:\n";
// วนลูปแสดงผลลัพธ์แต่ละคำ
// $res คือตัวแปร array แต่ละ element คือผลการตัดคำ(คำ, ประเภท, น้ำหนัก)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// แสดงคำที่ตัดได้
echo $word_info['word'] . " ";
// ถ้าต้องการสามารถแสดง type หรือน้ำหนัก เช่น
// echo "คำ: " . $word_info['word'] . ", ประเภท: " . $word_info['attr'] . ", น้ำหนัก: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// ปิด instance SCWS เพื่อคืน resource
scws_close($sh);
?>
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
เช่น segment_test.php
แล้วนำไปไว้ในโฟลเดอร์ root เว็บไซต์ของ ServBay เช่น /Applications/ServBay/www/servbay.demo/
(กรณีที่คุณตั้งค่าเว็บไซต์ชื่อ servbay.demo
) จากนั้นทดสอบผ่าน browser หรือรันผ่าน PHP CLI เพื่อดูผลลัพธ์ได้ทันที
ฟังก์ชันหลักที่ใช้บ่อย
ต่อไปนี้คือฟังก์ชันหลักที่ใช้งานบ่อยใน SCWS PHP extension:
scws_open()
: เปิด instance SCWS คืนค่า resource หากสำเร็จ หรือ false หากล้มเหลวscws_set_charset($sh, $charset)
: กำหนดรหัสภาษาให้ instancescws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: กำหนด path ของพจนานุกรมให้ instance ตัวเลือก$mode
ระบุรูปแบบพจนานุกรม (SCWS_XDICT_TXT
สำหรับไฟล์ข้อความ, แต่แนะนำให้ใช้xdb
)scws_set_rule($sh, $rule_path)
: กำหนด path สำหรับไฟล์กฎตัดคำscws_send_text($sh, $text)
: ส่งข้อความเข้าตัดคำscws_get_result($sh)
: ดึงผลลัพธ์แต่ละคำจาก instance เป็น array กรณีหมดคำจะคืนค่า falsescws_close($sh)
: ปิด instance พร้อมคืน resource
สำหรับฟังก์ชันขั้นสูง (เช่น กำหนดให้ละเว้นเครื่องหมายวรรคตอน กำหนดโหมดตัดคำ ดึงน้ำหนักคำ ฯลฯ) กรุณาอ่านเอกสาร SCWS PHP extension เพิ่มเติม
คำถามที่พบบ่อย (FAQ)
1. หากผลลัพธ์การตัดคำไม่ตรงใจหรือไม่แม่นยำ ควรทำอย่างไร?
- แนวทางแก้ไข: ตรวจสอบว่า path ของพจนานุกรม (
dict
) และกฎ (rule
) ที่กำหนดไว้ใน/Applications/ServBay/etc/scws/scws.ini
ถูกต้องและไฟล์เหล่านั้นไม่มีปัญหา หากเป็นงานเฉพาะทางหรือคำศัพท์ใหม่แนะนำให้สร้างพจนานุกรมเอง (โดยใช้scws-gen
สร้างไฟล์ xdb) แล้วเพิ่ม path ลงใน config สามารถปรับน้ำหนักหรือแก้กฎการตัดคำได้หากต้องการผลลัพธ์ที่ละเอียดขึ้น (ควรศึกษาหรือทดลองทีละน้อย)
2. SCWS ทำงานช้าหรือประสิทธิภาพต่ำ?
- แนวทางแก้ไข: แนะนำให้ใช้พจนานุกรมรูปแบบ
xdb
ซึ่งถูกปรับแต่งประสิทธิภาพดีกว่าไฟล์ข้อความธรรมดา ตรวจสอบว่าใน config ระบุ path ของไฟล์ xdb เสมอ ถ้าข้อความมีขนาดใหญ่มาก อาจแบ่งประมวลผลเป็นส่วนๆ
3. ใช้คำสั่ง scws แล้วระบบบอกหาไม่เจอ?
- แนวทางแก้ไข: โดยปกติจะเกิดเมื่อ path ของไดเรกทอรีสำหรับไฟล์โปรแกรม ServBay ยังไม่ได้เพิ่มลง PATH คุณสามารถรันระบุ path เต็มเช่น
/Applications/ServBay/bin/scws -i ...
หรือเพิ่ม/Applications/ServBay/bin
ลงใน PATH ในไฟล์ config ของ shell (~/.bash_profile
,~/.zshrc
ฯลฯ) แล้วโหลด config ใหม่หรือเปิด terminal ใหม่
4. ใช้ฟังก์ชัน scws_open()
ใน PHP ไม่ได้หรือไม่พบฟังก์ชัน?
- แนวทางแก้ไข: เป็นไปได้ว่าส่วนขยาย SCWS ใน PHP ของ ServBay ยังไม่ถูกโหลด ให้ตรวจสอบ PHP เวอร์ชันที่ใช้งานผ่าน Control Panel ของ ServBay และดูที่หน้า
phpinfo()
ว่ามีโมดูล SCWS เปิดอยู่หรือไม่ หากไม่ปรากฏ ให้กลับไปเช็คที่ไฟล์ config PHP (php.ini
) ดูว่ามีบรรทัดextension=scws.so
หรือไม่ และตรวจสอบว่าไฟล์scws.so
มีอยู่ในไดเรกทอรี extension (โดยทั่วไป ServBay จะจัดเตรียมไว้แล้ว) หากยังไม่สำเร็จให้ลองรีสตาร์ท ServBay
สรุป
SCWS เป็นระบบตัดคำภาษาจีนที่ทรงพลังและมีประสิทธิภาพสูง ด้วยซอฟต์แวร์และ PHP extension ที่รวมมากับ ServBay นักพัฒนาสามารถติดตั้ง กำหนดค่า และใช้งาน SCWS ได้อย่างสะดวกทั้งในโหมดคำสั่งและ PHP เพื่อประมวลผลข้อความจีนแบบไดนามิกใน macOS ทำตามคู่มือนี้ คุณจะเริ่มใช้งาน SCWS ได้อย่างรวดเร็ว และเพิ่มศักยภาพการประมวลผลข้อความจีนในโปรเจกต์ของคุณทันที