Sid Gifari File Manager
π Root
/
home
/
genremedia08
/
musicjukebox.overlookedtracks.com
/
vendor
/
teamtnt
/
tntsearch
/
src
/
Stemmer
/
Editing: UkrainianStemmer.php
<?php namespace TeamTNT\TNTSearch\Stemmer; /** * Semple stemmer for ukrainian language */ class UkrainianStemmer implements Stemmer { private static $VOWEL = '/Π°Π΅ΠΈΠΎΡΡΡΡΡΡ/u'; /* http://uk.wikipedia.org/wiki/ΠΠΎΠ»ΠΎΡΠ½ΠΈΠΉ_Π·Π²ΡΠΊ */ // var $PERFECTIVEGROUND = '/((ΠΈΠ²|ΠΈΠ²ΡΠΈ|ΠΈΠ²ΡΠΈΡΡ|ΡΠ²|ΡΠ²ΡΠΈ|ΡΠ²ΡΠΈΡΡ((?<=[Π°Ρ])(Π²|Π²ΡΠΈ|Π²ΡΠΈΡΡ)))$/'; private static $PERFECTIVEGROUND = '/(ΠΈΠ²|ΠΈΠ²ΡΠΈ|ΠΈΠ²ΡΠΈΡΡ|ΡΠ²|ΡΠ²ΡΠΈ|ΡΠ²ΡΠΈΡΡ((?<=[Π°Ρ|Ρ])(Π²|Π²ΡΠΈ|Π²ΡΠΈΡΡ)))$/u'; private static $REFLEXIVE = '/(Ρ[ΡΡΠΈ])$/u'; // http://uk.wikipedia.org/wiki/Π Π΅ΡΠ»Π΅ΠΊΡΠΈΠ²Π½Π΅_Π΄ΡΡΡΠ»ΠΎΠ²ΠΎ private static $ADJECTIVE = '/(ΠΈΠΌΠΈ|ΡΠΉ|ΠΈΠΉ|Π°|Π΅|ΠΎΠ²Π°|ΠΎΠ²Π΅|ΡΠ²|Ρ|ΡΠΉ|ΡΡ|Π΅Ρ|Ρ|ΡΠΌ|Π΅ΠΌ|ΠΈΠΌ|ΡΠΌ|ΠΈΡ |ΡΡ |ΠΎΡ|ΠΉΠΌΠΈ|ΡΠΌΠΈ|Ρ|Ρ|ΠΎΠ³ΠΎ|ΠΎΠΌΡ|ΠΎΡ)$/u'; //http://uk.wikipedia.org/wiki/ΠΡΠΈΠΊΠΌΠ΅ΡΠ½ΠΈΠΊ + http://wapedia.mobi/uk/ΠΡΠΈΠΊΠΌΠ΅ΡΠ½ΠΈΠΊ private static $PARTICIPLE = '/(ΠΈΠΉ|ΠΎΠ³ΠΎ|ΠΎΠΌΡ|ΠΈΠΌ|ΡΠΌ|Π°|ΡΠΉ|Ρ|ΠΎΡ|ΡΠΉ|Ρ|ΠΈΡ |ΠΉΠΌΠΈ|ΠΈΡ )$/u'; //http://uk.wikipedia.org/wiki/ΠΡΡΠΏΡΠΈΠΊΠΌΠ΅ΡΠ½ΠΈΠΊ private static $VERB = '/(ΡΡ|ΡΡ|ΠΈΠ²|Π°ΡΡ|ΡΡΡ|Ρ|Ρ|Π°Π²|Π°Π»ΠΈ|ΡΡΠΈ|ΡΡΠΈ|Π²ΡΠΈ|ΡΠΈ|Π΅|ΠΌΠ΅|Π°ΡΠΈ|ΡΡΠΈ|Ρ)$/u'; //http://uk.wikipedia.org/wiki/ΠΡΡΡΠ»ΠΎΠ²ΠΎ private static $NOUN = '/(Π°|Π΅Π²|ΠΎΠ²|Π΅|ΡΠΌΠΈ|Π°ΠΌΠΈ|Π΅ΠΈ|ΠΈ|Π΅ΠΉ|ΠΎΠΉ|ΠΈΠΉ|ΠΉ|ΠΈΡΠΌ|ΡΠΌ|ΠΈΠ΅ΠΌ|Π΅ΠΌ|Π°ΠΌ|ΠΎΠΌ|ΠΎ|Ρ|Π°Ρ |ΠΈΡΡ |ΡΡ |Ρ|Ρ|ΠΈΡ|ΡΡ|Ρ|ΠΈΡ|ΡΡ|Ρ|Ρ|ΠΎΠ²Ρ|Ρ|Π΅Ρ|ΡΡ|ΠΎΡ|Ρ|Π΅Π²Ρ|Π΅ΠΌ|ΡΠΌ|ΡΠ²|ΡΠ²|\'Ρ)$/u'; //http://uk.wikipedia.org/wiki/ΠΠΌΠ΅Π½Π½ΠΈΠΊ private static $RVRE = '/^(.*?[Π°Π΅ΠΈΠΎΡΡΡΡΡΡ])(.*)$/u'; private static $DERIVATIONAL = '/[^Π°Π΅ΠΈΠΎΡΡΡΡΡΡ][Π°Π΅ΠΈΠΎΡΡΡΡΡΡ]+[^Π°Π΅ΠΈΠΎΡΡΡΡΡΡ]+[Π°Π΅ΠΈΠΎΡΡΡΡΡΡ].*(?<=ΠΎ)ΡΡΡ?$/u'; private static function s(&$s, $re, $to) { $orig = $s; $s = preg_replace($re, $to, $s); return $orig !== $s; } private static function m($s, $re) { return preg_match($re, $s); } public static function stem($word) { $word = mb_strtolower($word); $stem = $word; do { if (!preg_match(self::$RVRE, $word, $p)) { break; } $start = $p[1]; $RV = $p[2]; if (!$RV) { break; } // Step 1 if (!self::s($RV, self::$PERFECTIVEGROUND, '')) { self::s($RV, self::$REFLEXIVE, ''); if (self::s($RV, self::$ADJECTIVE, '')) { self::s($RV, self::$PARTICIPLE, ''); } else { if (!self::s($RV, self::$VERB, '')) { self::s($RV, self::$NOUN, ''); } } } // Step 2 self::s($RV, '/[ΠΈ|i]$/u', ''); // Step 3 if (self::m($RV, self::$DERIVATIONAL)) { self::s($RV, '/ΡΡΡ?$/u', ''); } // Step 4 if (!self::s($RV, '/Ρ$/u', '')) { self::s($RV, '/Π΅ΠΉΡΠ΅?/u', ''); self::s($RV, '/Π½Π½$/u', 'Π½'); } $stem = $start . $RV; } while (FALSE); return $stem; } }
Save
Cancel