تقطيع الكلمات الصينية بواسطة SCWS في ServBay: دليل التثبيت وضبط الإعدادات والاستخدام
تُعد ServBay بيئة تطوير ويب محلية قوية مدمجة بالعديد من الأدوات والحزم الضرورية للمطورين. نظام SCWS (Simple Chinese Word Segmentation) هو أحد أكثر أنظمة تقطيع الكلمات الصينية كفاءة، ويكتسي أهمية بالغة عند التعامل مع النصوص الصينية مثل البحث، المعالجة اللغوية، تحليل المحتوى وغيرها. تم تثبيت SCWS وموديوله الخاص بـ PHP مسبقاً ضمن ServBay، فلا داعي لأي خطوات تثبيت إضافية معقّدة. يوجهك هذا الدليل لكيفية ضبط واستخدام SCWS ضمن ServBay باعتماد كل من أدوات السطر وواجهة PHP البرمجية.
لمحة عامة
SCWS مكتبة عالية الأداء لتقطيع الكلمات الصينية، مثالية للسيناريوهات التي تحتاج تقطيع نصوص صينية كبيرة بسرعة ودقة. يدعم أنماط تقطيع متعددة وقواميس وقواعد مخصصة، ويشكل حجر أساس في بناء تطبيقات البحث، التوصية بالمحتوى، وتحليل النصوص باللغة الصينية. قامت ServBay بتضمينه مع حزمة برامجها، وقدمت امتداداً مبرمجاً لـ PHP جاهز معد مسبقاً، ما يسهل استخدامه ضمن البيئة المحلية بشكل كبير.
المتطلبات الأساسية
- يجب أن يكون لديك ServBay مثبتاً ويعمل بنجاح على نظام macOS.
التثبيت وضبط الإعدادات
التثبيت
تم تطوير ServBay ليكون بيئة تطوير جاهزة للاستخدام فوراً. تم إلحاق SCWS مسبقاً كأحد أدوات معالجة اللغة الصينية الهامة. لا تحتاج إلى تحميل أو تجميع إضافي لاستخدامه. جميع الملفات التنفيذية وملفات الضبط والقواميس ذات الصلة موجودة في مجلد تثبيت ServBay، وعادة المسار الافتراضي هو /Applications/ServBay/.
ضبط الإعدادات
ملف إعدادات SCWS الافتراضي يوجد في /Applications/ServBay/etc/scws/scws.ini داخل دليل التثبيت. يمكنك تعديل هذا الملف حسب حاجتك لتغيير سلوك التقطيع، الترميزات، القواميس، أو القواعد الخاصة بتقطيع الكلمات.
مثال على محتوى ملف الإعداد الافتراضي:
ini
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
[charset]: يحدد الترميز الافتراضي وغالباً يبقى "utf8".[rule]: يحدد مسار ملف قواعد التقطيع.[dict]: يحدد مسار ملف القاموس المستخدم للتقطيع. يمكنك تحديد عدة قواميس مفصولة بفواصل.
الاستخدام الأساسي: أداة سطر الأوامر
يوفر SCWS أداة قوية لسطر الأوامر باسم scws، تتيح لك اختبار تقطيع النصوص مباشرة في الطرفية أو إجراء معالجة جماعية للنصوص. تم تضمين الملف التنفيذي مع ServBay في مجلد bin وغالباً ما يتم إضافة المسار /Applications/ServBay/bin إلى متغير PATH تلقائياً، ما يسمح لك بكتابة الأمر مباشرة في الطرفية.
أمثلة على تنفيذ التقطيع
فيما يلي أمثلة أساسية على استخدام أداة سطر أوامر scws:
تقطيع نص مباشر
يمكنك تمرير النص بشكل مباشر عبر الأنابيب إلى أداة scws:
bash
echo "这是一个中文分词的例子" | scws -i1
تقطيع نص من ملف
استخدم الخيار -i لتحديد ملف الإدخال، و -o لملف الإخراج:
bash
scws -i input.txt -o output.txt1
استخدام قواعد تقطيع مخصصة
حدد ملف القواعد عبر الخيار -r:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini1
تحديد قاموس مخصص
استخدم الخيار -d لتحديد ملف القاموس:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb1
استخدامات متقدمة
بناء قاموس مخصص
لرفع دقة التقطيع، خاصة للمصطلحات التقنية، الأسماء أو الكلمات الجديدة، يمكنك إعداد قاموس مخصص. يستخدم SCWS قواميس بصيغة xdb عالية الأداء. وبرنامج ServBay يوفر أداة scws-gen لتحويل قائمة كلمات نصية إلى صيغة xdb.
خطوات إعداد القاموس المخصص:
أنشئ ملف نصي مثلاً باسم
custom_dict.txt، بحيث يحتوي كل سطر على كلمة واحدة، ويمكن أن تتبعها درجة أولوية (وزن) اختيارية:ServBay 10 بيئة تطوير محلية 8 تقطيع كلمات صينية 91
2
3استخدم أداة
scws-genلتحويل القاموس إلى صيغة xdb:bashscws-gen -i custom_dict.txt -o custom_dict.xdb1في ملف scws.ini الموجود في
/Applications/ServBay/etc/scws/scws.ini، أضف مسار القاموس الخاص بك إلى نهاية قائمة القواميس في قسم[dict]، مفصول بفاصلة:ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb1
2تأكد من أن
/path/to/your/custom_dict.xdbيشير إلى القاموس الذي تريده فعلياً.
تعديل قواعد التقطيع
ملف القواعد (عادةً /Applications/ServBay/etc/scws/rules.ini) يحدد كيف يتعامل SCWS مع التركيبات المعقدة أو وجود غموض لغوي في النص الصيني. التعديل يتطلب فهماً جيداً لخوارزميات التقطيع. في معظم الحالات، استخدام القواعد الافتراضية مع القواميس المخصصة يكفي للاحتياجات الشائعة. وإن احتجت لتعديل ملف القواعد، يرجى الحذر واستشارة توثيق SCWS الرسمي.
مثال على ملف قواعد بسيط:
ini
[rule]
# يمكن إضافة قواعد تقطيع مخصصة هنا
# مثال: تعريف قاعدة بسيطة
# pattern = result1
2
3
4
2
3
4
استخدام SCWS من PHP
لمطوري تطبيقات الويب بلغة PHP، توفر ServBay امتداد SCWS ضمن بيئة PHP المعدة مسبقاً. ما يعني أنك لست بحاجة لتنصيب أو ضبط الامتداد، ويمكنك استخدام API الخاص بـ SCWS مباشرة ضمن كود PHP الخاص بك.
يمكنك التأكد من تفعيل امتداد SCWS بزيارة صفحة phpinfo() في ServBay.
مثال على الاستخدام
فيما يلي مثال عملي حول كيفية تقطيع نص صيني بـ SCWS من خلال كود PHP:
php
<?php
// تحقق من تحميل امتداد SCWS
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// النص المراد تقطيعه
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// فتح مثيل لتقطيع SCWS
$sh = scws_open();
// تعيين الترميز، عادةً مطابقة لترميز النص
scws_set_charset($sh, 'utf8');
// تعيين مسار القاموس وملف القواعد
// تأكد أن هذه المسارات تطابق ملفات SCWS داخل بيئة ServBay
$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);
// إرسال النص المراد تقطيعه
scws_send_text($sh, $text);
// الحصول على النتائج
echo "النص الأصلي: " . $text . "\n";
echo "نتيجة التقطيع:\n";
// تكرار وطباعة النتائج
// $res مصفوفة تحتوي على معلومات كل كلمة مقطعة
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// طباعة الكلمة
echo $word_info['word'] . " ";
// يمكن أيضاً طباعة النوع أو الوزن مثلاً:
// echo "كلمة: " . $word_info['word'] . ", نوع: " . $word_info['attr'] . ", وزن: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// إغلاق المثيل وتحرير الموارد
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 وضعه داخل جذر أحد مواقعك في ServBay – مثلاً /Applications/ServBay/www/servbay.demo/ (على افتراض وجود موقع باسم servbay.demo) – ثم الوصول إليه عبر المتصفح أو تنفيذ الملف من الطرفية لمطالعة النتائج.
أهم الدوال في امتداد SCWS للـ PHP
إليك أهم دوال SCWS ضمن امتداد PHP:
scws_open(): ينشئ مثيلاً جديداً لتقطيع النص. يعيد كائن المورد عند النجاح أوfalseعند الفشل.scws_set_charset($sh, $charset): يحدد ترميز المثيل.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT): يحدد مسار القاموس. الخيار$modeيحدد النوع ويفضل استخدام ملفات xdb.scws_set_rule($sh, $rule_path): يحدد مسار ملف القواعد.scws_send_text($sh, $text): يرسل النص المراد تقطيعه.scws_get_result($sh): يجلب نتائج التقطيع على شكل مصفوفة تفاصيل لكل كلمة حتى ينتهي ويعيد false.scws_close($sh): يغلق المثيل ويحرر الموارد.
ولمزيد من الوظائف البرمجية المتقدمة مثل التجاهل علامات الترقيم، أو أنماط التقطيع، أو أوزان الكلمات، راجع توثيق امتداد SCWS لـ PHP.
الأسئلة الشائعة (FAQ)
1. النتائج غير دقيقة؟
- الحل: أولاً تأكد من صحة مسارات القاموس (dict) وملف القواعد (rule) في ملف الإعداد
/Applications/ServBay/etc/scws/scws.ini، وتوفر هذه الملفات وصلاحية قراءتها. لمجالات متخصصة أو كلمات جديدة يفضّل توليد قاموس مخصص (بواسطةscws-genلصيغة xdb) وإضافته في الإعدادات. في بعض الحالات المتقدمة قد تفيد إعادة ضبط أوزان الكلمات أو القواعد.
2. أداء SCWS بطيء؟
- الحل: تأكد أن SCWS يستخدم قواميس صيغة xdb فقط لا ملفات نصية قديمة، فهذه الأخيرة أبطأ. عدل إعداد dict ليشير إلى xdb. للنصوص الكبيرة جداً، فكّر في تقسيمها دفعات.
3. أداة سطر الأوامر لا تعمل أو يعطي رسالة أن الأمر غير موجود؟
- الحل: غالباً السبب هو عدم إضافة مسار ملفات ServBay التنفيذية إلى PATH. استخدم المسار الكامل مثل
/Applications/ServBay/bin/scws -i ...، أو أضف/Applications/ServBay/binإلى ملف إعدادات الطرفية الخاص بك (~/.bash_profile،~/.zshrcإلخ) ثم أعد فتح الطرفية.
4. لا يمكن استدعاء scws_open() من PHP أو الدالة غير موجودة؟
- الحل: يعني أن امتداد SCWS غير محمّل داخل بيئة PHP التابعة لـ ServBay. تحقق من إصدار PHP المستخدم عبر لوحة تحكم ServBay، ثم افتح صفحة phpinfo() وتأكد من وجود امتداد scws مفعل. إذا لم يكن ظاهراً، افحص السطر
extension=scws.soفي ملف الإعدادphp.iniالخاص بذلك الإصدار وتأكّد من وجود ملفscws.soفي مجلد الامتدادات (ServBay يقوم بضبطها تلقائياً). إذا استمر الإشكال جرب إعادة تشغيل خدمات ServBay.
الخلاصة
SCWS هو نظام تقطيع كلمات صيني قوي وعالي الكفاءة. من خلال حزم ServBay والموديول البرمجي الجاهز للـ PHP، يمكن للمطورين إعداد واستخدام SCWS ببساطة على macOS سواء عبر سطر الأوامر لمعالجة النصوص أو ضمن تطبيقات PHP لتقطيع النصوص بشكل ديناميكي. باتباع هذا الدليل ستتمكن من البدء بسرعة ودمج SCWS في مشاريعك، لتعزيز القدرات في معالجة وتحليل النص الصيني.
