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:
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb
2
3
4
5
6
7
8
[charset]
: Varsayılan karakter setini gösterir, genellikleutf8
kalması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:
echo "这是一个中文分词的例子" | scws -i
Dosyadan Metin Okuyarak Segmentasyon
-i
parametresiyle giriş dosyası, -o
ile çıkış dosyası belirtilebilir:
scws -i input.txt -o output.txt
Segmentasyon Kuralı Belirtmek
Kendi özel kural dosyanızın yolunu -r
ile belirtebilirsiniz:
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
Sözlük Belirlemek
Kendi özel sözlüğünüzün yolunu -d
ile belirleyebilirsiniz:
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
İ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ı 9
1
2
3scws-gen
aracı ilexdb
formatında bir sözlük oluşturun. Bu araç da ServBay’inbin
klasöründedir.bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1SCWS’nin
/Applications/ServBay/etc/scws/scws.ini
yapı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.xdb
1
2/path/to/your/custom_dict.xdb
kı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):
[rule]
# Kendi kelime ayrım kurallarınızı buraya ekleyebilirsiniz
# Örnek: Basit bir kural tanımlama
# pattern = result
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
// 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);
?>
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 durumundafalse
dö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_TXT
metin formatını (artık önerilmiyor,xdb
tavsiye edilir) gösterir, genellikle direkt olarakxdb
dosya 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ıncafalse
dö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.ini
yapı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-gen
ilexdb
biç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ş
xdb
formatındaki sözlüğü kullandığından emin olun.xdb
sözlükler hızlı yüklenir ve sorgulanır. Yapılandırma dosyasında sözlük belirtilirken yolun doğrudan birxdb
dosyası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/bin
klasörünü shell yapılandırma dosyanıza (örneğin~/.bash_profile
,~/.zshrc
gibi) 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çarakscws
uzantı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.so
satırının olup olmadığını vescws.so
dosyası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.