Son günlerde üzerinde çalıştığım bir projede Text Mining ile ilgili daha derin araştırmalar yapmaya ihtiyaç duyuyorum. İngilizcede Stop words elemek çok kolay, çünkü büyük-küçük harf duyarlığı devre dışı kaldıktan sonra hiç bir programlama dilinde kelimeyi yakalama ihtimaliniz düşmez. Bu Türkçe için böyle değildir. Türkçe karakterler bazı programlama dillerinde özel işlemler gerektirebiliyor. örn php Mutlibyte String eklentisini sunuyor. işlemlerimizi bu kütüphane ile yaptığımız sürece unicode sorunu yaşamıyoruz. mb_string eklentisinin kurulumu için şurayı ziyaret edebilirsiniz.Multibyte işlemler dışında yine istisnai durumlarımız olabildiği için bu eklentiği kullanmadan regular expression yardımıyla bir filter hazırladım. bu kütüphanemizin de programlanabilmesini sağladı ve tadından yenmez oldu. şimdi bir örnek verelim. Elemek istediğimiz kelime “bir” olsun. büyük-küçük harf duyarlılığını kaldırdığımızda “BIR” kelimesi de elenecektir. Türkçede bu kelimeler aynı değil! bir ve BİR aynı olabilir ancak. Her kelime için ayrı bir istisna sinsilesi olabileceği için ben de regexpe başvurdum.
Statik Stopwords Datamız:
0 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 | class stopWords { public static $stopwords = array( 'il[ae]', 'ke[sş]ke', 'z?([haeiu][haeiu]?)+', 'mal', 'aptal', 'https?\:\/\/[^\s\"\<]+', 'B[iİ]r', 'the', 'g[o]+l', 'you', '[İi][cç]in', 'his', 'ilk', 'iyi', 'and', '[cç]ok', 'yok', 'gibi', 'ama', 'ma[çc]', 'her', 'var', 'bizim' ); public static function FILTER_STOP_WORDS($word) { foreach(self::$stopwords as $pattern) { if(preg_match('/^' . $pattern . '$/i',$word)) { return false; } } return true; } } # 3. elemanımız çok komik her gülmeyi yakaladı, dışında kalan birşey bulamadım (: (örnek : zuahaha zhhhh zihihi hiihi haah eheheh ahehehaeh ) bunların hepsini silebildim. |
Elbette liste bununla sınırlı değil siz geliştirip , gruplandırıp desenler arttırabilirsiniz bir metin filtreleme örneği de verelim
0 1 2 3 4 | $text = "Tufan attı ve goooooooooooool hahahaha zuahaha "; $words = explode(' ',$text); $words = array_filter($words,'stopWords::FILTER_STOP_WORDS'); $text = implode(' ',$words); # cıktı : "Tufan attı" |
gol kelimesini ben eledim projemde bilgidğin stop word kategorisine giriyor bu (: siz özelleştirip gelitşirebilirsiinz
iyi çalışmalar,







