ServBay’de SCWS Çinçe Kelime Ayrımı: Kurulum, Yapılandırma ve Kullanım Kılavuzu
ServBay, güçlü bir yerel Web geliştirme ortamı olarak birçok yaygın geliştirici aracını ve paketini bütünleşik olarak sunar. SCWS (Simple Chinese Word Segmentation), Çince metin işlerken (örneğin arama motorları, doğal dil işlemesi, içerik analizi gibi) büyük önem taşır. ServBay, SCWS ve onun PHP modülünü sizin için önceden kurmuş olarak gelir, böylece zahmetli bir kurulum gerekmez. Bu makale, ServBay ortamında SCWS’nin nasıl yapılandırılıp kullanılacağına dair ayrıntılı bir rehber sunar; hem komut satırı aracıyla hem de PHP API üzerinden kullanımı örneklerle anlatılmaktadır.
Genel Bakış
SCWS, yüksek performanslı bir Çinçe kelime ayrım kütüphanesidir; özellikle büyük miktarlarda Çince metnin hızlı ve hassas şekilde ayrılması gereken uygulamalar için uygundur. Birçok segmentasyon modu, özelleştirilebilir sözlük ve kural desteği sunar; bu da onu Çinçe arama motorları, içerik öneri sistemleri ve metin analizleri gibi projeler için temel bir araç haline getirir. ServBay, SCWS'yi kendi paketlerine entegre eder ve önceden derlenmiş PHP uzantısını sağlar; bu sayede yerel geliştirme ortamınızda SCWS’yi kullanmanız fazlasıyla kolaylaşır.
Ön Koşullar
- macOS işletim sisteminde ServBay'in başarıyla kurulu ve çalışıyor olması gerekir.
Kurulum ve Yapılandırma
Kurulum
ServBay’in temel felsefesi, geliştiricilere hızlıca kullanılabilecek bir ortam sunmaktır. SCWS, önemli bir Çinçe metin işleme aracı olarak ServBay'e önceden dahil edilmiştir. Ekstra bir indirme veya derleme işlemi olmadan doğrudan kullanabilirsiniz. İlgili çalıştırılabilir dosyalar, yapılandırma dosyaları ve sözlükler, ServBay’in kurulum dizininde yer alır. Varsayılan yol genellikle /Applications/ServBay/ şeklindedir.
Yapılandırma
SCWS'nin varsayılan yapılandırma dosyası, ServBay kurulum klasörünüzde /Applications/ServBay/etc/scws/scws.ini yolundadır. Gerekirse bu dosyayı değiştirerek SCWS’nin kelime ayrım davranışını, karakter kodlamasını, sözlüğünü ve kural ayarlarını kişiselleştirebilirsiniz.
Varsayılan yapılandırma dosyası örneği:
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]: Varsayılan karakter setini gösterir, genellikleutf8kalmasında fayda vardır.[rule]: Kullanılacak kelime ayrım kural dosyasının yolunu tanımlar.[dict]: Sözlük dosyasının yolunu tanımlar. Birden fazla sözlük belirtilecekse aralarına virgül,konur.
Temel Kullanım: Komut Satırı Aracı
SCWS, metin segmentasyonu testleri ya da toplu işlemler için kullanılabilecek güçlü bir scws komut satırı aracı sunar. ServBay, scws çalıştırılabilir dosyasını kendi bin klasörüne dahil eder. Genellikle /Applications/ServBay/bin dizini zaten sistemin PATH değişkenine eklenmiş olur; dolayısıyla terminalde doğrudan scws komutunu kullanabilirsiniz.
Segmentasyon Örnekleri
Aşağıda, scws komut satırı aracı temel kullanım örnekleri sunulmuştur:
Bir Dizeyi Segmentlere Ayırma
Bir metin dizesini boru (pipe) aracılığıyla scws komutuna iletebilirsiniz:
bash
echo "这是一个中文分词的例子" | scws -i1
Dosyadan Metin Okuyarak Segmentasyon
-i parametresiyle giriş dosyası, -o ile çıkış dosyası belirtilebilir:
bash
scws -i input.txt -o output.txt1
Segmentasyon Kuralı Belirtmek
Kendi özel kural dosyanızın yolunu -r ile belirtebilirsiniz:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini1
Sözlük Belirlemek
Kendi özel sözlüğünüzün yolunu -d ile belirleyebilirsiniz:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb1
İleri Seviye Kullanım
Özel Sözlük Oluşturma
Yüksek doğruluk için, özellikle sektör terimleri, özel isimler ya da yeni kelimeler için kendi sözlüğünüzü oluşturabilirsiniz. SCWS, verimli xdb formatında sözlükleri destekler. ServBay’in sağladığı scws-gen aracıyla metin formatındaki sözlükleri xdb biçimine çevirebilirsiniz.
Özel Sözlük Oluşturma Adımları:
Bir metin dosyası oluşturun, örneğin
custom_dict.txt. Her satıra bir kelime, isteğe bağlı olarak sonuna bir boşluk ve kelime ağırlığı (öncelik değeri) eklenebilir:ServBay 10 Yerel geliştirme ortamı 8 Çinçe kelime ayrımı 91
2
3scws-genaracı ilexdbformatında bir sözlük oluşturun. Bu araç da ServBay’inbinklasöründedir.bashscws-gen -i custom_dict.txt -o custom_dict.xdb1SCWS’nin
/Applications/ServBay/etc/scws/scws.iniyapılandırma dosyasında[dict]bölümünü düzenleyin. Kendi sözlüğünüzün yolunu, varsayılan sözlükten sonra virgül,ile ekleyin.ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb1
2/path/to/your/custom_dict.xdbkısmı gerçek sözlük dosyanızın yoluyla değiştirilmelidir.
Kelime Ayrım Kurallarını Ayarlama
Kelime ayrım kural dosyası (varsayılan olarak /Applications/ServBay/etc/scws/rules.ini), SCWS’nin karmaşık veya belirsiz Çinçe yapılar üzerindeki davranışını tanımlar. Kural dosyasını düzenlemek SCWS algoritmasını detaylıca anlamayı gerektirir. Çoğu kullanıcı için varsayılan kurallar ve özel sözlükler yeterlidir. Kuralları değiştirmek istiyorsanız dikkatli olun ve eğer ServBay ile gelen SCWS sürümünde dokümantasyon varsa, kural dosyası formatına göz atın.
Örnek bir kural dosyası (genelde bazı desen eşleme kuralları içerir):
ini
[rule]
# Kendi kelime ayrım kurallarınızı buraya ekleyebilirsiniz
# Örnek: Basit bir kural tanımlama
# pattern = result1
2
3
4
2
3
4
PHP API Kullanımı
PHP ile Web uygulaması geliştirenler için, ServBay’ın önceden kurduğu PHP ortamında SCWS uzantısı da hazır olarak sunuluyor. Yani ayrı bir kurulum veya yapılandırmaya gerek kalmadan, doğrudan PHP kodunuzda SCWS API’sini kullanarak Çinçe kelime ayrımı işlemlerini gerçekleştirebilirsiniz.
phpinfo() sayfasını ziyaret ederek SCWS uzantısının yüklü olup olmadığını kontrol edebilirsiniz.
Kullanım Örneği
Aşağıda SCWS API ile kelime ayrımı kullanılan basit bir PHP kod örneği verilmiştir:
php
<?php
// SCWS uzantısının yüklü olduğundan emin olun
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// Segmentasyona tabi tutulacak metin
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// SCWS örneğini açın
$sh = scws_open();
// Karakter setini ayarlayın, genellikle kullandığınız metin kodlamasına uygun olur
scws_set_charset($sh, 'utf8');
// Sözlük ve kural dosyası yollarını ayarlayın
// Yolun ServBay içinde doğru olduğundan emin olun
$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);
// Metni SCWS örneğine gönderin
scws_send_text($sh, $text);
// Sonuçları alın
echo "Orijinal Metin: " . $text . "\n";
echo "Segmentasyon Sonucu:\n";
// Kelime segmentasyon sonuçlarını döngüyle yazdırın
// $res, kelimeler ve POS bilgisi gibi detaylar içeren bir dizidir
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Sadece kelimeyi yazdır
echo $word_info['word'] . " ";
// İsterseniz kelime tipi ve ağırlığını da yazdırabilirsiniz:
// echo "Kelime: " . $word_info['word'] . ", Tip: " . $word_info['attr'] . ", Ağırlık: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// SCWS örneğini kapatıp kaynakları serbest bırakı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
Bu kodu bir .php dosyası olarak kaydedebilirsiniz, örneğin segment_test.php. Dosyayı ServBay’in site ana dizini olan /Applications/ServBay/www/servbay.demo/ altına koyarak (örneğin servbay.demo adında bir site yapılandırmanız varsa), tarayıcı üzerinden veya PHP CLI ile terminalde çalıştırarak kelime ayrımı sonuçlarını görebilirsiniz.
Temel Fonksiyonlar
Aşağıda SCWS PHP uzantısındaki başlıca çekirdek fonksiyonlar listelenmiştir:
scws_open(): Yeni bir SCWS örneği başlatır ve kaynak tutamacı döndürür, hata durumundafalsedöner.scws_set_charset($sh, $charset):$shörneği için karakter setini ayarlar.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT):$shörneği için sözlük yolunu tanımlar.$mode, sözlük formatını belirtir;SCWS_XDICT_TXTmetin formatını (artık önerilmiyor,xdbtavsiye edilir) gösterir, genellikle direkt olarakxdbdosya yolu kullanılır.scws_set_rule($sh, $rule_path):$shörneği için kural dosyası yolunu belirtir.scws_send_text($sh, $text):$shörneğine segmentasyona gönderilecek metni iletir.scws_get_result($sh):$shörneğinden segmentasyon sonuçlarını alır. Her çağrıda bir grup kelimeyle ilgili detaylı bir dizi döner, işlem tamamlanıncafalsedöner.scws_close($sh): SCWS örneğini kapatır ve ilgili kaynakları serbest bırakır.
Daha gelişmiş fonksiyonlar (noktalama işaretlerini yok sayma, segmentasyon modunu değiştirme, kelime ağırlıklarını alma vb.) için SCWS PHP uzantısının resmi dokümantasyonunu kontrol edebilirsiniz.
Sıkça Sorulan Sorular (SSS)
1. SCWS segmentasyon sonuçlarım doğru değil, ne yapmalıyım?
- Çözüm: Öncelikle
/Applications/ServBay/etc/scws/scws.iniyapılandırma dosyasındaki sözlük (dict) ve kural (rule) dosya yollarını kontrol edin; bu dosyaların bulunduğundan ve okunabilir olduğundan emin olun. Alanınıza özel metinler veya yeni kelimeler için, kendi özel sözlüğünüzü oluşturup (vescws-genilexdbbiçimine çevirip) yapılandırma dosyasına gerekli eklemeyi yapabilirsiniz. Sözlük ağırlıkları veya kuralları değiştirmek de işe yarayabilir, fakat bunun için daha derin bilgi gerekir.
2. SCWS performansı düşük, segmentasyon yavaş mı çalışıyor?
- Çözüm: SCWS’nin eski metin formatı yerine optimize edilmiş
xdbformatındaki sözlüğü kullandığından emin olun.xdbsözlükler hızlı yüklenir ve sorgulanır. Yapılandırma dosyasında sözlük belirtilirken yolun doğrudan birxdbdosyasına işaret ettiğinden emin olun. Çok büyük metinlerle çalışırken, işlemi parçalara bölmeyi düşünebilirsiniz.
3. SCWS komut satırı aracı çalışmıyor ya da komut bulunamıyor hatası alıyorum?
- Çözüm: Genellikle, ServBay’in çalıştırılabilir dosya dizini sisteminizin PATH değişkenine eklenmediğinde bu sorun ortaya çıkar. Komutu tam yol kullanarak deneyin:
/Applications/ServBay/bin/scws -i .... Alternatif olarak,/Applications/ServBay/binklasörünü shell yapılandırma dosyanıza (örneğin~/.bash_profile,~/.zshrcgibi) PATH olarak ekleyin ve terminali yeniden açın veya yapılandırmayı yeniden yükleyin.
4. PHP’de scws_open() hata veriyor veya fonksiyon bulunamıyor?
- Çözüm: Bu durumda, SCWS PHP uzantısı ServBay’in PHP ortamında yüklenmemiş demektir. Kullandığınız PHP sürümünü ServBay kontrol panelinden doğrulayın ve o sürüme ait
phpinfo()sayfasını açarakscwsuzantısının etkin olup olmadığını inceleyin (ServBay genellikle hızlı bir erişim sunar). Uzantı yoksa, ServBay’in PHP yapılandırma dosyasında (php.ini)extension=scws.sosatırının olup olmadığını vescws.sodosyasının PHP uzantı klasöründe yer aldığını kontrol edin (ServBay bunları önceden kurulu getirir). Sorun devam ederse ServBay’i yeniden başlatmayı deneyin.
Sonuç
SCWS, güçlü ve etkili bir Çinçe kelime ayrım sistemidir. ServBay’in önceden bütünleşik paketi ve PHP uzantısı sayesinde, geliştiriciler macOS ortamında kolayca SCWS’yi kurabilir, yapılandırabilir ve kullanabilirler. Komut satırı araçlarıyla toplu metin işlemeden PHP uygulamalarında dinamik kelime ayrımına kadar çeşitli senaryolarda bu rehber sayesinde SCWS’yi projenizde hemen kullanarak Çinçe metin işleme kabiliyetinizi artırabilirsiniz.
