ServBay में SCWS PHP मॉड्यूल को सक्षम और कॉन्फ़िगर कैसे करें
ServBay macOS के लिए बनाया गया एक शक्तिशाली लोकल वेब डेवेलपमेंट एनवायरनमेंट है, जिसमें PHP, Node.js, Python, Go, Java जैसी कई भाषाओं के रनटाइम शामिल हैं, साथ ही MySQL, PostgreSQL, MongoDB, Redis जैसी डाटाबेस और Caddy व Nginx जैसे वेब सर्वर भी हैं। उन डेवेलपर्स के लिए जिन्हें अपने PHP एप्लिकेशन में चीनी टेक्स्ट प्रोसेस करना होता है, ServBay पहले से ही SCWS (Simple Chinese Word Segmentation) मॉड्यूल देता है, जिसे सक्रिय करने की प्रक्रिया बहुत आसान है।
यह गाइड आपको बताएगा कि ServBay में SCWS PHP एक्सटेंशन को कैसे सक्षम करें, डिक्शनरी फाइल कैसे सेट करें, और बेसिक उपयोग का उदाहरण भी देगा।
SCWS मॉड्यूल का परिचय
SCWS एक ओपन-सोर्स चीनी शब्द विभाजन इंजन है, जिसकी परफॉरमेंस और एक्युरेसी काफी ऊँची है। यह शब्दकोश मिलान और सांख्यिकीय मॉडल का संयोजन उपयोग करता है, जिससे यह चीनी टेक्स्ट को तेज और सटीक रूप से विभाजित करता है। यह चीनी सर्च इंजन, टेक्स्ट माइनिंग, कंटेंट एनालिसिस, कीवर्ड एक्सट्रैक्शन और शब्द-प्रकार लेबलिंग जैसी जगहों पर आदर्श है।
मुख्य विशेषताएँ
- उच्च परफॉरमेंस: SCWS अनुकूलित विभाजन एल्गोरिद्म से विशाल चीनी टेक्स्ट डाटा बहुत तेज प्रोसेस करता है।
- सटीकता: शब्दकोश और सांख्यिकीय मॉडल का संयोजन, जिससे एक्युरेसी बेहतर मिलती है।
- फीचर-रिच: बेसिक वर्ड सेगमेंटेशन के अलावा, कीवर्ड एक्सट्रैक्शन, पार्ट-ऑफ-स्पीच टैगिंग आदि उन्नत सुविधाएँ भी हैं।
- इंटीग्रेट करना आसान: सादा API इंटरफेस के जरिए PHP में बड़ी आसानी से जोड़ सकते हैं।
- ओपन-सोर्स और फ्री: यह सॉफ्टवेयर मुफ्त उपलब्ध है और कस्टमाइजेशन की भी सुविधा देता है।
ServBay में SCWS का वर्शन
ServBay कई PHP वर्शंस को सपोर्ट करता है और प्रत्येक वर्शन के लिए SCWS मॉड्यूल प्री-इंस्टॉल होता है। लेख लिखे जाने तक, ServBay PHP 5.6 से PHP 8.4 वर्शन तक SCWS 1.2.3 एक्सटेंशन के साथ आता है।
SCWS मॉड्यूल कैसे सक्षम करें
डिफ़ॉल्ट रूप से, ServBay में SCWS मॉड्यूल डिसेबल रहता है। इसे दो तरीके से सक्षम किया जा सकता है: ServBay UI से या मैनुअली कॉन्फ़िगरेशन फाइल एडिट करके।
सुझाया गया तरीका: ServBay UI के द्वारा
यह सबसे आसान और फास्ट तरीका है:
- ServBay मुख्य इंटरफेस ओपन करें।
- बाएं नेविगेशन में Languages (भाषाएँ) चुनें और फिर PHP क्लिक करें।
- दाईं ओर दी गई PHP वर्शन लिस्ट में, जिसमें आप SCWS सक्षम करना चाहते हैं (जैसे,
PHP 8.4
) को ढूंढें। - उस वर्शन के दाईं ओर Extensions (एक्सटेंशन्स) बटन दबाएँ।
- पॉप-अप लिस्ट में से
SCWS
मॉड्यूल को खोजें। SCWS
के बाएँ स्विच को ऑन करें (ठTypically हरा हो जाएगा)।- नीचे Save (सेव) बटन क्लिक करें।
- ServBay आपको PHP सॉफ्टवेयर को रीस्टार्ट करने के लिए बोलेगा। Restart (रीस्टार्ट) चुनें।
इन स्टेप्स के बाद, SCWS आपके चुने हुए PHP वर्शन के लिए सक्रिय हो जाएगा।
मैन्युअल कॉन्फ़िगरेशन द्वारा सक्षम करना (एडवांस यूजर या ट्रबलशूटिंग हेतु)
अगर आपको बारीकी से कंट्रोल चाहिए/समस्या सुलझानी हो, PHP कॉन्फ़िगरेशन फाइल मैन्युअली भी एडिट की जा सकती है:
कॉन्फ़िग फाइल का पता लगाएँ: संबंधित PHP वर्शन के
conf.d
डायरेक्टरी में जाएँ। SCWS की सेटिंगscws.ini
फाइल में होती है। पाथ आमतौर पर यह है:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1यहाँ
X.Y
को अपने PHP वर्शन से बदलें, जैसे8.4
।scws.ini
एडिट करें: फाइल को टेक्स्ट एडिटर से खोलें। यह देखें: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
5extension = 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(वैकल्पिक) आप डिफ़ॉल्ट कैरेक्टर सेट या डिक्शनरी पाथ यहीं सेट कर सकते हैं, लेकिन आमतौर पर 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सेव करके फाइल बंद करें।
PHP पैकेज रीस्टार्ट करें: ServBay ओपन करें, Packages (सॉफ़्टवेयर पैक) में जाएँ, प्रासंगिक PHP वर्शन (जैसे, PHP 8.4) का रीस्टार्ट बटन क्लिक करें (सामान्यत: गोल एरो आइकन)।
SCWS मॉड्यूल लोड हुआ या नहीं - जांचें
सक्षम करने के तुरंत बाद यह जांचना जरूरी है कि मॉड्यूल सही से लोड हुआ या नहीं। आमतौर पर phpinfo()
देखकर चेक करते हैं:
- सुझाए गए साइट रूट
/Applications/ServBay/www
में एक नया डायरेक्टरी बनाएँ, जैसेscws-test
। - उसमें
phpinfo.php
नाम की फाइल बनाएं। - इसमें यह PHP कोड डालें:php
<?php phpinfo(); ?>
1
2
3 - इस बात की जांच करें कि ServBay वेब सर्वर (Caddy/Nginx आदि) रन कर रहा है तथा
/Applications/ServBay/www
विल पहुंच पा रहे हैं। डिफ़ॉल्ट रूप से ServBayservbay.demo
डोमेन/Applications/ServBay/www
से जुड़ा होता है। - ब्राउज़र में जाएँ:
https://servbay.demo/scws-test/phpinfo.php
- खुले हुए PHP इंफो पेज में स्क्रोल करें और "SCWS" सेक्शन ढूंढें। अगर SCWS की डिटेल्स (वर्शन, विकल्प आदि) दिख रही हों, तो मॉड्यूल सक्सेसफुली लोड हो चुका है।
(नोट: यह चित्र सिर्फ़ उदाहरण है, वास्तविक दस्तावेज़ के अनुरुप इमेज देखें।)
SCWS डिक्शनरी बनाना व कॉन्फ़िगर करना
SCWS शब्दकोश-आधारित सेगमेंटेशन इंजन है, अतः परिणाम काफी हद तक डिक्शनरी की गुणवत्ता पर निर्भर करता है। ServBay में डिफ़ॉल्ट डिक्शनरी व नियम फाइल /Applications/ServBay/etc/scws
फोल्डर में मिल जाती है, लेकिन आप अपनी खुद की डिक्शनरी भी बना सकते हैं।
SCWS डिक्शनरी फाइल फॉर्मेट
SCWS सिंपल टेक्स्ट और xdb (बाइनरी) फॉर्मेट दोनों सपोर्ट करता है। xdb फॉर्मेट को ही प्राथमिकता दें, क्योंकि यह तेज लोड होता है और कम मेमोरी लेता है।
टेक्स्ट डिक्शनरी फॉर्मेट कुछ यूँ दिखता है, प्रत्येक लाइन में एक शब्द, उसके बाद (जरूरत हो तो) शब्द की फ्रीक्वेंसी और शब्द-प्रकार:
शब्द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 का scws-gen-dict
टूल है, जिसकी मदद से टेक्स्ट डिक्शनरी xdb में बदल सकते हैं।
- macOS के Terminal में जाएँ।
- या तो ServBay के bin डायरेक्टरी में जाएँ, या सीधे
scws-gen-dict
का पाथ दें; उदाहरण: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
को अपनी डिक्शनरी की असली फाइल पाथ से बदलें।-o
आउटपुट फाइल का पाथ और नाम दे, सेव करने के लिए/Applications/ServBay/etc/scws
ही चुनें।-c utf8
फाइल की एनकोडिंग।
डिक्शनरी फाइल SCWS के लिए सेट करना
xdb फाइल बनने के बाद, अपने PHP कोड में SCWS में यह डिक्शनरी सेट करें:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // कैरेक्टर सेट डिक्शनरी व टेक्स्ट के अनुसार ही रखें
// मुख्य डिक्शनरी पाथ सेट करें - डिफॉल्ट या आपकी 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'); // नियम फाइल भी इसी डायरेक्टरी में है (POS टैगिंग आदि के लिए)
// ... आगे की सेगमेंटेशन प्रोसेस ...
?>
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 कोड में SCWS फंक्शन का उपयोग कर सकते हैं। यह एक बेसिक उदाहरण है:
php
<?php
// जांचें कि SCWS एक्सटेंशन लोड है या नहीं
if (!extension_loaded('scws')) {
die('SCWS एक्सटेंशन लोड नहीं है।');
}
// SCWS ऑब्जेक्ट बनाएं
$scws = scws_new();
if (!$scws) {
die('SCWS इनिशियलाइज़ नहीं हुआ।');
}
// कैरेक्टर सेट तय करें (आपके टेक्स्ट/डिक्शनरी एन्कोडिंग जैसा)
$scws->set_charset('utf8');
// डिक्शनरी फाइल पाथ (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);
// नियम फाइल पथ, POS टैगिंग आदि के लिए
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// सेगमेंटेशन मोड (ऐच्छिक, डिफॉल्ट: SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: गैर-चीनी अक्षरों की पहचान जैसे email, url आदि
// SCWS_XDICT_DUALITY: कंपाउंड वर्ड सेगमेंटेशन (बाय-ग्रेम सेकेंड)
// $scws->set_ignore(true); // पंक्चुएशन इग्नोर करें या नहीं
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // मल्टी वर्ड लेवल
// सेगमेंट करने के लिए टेक्स्ट
$text = "ServBay एक शक्तिशाली लोकल Web डेवेलपमेंट एनवायरनमेंट है, जो 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' (POS) आदि होते हैं
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 कन्फ़िग फाइल (
scws.ini
), डिक्शनरी (.xdb
) और नियम फाइल (.ini
) के पाथ सही सेट हों और PHP को उनपर रीड परमिशन हो। - PHP कॉन्फ़िग बदले बाद संबंधित PHP पैकेज को रीस्टार्ट जरूर करें।
FAQ (अक्सर पूछे जाने वाले प्रश्न)
प्र: मैंने ServBay UI से SCWS एक्टिव किया, पर phpinfo()
में नहीं दिखता?
उत्तर: सही PHP पैकेज को रीस्टार्ट किया या नहीं, यह देखें। कभी-कभी कई PHP वर्शन चलते हैं; आपको उसी को रीस्टार्ट करना है, जो आपकी साइट का है। समस्या बनी रहे, तो scws.ini
मैन्युअली चेक करें—फाइल पथ/सिंटैक्स में गलती न हो।
प्र: अपनी कस्टम डिक्शनरी कैसे बनाएँ और जोड़ें?
उत्तर: “SCWS डिक्शनरी बनाना व कॉन्फ़िगर करना” सेक्शन देखें, scws-gen-dict
से टेक्स्ट डिक्शनरी को xdb में बदलें, और PHP में add_dict()
से लोड करें।
प्र: SCWS की नियम फाइल (rules.utf8.ini
) का क्या इस्तेमाल है?
उत्तर: यह फ़ाइल प्रायः POS टैगिंग और खासतौर सेगमेंटेशन रूल्स तय करती है। ServBay में डिफॉल्ट फाइल प्री-इंस्टॉल्ड है, आमतौर पर आपको एडिट की जरूरत नहीं।
निष्कर्ष
ServBay चीनी शब्द-सेगमेंटेशन के लिए SCWS PHP मॉड्यूल को सक्षम व प्रबंधित करने का आसान तरीका देता है। ग्राफिकल UI या फ्लेक्सिबल मैन्युअल तरीके से, आप SCWS को अपने PHP डेवेलपमेंट में जोड़ सकते हैं। ServBay के प्रीलोडेड SCWS टूल्स और डिफ़ॉल्ट डिक्शनरी की मदद से आप त्वरित शुरुआत कर सकते हैं और अपने वेब एप्लिकेशन (जैसे सर्च, कंटेंट एनालिसिस) को चीनी टेक्स्ट प्रोसेसिंग में बेहतरीन बना सकते हैं। ServBay के समृद्ध पैकेज ईकोसिस्टम के साथ SCWS इंटीग्रेशन एनवायरनमेंट की उपयोगिता और पूर्णता को आगे बढ़ाता है।