Created
June 3, 2018 12:50
-
-
Save Hackwar/07d51d81899da96fc0d785c61ed3178f to your computer and use it in GitHub Desktop.
Greek stemmer for Joomla com_finder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @package Joomla.Administrator | |
* @subpackage com_finder | |
* | |
* @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved. | |
* @license GNU General Public License version 2 or later; see LICENSE.txt | |
*/ | |
/* | |
* Copyright (c) 2009 Vassilis Spiliopoulos (http://www.psychfamily.gr), | |
* Pantelis Nasikas under GNU General Public License Version 3 | |
* Updated for Drupal 6, 7 and Drupal 8 by | |
* Yannis Karampelas (info@netstudio.gr) in 2011 and 2017 respectively. | |
* This is a port of the php implementation of | |
* Spyros Saroukos into Drupal CMS. Spyros Saroukos implementation | |
* was based on the work of Panos Kyriakakis (http://www.salix.gr) and | |
* Georgios Ntais (Georgios.Ntais@eurodyn.com) | |
* Georgios firstly developed the stemmer's javascript implementation for his | |
* master thesis at Royal Institute of Technology [KTH], Stockholm Sweden | |
* http://www.dsv.su.se/~hercules/papers/Ntais_greek_stemmer_thesis_final.pdf | |
* | |
* !!!!!The encoding of this file is iso-8859-7 instead of UTF-8 on purpose!!!!!!! | |
*/ | |
defined('_JEXEC') or die; | |
/** | |
* Greek language support class for the Finder indexer package. | |
* | |
* @since __DEPLOY_VERSION__ | |
*/ | |
class FinderIndexerLanguageel_GR extends FinderIndexerLanguage | |
{ | |
/** | |
* Method to stem a token. | |
* | |
* @param string $token The token to stem. | |
* | |
* @return string The stemmed token. | |
* | |
* @since __DEPLOY_VERSION__ | |
*/ | |
public function stem($word) | |
{ | |
$w = $word; | |
$numberOfRulesExamined = 0; //this is the number of rules examined. for deubugging and testing purposes | |
// it is better to convert the input into iso-8859-7 in case it is in utf-8 | |
// this way we dont have any problems with length counting etc | |
$encoding_changed= FALSE; | |
$w_CASE=array(strlen($w));//1 for changed case in that position, 2 especially for Ï‚ | |
//first we must find all letters that are not in Upper case and store their position | |
$unacceptedLetters=array("α","β","γ","δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","Ï€","Ï","σ","Ï„","Ï…","φ","χ","ψ","ω","ά","Î","ή","ί","ÏŒ","Ï","Ï‚","ÏŽ","ÏŠ"); | |
$acceptedLetters=array("Α","Î’","Γ","Δ","Ε","Ζ","Η","Θ","Ι","Κ","Λ","Îœ","Î","Ξ","Ο","Î ","Ρ","Σ","Τ","Î¥","Φ","Χ","Ψ","Ω","Α","Ε","Η","Ι","Ο","Î¥","Σ","Ω","Ι"); | |
for($k=0;$k<=32;$k=$k+1){ | |
for ($i=0;$i<=strlen($w)-1;$i++){ | |
if($w[$i]==$unacceptedLetters[$k]) | |
{ | |
if ($w[$i]=="ς"){$w[$i]="Σ";$w_CASE[$i]=2;} | |
else{$w[$i]=$acceptedLetters[$k]; | |
$w_CASE[$i]="1";} | |
} | |
} | |
} | |
//stop-word removal | |
$numberOfRulesExamined++; | |
$stop_words='/^(ΕΚΟ|ΑΒΑ|ΑΓΑ|ΑΓΗ|ΑΓΩ|ΑΔΗ|ΑΔΩ|ΑΕ|ΑΕΙ|ΑΘΩ|ΑΙ|ΑΙΚ|ΑΚΗ|ΑΚΟΜΑ|ΑΚΟΜΗ|ΑΚΡΙΒΩΣ|ΑΛΑ|ΑΛΗΘΕΙΑ|ΑΛΗΘΙÎΑ|ΑΛΛΑΧΟΥ|ΑΛΛΙΩΣ|ΑΛΛΙΩΤΙΚΑ|ΑΛΛΟΙΩΣ|ΑΛΛΟΙΩΤΙΚΑ|ΑΛΛΟΤΕ|ΑΛΤ|ΑΛΩ|ΑΜΑ|ΑΜΕ|ΑΜΕΣΑ|ΑΜΕΣΩΣ|ΑΜΩ|ΑÎ|ΑÎΑ|ΑÎΑΜΕΣΑ|ΑÎΑΜΕΤΑΞΥ|ΑÎΕΥ|ΑÎΤΙ|ΑÎΤΙΠΕΡΑ|ΑÎΤΙΣ|ΑÎΩ|ΑÎΩΤΕΡΩ|ΑΞΑΦÎΑ|ΑΠ|ΑΠΕÎΑÎΤΙ|ΑΠΟ|ΑΠΟΨΕ|ΑΠΩ|ΑΡΑ|ΑΡΑΓΕ|ΑΡΕ|ΑΡΚ|ΑΡΚΕΤΑ|ΑΡΛ|ΑΡΜ|ΑΡΤ|ΑΡΥ|ΑΡΩ|ΑΣ|ΑΣΑ|ΑΣΟ|ΑΤΑ|ΑΤΕ|ΑΤΗ|ΑΤΙ|ΑΤΜ|ΑΤΟ|ΑΥΡΙΟ|ΑΦΗ|ΑΦΟΤΟΥ|ΑΦΟΥ|ΑΧ|ΑΧΕ|ΑΧΟ|ΑΨΑ|ΑΨΕ|ΑΨΗ|ΑΨΥ|ΑΩΕ|ΑΩΟ|ΒΑÎ|ΒΑΤ|ΒΑΧ|ΒΕΑ|ΒΕΒΑΙΟΤΑΤΑ|ΒΗΞ|ΒΙΑ|ΒΙΕ|ΒΙΗ|ΒΙΟ|ΒΟΗ|ΒΟΩ|ΒΡΕ|ΓΑ|ΓΑΒ|ΓΑΡ|ΓΕÎ|ΓΕΣ||ΓΗ|ΓΗÎ|ΓΙ|ΓΙΑ|ΓΙΕ|ΓΙÎ|ΓΙΟ|ΓΚΙ|ΓΙΑΤΙ|ΓΚΥ|ΓΟΗ|ΓΟΟ|ΓΡΗΓΟΡΑ|ΓΡΙ|ΓΡΥ|ΓΥΗ|ΓΥΡΩ|ΔΑ|ΔΕ|ΔΕΗ|ΔΕΙ|ΔΕÎ|ΔΕΣ|ΔΗ|ΔΗΘΕÎ|ΔΗΛΑΔΗ|ΔΗΩ|ΔΙ|ΔΙΑ|ΔΙΑΡΚΩΣ|ΔΙΟΛΟΥ|ΔΙΣ|ΔΙΧΩΣ|ΔΟΛ|ΔΟÎ|ΔΡΑ|ΔΡΥ|ΔΡΧ|ΔΥΕ|ΔΥΟ|ΔΩ|ΕΑΜ|ΕΑÎ|ΕΑΡ|ΕΘΗ|ΕΙ|ΕΙΔΕΜΗ|ΕΙΘΕ|ΕΙΜΑΙ|ΕΙΜΑΣΤΕ|ΕΙÎΑΙ|ΕΙΣ|ΕΙΣΑΙ|ΕΙΣΑΣΤΕ|ΕΙΣΤΕ|ΕΙΤΕ|ΕΙΧΑ|ΕΙΧΑΜΕ|ΕΙΧΑÎ|ΕΙΧΑΤΕ|ΕΙΧΕ|ΕΙΧΕΣ|ΕΚ|ΕΚΕΙ|ΕΛΑ|ΕΛΙ|ΕΜΠ|ΕÎ|ΕÎΤΕΛΩΣ|ΕÎΤΟΣ|ΕÎΤΩΜΕΤΑΞΥ|ΕÎΩ|ΕΞ|ΕΞΑΦÎΑ|ΕΞΙ|ΕΞΙΣΟΥ|ΕΞΩ|ΕΟΚ|ΕΠΑÎΩ|ΕΠΕΙΔΗ|ΕΠΕΙΤΑ|ΕΠΗ|ΕΠΙ|ΕΠΙΣΗΣ|ΕΠΟΜΕÎΩΣ|ΕΡΑ|ΕΣ|ΕΣΑΣ|ΕΣΕ|ΕΣΕΙΣ|ΕΣΕÎΑ|ΕΣΗ|ΕΣΤΩ|ΕΣΥ|ΕΣΩ|ΕΤΙ|ΕΤΣΙ|ΕΥ|ΕΥΑ|ΕΥΓΕ|ΕΥΘΥΣ|ΕΥΤΥΧΩΣ|ΕΦΕ|ΕΦΕΞΗΣ|ΕΦΤ|ΕΧΕ|ΕΧΕΙ|ΕΧΕΙΣ|ΕΧΕΤΕ|ΕΧΘΕΣ|ΕΧΟΜΕ|ΕΧΟΥΜΕ|ΕΧΟΥÎ|ΕΧΤΕΣ|ΕΧΩ|ΕΩΣ|ΖΕΑ|ΖΕΗ|ΖΕΙ|ΖΕÎ|ΖΗÎ|ΖΩ|Η|ΗΔΗ|ΗΔΥ|ΗΘΗ|ΗΛΟ|ΗΜΙ|ΗΠΑ|ΗΣΑΣΤΕ|ΗΣΟΥÎ|ΗΤΑ|ΗΤΑÎ|ΗΤΑÎΕ|ΗΤΟΙ|ΗΤΤΟÎ|ΗΩ|ΘΑ|ΘΥΕ|ΘΩΡ|Ι|ΙΑ|ΙΒΟ|ΙΔΗ|ΙΔΙΩΣ|ΙΕ|ΙΙ|ΙΙΙ|ΙΚΑ|ΙΛΟ|ΙΜΑ|ΙÎΑ|ΙÎΩ|ΙΞΕ|ΙΞΟ|ΙΟ|ΙΟΙ|ΙΣΑ|ΙΣΑΜΕ|ΙΣΕ|ΙΣΗ|ΙΣΙΑ|ΙΣΟ|ΙΣΩΣ|ΙΩΒ|ΙΩÎ|ΙΩΣ|ΙΑÎ|ΚΑΘ|ΚΑΘΕ|ΚΑΘΕΤΙ|ΚΑΘΟΛΟΥ|ΚΑΘΩΣ|ΚΑΙ|ΚΑÎ|ΚΑΠΟΤΕ|ΚΑΠΟΥ|ΚΑΠΩΣ|ΚΑΤ|ΚΑΤΑ|ΚΑΤΙ|ΚΑΤΙΤΙ|ΚΑΤΟΠΙÎ|ΚΑΤΩ|ΚΑΩ|ΚΒΟ|ΚΕΑ|ΚΕΙ|ΚΕÎ|ΚΙ|ΚΙΜ|ΚΙΟΛΑΣ|ΚΙΤ|ΚΙΧ|ΚΚΕ|ΚΛΙΣΕ|ΚΛΠ|ΚΟΚ|ΚΟÎΤΑ|ΚΟΧ|ΚΤΛ|ΚΥΡ|ΚΥΡΙΩΣ|ΚΩ|ΚΩÎ|ΛΑ|ΛΕΑ|ΛΕÎ|ΛΕΟ|ΛΙΑ|ΛΙΓΑΚΙ|ΛΙΓΟΥΛΑΚΙ|ΛΙΓΟ|ΛΙΓΩΤΕΡΟ|ΛΙΟ|ΛΙΡ|ΛΟΓΩ|ΛΟΙΠΑ|ΛΟΙΠΟÎ|ΛΟΣ|ΛΣ|ΛΥΩ|ΜΑ|ΜΑΖΙ|ΜΑΚΑΡΙ|ΜΑΛΙΣΤΑ|ΜΑΛΛΟÎ|ΜΑÎ|ΜΑΞ|ΜΑΣ|ΜΑΤ|ΜΕ|ΜΕΘΑΥΡΙΟ|ΜΕΙ|ΜΕΙΟÎ|ΜΕΛ|ΜΕΛΕΙ|ΜΕΛΛΕΤΑΙ|ΜΕΜΙΑΣ|ΜΕÎ|ΜΕΣ|ΜΕΣΑ|ΜΕΤ|ΜΕΤΑ|ΜΕΤΑΞΥ|ΜΕΧΡΙ|ΜΗ|ΜΗΔΕ|ΜΗÎ|ΜΗΠΩΣ|ΜΗΤΕ|ΜΙ|ΜΙΞ|ΜΙΣ|ΜΜΕ|ÎœÎΑ|ΜΟΒ|ΜΟΛΙΣ|ΜΟΛΟÎΟΤΙ|ΜΟÎΑΧΑ|ΜΟÎΟΜΙΑΣ|ΜΙΑ|ΜΟΥ|ΜΠΑ|ΜΠΟΡΕΙ|ΜΠΟΡΟΥÎ|ΜΠΡΑΒΟ|ΜΠΡΟΣ|ΜΠΩ|ΜΥ|ΜΥΑ|ΜΥÎ|ÎΑ|ÎΑΕ|ÎΑΙ|ÎΑΟ|ÎΔ|ÎΕÎ|ÎΕΑ|ÎΕΕ|ÎΕΟ|ÎΙ|ÎΙΑ|ÎΙΚ|ÎΙΛ|ÎΙÎ|ÎΙΟ|ÎΤΑ|ÎΤΕ|ÎΤΙ|ÎΤΟ|ÎÎ¥Î|ÎΩΕ|ÎΩΡΙΣ|ΞΑÎΑ|ΞΑΦÎΙΚΑ|ΞΕΩ|ΞΙ|Ο|ΟΑ|ΟΑΠ|ΟΔΟ|ΟΕ|ΟΖΟ|ΟΗΕ|ΟΙ|ΟΙΑ|ΟΙΗ|ΟΚΑ|ΟΛΟΓΥΡΑ|ΟΛΟÎΕÎ|ΟΛΟΤΕΛΑ|ΟΛΩΣΔΙΟΛΟΥ|ΟΜΩΣ|ΟÎ|ΟÎΕ|ΟÎΟ|ΟΠΑ|ΟΠΕ|ΟΠΗ|ΟΠΟ|ΟΠΟΙΑΔΗΠΟΤΕ|ΟΠΟΙΑÎΔΗΠΟΤΕ|ΟΠΟΙΑΣΔΗΠΟΤΕ|ΟΠΟΙΔΗΠΟΤΕ|ΟΠΟΙΕΣΔΗΠΟΤΕ|ΟΠΟΙΟΔΗΠΟΤΕ|ΟΠΟΙΟÎΔΗΠΟΤΕ|ΟΠΟΙΟΣΔΗΠΟΤΕ|ΟΠΟΙΟΥΔΗΠΟΤΕ|ΟΠΟΙΟΥΣΔΗΠΟΤΕ|ΟΠΟΙΩÎΔΗΠΟΤΕ|ΟΠΟΤΕΔΗΠΟΤΕ|ΟΠΟΥ|ΟΠΟΥΔΗΠΟΤΕ|ΟΠΩΣ|ΟΡΑ|ΟΡΕ|ΟΡΗ|ΟΡΟ|ΟΡΦ|ΟΡΩ|ΟΣΑ|ΟΣΑΔΗΠΟΤΕ|ΟΣΕ|ΟΣΕΣΔΗΠΟΤΕ|ΟΣΗΔΗΠΟΤΕ|ΟΣΗÎΔΗΠΟΤΕ|ΟΣΗΣΔΗΠΟΤΕ|ΟΣΟΔΗΠΟΤΕ|ΟΣΟΙΔΗΠΟΤΕ|ΟΣΟÎΔΗΠΟΤΕ|ΟΣΟΣΔΗΠΟΤΕ|ΟΣΟΥΔΗΠΟΤΕ|ΟΣΟΥΣΔΗΠΟΤΕ|ΟΣΩÎΔΗΠΟΤΕ|ΟΤΑÎ|ΟΤΕ|ΟΤΙ|ΟΤΙΔΗΠΟΤΕ|ΟΥ|ΟΥΔΕ|ΟΥΚ|ΟΥΣ|ΟΥΤΕ|ΟΥΦ|ΟΧΙ|ΟΨΑ|ΟΨΕ|ΟΨΗ|ΟΨΙ|ΟΨΟ|ΠΑ|ΠΑΛΙ|ΠΑÎ|ΠΑÎΤΟΤΕ|ΠΑÎΤΟΥ|ΠΑÎΤΩΣ|ΠΑΠ|ΠΑΡ|ΠΑΡΑ|ΠΕΙ|ΠΕΡ|ΠΕΡΑ|ΠΕΡΙ|ΠΕΡΙΠΟΥ|ΠΕΡΣΙ|ΠΕΡΥΣΙ|ΠΕΣ|ΠΙ|ΠΙΑ|ΠΙΘΑÎΟÎ|ΠΙΚ|ΠΙΟ|ΠΙΣΩ|ΠΙΤ|ΠΙΩ|ΠΛΑΙ|ΠΛΕΟÎ|ΠΛΗÎ|ΠΛΩ|Î Îœ|ΠΟΑ|ΠΟΕ|ΠΟΛ|ΠΟΛΥ|ΠΟΠ|ΠΟΤΕ|ΠΟΥ|ΠΟΥΘΕ|ΠΟΥΘΕÎΑ|ΠΡΕΠΕΙ|ΠΡΙ|ΠΡΙÎ|ΠΡΟ|ΠΡΟΚΕΙΜΕÎΟΥ|ΠΡΟΚΕΙΤΑΙ|ΠΡΟΠΕΡΣΙ|ΠΡΟΣ|ΠΡΟΤΟΥ|ΠΡΟΧΘΕΣ|ΠΡΟΧΤΕΣ|ΠΡΩΤΥΤΕΡΑ|ΠΥΑ|ΠΥΞ|ΠΥΟ|ΠΥΡ|ΠΧ|ΠΩ|ΠΩΛ|ΠΩΣ|ΡΑ|ΡΑΙ|ΡΑΠ|ΡΑΣ|ΡΕ|ΡΕΑ|ΡΕΕ|ΡΕΙ|ΡΗΣ|ΡΘΩ|ΡΙΟ|ΡΟ|ΡΟÎ|ΡΟΕ|ΡΟΖ|ΡΟΗ|ΡΟΘ|ΡΟΙ|ΡΟΚ|ΡΟΛ|ΡΟÎ|ΡΟΣ|ΡΟΥ|ΣΑΙ|ΣΑÎ|ΣΑΟ|ΣΑΣ|ΣΕ|ΣΕΙΣ|ΣΕΚ|ΣΕΞ|ΣΕΡ|ΣΕΤ|ΣΕΦ|ΣΗΜΕΡΑ|ΣΙ|ΣΙΑ|ΣΙΓΑ|ΣΙΚ|ΣΙΧ|ΣΚΙ|ΣΟΙ|ΣΟΚ|ΣΟΛ|ΣΟÎ|ΣΟΣ|ΣΟΥ|ΣΡΙ|ΣΤΑ|ΣΤΗ|ΣΤΗÎ|ΣΤΗΣ|ΣΤΙΣ|ΣΤΟ|ΣΤΟÎ|ΣΤΟΥ|ΣΤΟΥΣ|ΣΤΩÎ|ΣΥ|ΣΥΓΧΡΟÎΩΣ|ΣΥÎ|ΣΥÎΑΜΑ|ΣΥÎΕΠΩΣ|ΣΥÎΗΘΩΣ|ΣΧΕΔΟÎ|ΣΩΣΤΑ|ΤΑ|ΤΑΔΕ|ΤΑΚ|ΤΑÎ|ΤΑΟ|ΤΑΥ|ΤΑΧΑ|ΤΑΧΑΤΕ|ΤΕ|ΤΕΙ|ΤΕΛ|ΤΕΛΙΚΑ|ΤΕΛΙΚΩΣ|ΤΕΣ|ΤΕΤ|ΤΖΟ|ΤΗ|ΤΗΛ|ΤΗÎ|ΤΗΣ|ΤΙ|ΤΙΚ|ΤΙΜ|ΤΙΠΟΤΑ|ΤΙΠΟΤΕ|ΤΙΣ|ΤÎΤ|ΤΟ|ΤΟΙ|ΤΟΚ|ΤΟΜ|ΤΟÎ|ΤΟΠ|ΤΟΣ|ΤΟΣ?Î|ΤΟΣΑ|ΤΟΣΕΣ|ΤΟΣΗ|ΤΟΣΗÎ|ΤΟΣΗΣ|ΤΟΣΟ|ΤΟΣΟΙ|ΤΟΣΟÎ|ΤΟΣΟΣ|ΤΟΣΟΥ|ΤΟΣΟΥΣ|ΤΟΤΕ|ΤΟΥ|ΤΟΥΛΑΧΙΣΤΟ|ΤΟΥΛΑΧΙΣΤΟÎ|ΤΟΥΣ|ΤΣ|ΤΣΑ|ΤΣΕ|ΤΥΧΟÎ|ΤΩ|ΤΩÎ|ΤΩΡΑ|ΥΑΣ|ΥΒΑ|ΥΒΟ|ΥΙΕ|ΥΙΟ|ΥΛΑ|ΥΛΗ|Î¥ÎΙ|ΥΠ|ΥΠΕΡ|ΥΠΟ|ΥΠΟΨΗ|ΥΠΟΨΙÎ|ΥΣΤΕΡΑ|ΥΦΗ|ΥΨΗ|ΦΑ|ΦΑÎ|ΦΑΕ|ΦΑÎ|ΦΑΞ|ΦΑΣ|ΦΑΩ|ΦΕΖ|ΦΕΙ|ΦΕΤΟΣ|ΦΕΥ|ΦΙ|ΦΙΛ|ΦΙΣ|ΦΟΞ|ΦΠΑ|ΦΡΙ|ΧΑ|ΧΑΗ|ΧΑΛ|ΧΑÎ|ΧΑΦ|ΧΕ|ΧΕΙ|ΧΘΕΣ|ΧΙ|ΧΙΑ|ΧΙΛ|ΧΙΟ|ΧΛΜ|ΧΜ|ΧΟΗ|ΧΟΛ|ΧΡΩ|ΧΤΕΣ|ΧΩΡΙΣ|ΧΩΡΙΣΤΑ|ΨΕΣ|ΨΗΛΑ|ΨΙ|ΨΙΤ|Ω|ΩΑ|ΩΑΣ|ΩΔΕ|ΩΕΣ|ΩΘΩ|ΩΜΑ|ΩΜΕ|ΩÎ|ΩΟ|ΩΟÎ|ΩΟΥ|ΩΣ|ΩΣΑÎ|ΩΣΗ|ΩΣΟΤΟΥ|ΩΣΠΟΥ|ΩΣΤΕ|ΩΣΤΟΣΟ|ΩΤΑ|ΩΧ|ΩΩÎ)$/'; | |
if (preg_match($stop_words,$w)){ | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
// step1list is used in Step 1. 41 stems | |
$step1list = Array(); | |
$step1list["ΦΑΓΙΑ"]="ΦΑ"; | |
$step1list["ΦΑΓΙΟΥ"]="ΦΑ"; | |
$step1list["ΦΑΓΙΩÎ"]="ΦΑ"; | |
$step1list["ΣΚΑΓΙΑ"]="ΣΚΑ"; | |
$step1list["ΣΚΑΓΙΟΥ"]="ΣΚΑ"; | |
$step1list["ΣΚΑΓΙΩÎ"]="ΣΚΑ"; | |
$step1list["ΟΛΟΓΙΟΥ"]="ΟΛΟ"; | |
$step1list["ΟΛΟΓΙΑ"]="ΟΛΟ"; | |
$step1list["ΟΛΟΓΙΩÎ"]="ΟΛΟ"; | |
$step1list["ΣΟΓΙΟΥ"]="ΣΟ"; | |
$step1list["ΣΟΓΙΑ"]="ΣΟ"; | |
$step1list["ΣΟΓΙΩÎ"]="ΣΟ"; | |
$step1list["ΤΑΤΟΓΙΑ"]="ΤΑΤΟ"; | |
$step1list["ΤΑΤΟΓΙΟΥ"]="ΤΑΤΟ"; | |
$step1list["ΤΑΤΟΓΙΩÎ"]="ΤΑΤΟ"; | |
$step1list["ΚΡΕΑΣ"]="ΚΡΕ"; | |
$step1list["ΚΡΕΑΤΟΣ"]="ΚΡΕ"; | |
$step1list["ΚΡΕΑΤΑ"]="ΚΡΕ"; | |
$step1list["ΚΡΕΑΤΩÎ"]="ΚΡΕ"; | |
$step1list["ΠΕΡΑΣ"]="ΠΕΡ"; | |
$step1list["ΠΕΡΑΤΟΣ"]="ΠΕΡ"; | |
$step1list["ΠΕΡΑΤΗ"]="ΠΕΡ"; //Added by Spyros . also at $re in step1 | |
$step1list["ΠΕΡΑΤΑ"]="ΠΕΡ"; | |
$step1list["ΠΕΡΑΤΩÎ"]="ΠΕΡ"; | |
$step1list["ΤΕΡΑΣ"]="ΤΕΡ"; | |
$step1list["ΤΕΡΑΤΟΣ"]="ΤΕΡ"; | |
$step1list["ΤΕΡΑΤΑ"]="ΤΕΡ"; | |
$step1list["ΤΕΡΑΤΩÎ"]="ΤΕΡ"; | |
$step1list["ΦΩΣ"]="ΦΩ"; | |
$step1list["ΦΩΤΟΣ"]="ΦΩ"; | |
$step1list["ΦΩΤΑ"]="ΦΩ"; | |
$step1list["ΦΩΤΩÎ"]="ΦΩ"; | |
$step1list["ΚΑΘΕΣΤΩΣ"]="ΚΑΘΕΣΤ"; | |
$step1list["ΚΑΘΕΣΤΩΤΟΣ"]="ΚΑΘΕΣΤ"; | |
$step1list["ΚΑΘΕΣΤΩΤΑ"]="ΚΑΘΕΣΤ"; | |
$step1list["ΚΑΘΕΣΤΩΤΩÎ"]="ΚΑΘΕΣΤ"; | |
$step1list["ΓΕΓΟÎΟΣ"]="ΓΕΓΟÎ"; | |
$step1list["ΓΕΓΟÎΟΤΟΣ"]="ΓΕΓΟÎ"; | |
$step1list["ΓΕΓΟÎΟΤΑ"]="ΓΕΓΟÎ"; | |
$step1list["ΓΕΓΟÎΟΤΩÎ"]="ΓΕΓΟÎ"; | |
$v = '(Α|Ε|Η|Ι|Ο|Υ|Ω)'; // vowel | |
$v2 = '(Α|Ε|Η|Ι|Ο|Ω)'; //vowel without Y | |
$test1 = true; | |
//Step S1. 14 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΖΑ|ΙΖΕΣ|ΙΖΕ|ΙΖΑΜΕ|ΙΖΑΤΕ|ΙΖΑÎ|ΙΖΑÎΕ|ΙΖΩ|ΙΖΕΙΣ|ΙΖΕΙ|ΙΖΟΥΜΕ|ΙΖΕΤΕ|ΙΖΟΥÎ|ΙΖΟΥÎΕ)$/'; | |
$exceptS1 = '/^(ΑÎΑΜΠΑ|ΕΜΠΑ|ΕΠΑ|ΞΑÎΑΠΑ|ΠΑ|ΠΕΡΙΠΑ|ΑΘΡΟ|ΣΥÎΑΘΡΟ|ΔΑÎΕ)$/'; | |
$exceptS2 = '/^(ΜΑΡΚ|ΚΟΡÎ|ΑΜΠΑΡ|ΑΡΡ|ΒΑΘΥΡΙ|ΒΑΡΚ|Î’|ΒΟΛΒΟΡ|ΓΚΡ|ΓΛΥΚΟΡ|ΓΛΥΚΥΡ|ΙΜΠ|Λ|ΛΟΥ|ΜΑΡ|Îœ|ΠΡ|ΜΠΡ|ΠΟΛΥΡ|Î |Ρ|ΠΙΠΕΡΟΡ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem . $step1list[$suffix]; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w = $w . 'I'; | |
} | |
if( preg_match($exceptS2,$w) ) { | |
$w = $w . 'IΖ'; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S2. 7 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΩΘΗΚΑ|ΩΘΗΚΕΣ|ΩΘΗΚΕ|ΩΘΗΚΑΜΕ|ΩΘΗΚΑΤΕ|ΩΘΗΚΑÎ|ΩΘΗΚΑÎΕ)$/'; | |
$exceptS1 = '/^(ΑΛ|ΒΙ|ΕÎ|ΥΨ|ΛΙ|ΖΩ|Σ|Χ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem . $step1list[$suffix]; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w = $w . 'ΩÎ'; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S3. 7 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΣΑ|ΙΣΕΣ|ΙΣΕ|ΙΣΑΜΕ|ΙΣΑΤΕ|ΙΣΑÎ|ΙΣΑÎΕ)$/'; | |
$exceptS1 = '/^(ΑÎΑΜΠΑ|ΑΘΡΟ|ΕΜΠΑ|ΕΣΕ|ΕΣΩΚΛΕ|ΕΠΑ|ΞΑÎΑΠΑ|ΕΠΕ|ΠΕΡΙΠΑ|ΑΘΡΟ|ΣΥÎΑΘΡΟ|ΔΑÎΕ|ΚΛΕ|ΧΑΡΤΟΠΑ|ΕΞΑΡΧΑ|ΜΕΤΕΠΕ|ΑΠΟΚΛΕ|ΑΠΕΚΛΕ|ΕΚΛΕ|ΠΕ|ΠΕΡΙΠΑ)$/'; | |
$exceptS2 = '/^(ΑÎ|ΑΦ|ΓΕ|ΓΙΓΑÎΤΟΑΦ|ΓΚΕ|ΔΗΜΟΚΡΑΤ|ΚΟΜ|ΓΚ|Îœ|Î |ΠΟΥΚΑΜ|ΟΛΟ|ΛΑΡ)$/'; | |
if ($w=="ΙΣΑ"){$w="ΙΣ";return $w;} | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem . $step1list[$suffix]; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w = $w . 'Ι'; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S4. 7 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΣΩ|ΙΣΕΙΣ|ΙΣΕΙ|ΙΣΟΥΜΕ|ΙΣΕΤΕ|ΙΣΟΥÎ|ΙΣΟΥÎΕ)$/'; | |
$exceptS1 = '/^(ΑÎΑΜΠΑ|ΕΜΠΑ|ΕΣΕ|ΕΣΩΚΛΕ|ΕΠΑ|ΞΑÎΑΠΑ|ΕΠΕ|ΠΕΡΙΠΑ|ΑΘΡΟ|ΣΥÎΑΘΡΟ|ΔΑÎΕ|ΚΛΕ|ΧΑΡΤΟΠΑ|ΕΞΑΡΧΑ|ΜΕΤΕΠΕ|ΑΠΟΚΛΕ|ΑΠΕΚΛΕ|ΕΚΛΕ|ΠΕ|ΠΕΡΙΠΑ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem . $step1list[$suffix]; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w = $w . 'Ι'; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S5. 11 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΣΤΟΣ|ΙΣΤΟΥ|ΙΣΤΟ|ΙΣΤΕ|ΙΣΤΟΙ|ΙΣΤΩÎ|ΙΣΤΟΥΣ|ΙΣΤΗ|ΙΣΤΗΣ|ΙΣΤΑ|ΙΣΤΕΣ)$/'; | |
$exceptS1 = '/^(Îœ|Î |ΑΠ|ΑΡ|ΗΔ|ΚΤ|ΣΚ|ΣΧ|ΥΨ|ΦΑ|ΧΡ|ΧΤ|ΑΚΤ|ΑΟΡ|ΑΣΧ|ΑΤΑ|ΑΧÎ|ΑΧΤ|ΓΕΜ|ΓΥΡ|ΕΜΠ|ΕΥΠ|ΕΧΘ|ΗΦΑ|ΉΦΑ|ΚΑΘ|ΚΑΚ|ΚΥΛ|ΛΥΓ|ΜΑΚ|ΜΕΓ|ΤΑΧ|ΦΙΛ|ΧΩΡ)$/'; | |
$exceptS2 = '/^(ΔΑÎΕ|ΣΥÎΑΘΡΟ|ΚΛΕ|ΣΕ|ΕΣΩΚΛΕ|ΑΣΕ|ΠΛΕ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem . $step1list[$suffix]; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w = $w . 'ΙΣΤ'; | |
} | |
if( preg_match($exceptS2,$w) ) { | |
$w = $w . 'Ι'; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S6. 6 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΣΜΟ|ΙΣΜΟΙ|ΙΣΜΟΣ|ΙΣΜΟΥ|ΙΣΜΟΥΣ|ΙΣΜΩÎ)$/'; | |
$exceptS1 = '/^(ΑΓÎΩΣΤΙΚ|ΑΤΟΜΙΚ|ΓÎΩΣΤΙΚ|ΕΘÎΙΚ|ΕΚΛΕΚΤΙΚ|ΣΚΕΠΤΙΚ|ΤΟΠΙΚ)$/'; | |
$exceptS2 = '/^(ΣΕ|ΜΕΤΑΣΕ|ΜΙΚΡΟΣΕ|ΕΓΚΛΕ|ΑΠΟΚΛΕ)$/'; | |
$exceptS3 = '/^(ΔΑÎΕ|ΑÎΤΙΔΑÎΕ)$/'; | |
$exceptS4 = '/^(ΑΛΕΞΑÎΔΡΙÎ|ΒΥΖΑÎΤΙÎ|ΘΕΑΤΡΙÎ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem ; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w=str_replace('ΙΚ',"",$w); | |
} | |
if( preg_match($exceptS2,$w) ) { | |
$w=$w."ΙΣΜ"; | |
} | |
if( preg_match($exceptS3,$w) ) { | |
$w=$w."Ι"; | |
} | |
if( preg_match($exceptS4,$w) ) { | |
$w=str_replace('ΙÎ',"",$w); | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S7. 4 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΑΡΑΚΙ|ΑΡΑΚΙΑ|ΟΥΔΑΚΙ|ΟΥΔΑΚΙΑ)$/'; | |
$exceptS1 = '/^(Σ|Χ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem ; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w=$w."AΡΑΚ"; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S8. 8 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΑΚΙ|ΑΚΙΑ|ΙΤΣΑ|ΙΤΣΑΣ|ΙΤΣΕΣ|ΙΤΣΩÎ|ΑΡΑΚΙ|ΑΡΑΚΙΑ)$/'; | |
$exceptS1 = '/^(ΑÎΘΡ|ΒΑΜΒ|ΒΡ|ΚΑΙΜ|ΚΟÎ|ΚΟΡ|ΛΑΒΡ|ΛΟΥΛ|ΜΕΡ|ΜΟΥΣΤ|ÎΑΓΚΑΣ|ΠΛ|Ρ|ΡΥ|Σ|ΣΚ|ΣΟΚ|ΣΠΑÎ|ΤΖ|ΦΑΡΜ|Χ|ΚΑΠΑΚ|ΑΛΙΣΦ|ΑΜΒΡ|ΑÎΘΡ|Κ|ΦΥΛ|ΚΑΤΡΑΠ|ΚΛΙΜ|ΜΑΛ|ΣΛΟΒ|Φ|ΣΦ|ΤΣΕΧΟΣΛΟΒ)$/'; | |
$exceptS2 = '/^(Î’|ΒΑΛ|ΓΙΑÎ|ΓΛ|Ζ|ΗΓΟΥΜΕÎ|ΚΑΡΔ|ΚΟÎ|ΜΑΚΡΥÎ|ÎΥΦ|ΠΑΤΕΡ|Î |ΣΚ|ΤΟΣ|ΤΡΙΠΟΛ)$/'; | |
$exceptS3 = '/(ΚΟΡ)$/';// for words like ΠΛΟΥΣΙΟΚΟΡΙΤΣΑ, ΠΑΛΙΟΚΟΡΙΤΣΑ etc | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem ; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w=$w."ΑΚ"; | |
} | |
if( preg_match($exceptS2,$w) ) { | |
$w=$w."ΙΤΣ"; | |
} | |
if( preg_match($exceptS3,$w) ) { | |
$w=$w."ΙΤΣ"; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S9. 3 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΔΙΟ|ΙΔΙΑ|ΙΔΙΩÎ)$/'; | |
$exceptS1 = '/^(ΑΙΦÎ|ΙΡ|ΟΛΟ|ΨΑΛ)$/'; | |
$exceptS2 = '/(Ε|ΠΑΙΧÎ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem ; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w=$w."ΙΔ"; | |
} | |
if( preg_match($exceptS2,$w) ) { | |
$w=$w."ΙΔ"; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step S10. 4 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΣΚΟΣ|ΙΣΚΟΥ|ΙΣΚΟ|ΙΣΚΕ)$/'; | |
$exceptS1 = '/^(Δ|ΙΒ|ΜΗÎ|Ρ|ΦΡΑΓΚ|ΛΥΚ|ΟΒΕΛ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem ; | |
$test1 = false; | |
if( preg_match($exceptS1,$w) ) { | |
$w=$w."ΙΣΚ"; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
//Step1 | |
$numberOfRulesExamined++; | |
$re = '/(.*)(ΦΑΓΙΑ|ΦΑΓΙΟΥ|ΦΑΓΙΩÎ|ΣΚΑΓΙΑ|ΣΚΑΓΙΟΥ|ΣΚΑΓΙΩÎ|ΟΛΟΓΙΟΥ|ΟΛΟΓΙΑ|ΟΛΟΓΙΩÎ|ΣΟΓΙΟΥ|ΣΟΓΙΑ|ΣΟΓΙΩÎ|ΤΑΤΟΓΙΑ|ΤΑΤΟΓΙΟΥ|ΤΑΤΟΓΙΩÎ|ΚΡΕΑΣ|ΚΡΕΑΤΟΣ|ΚΡΕΑΤΑ|ΚΡΕΑΤΩÎ|ΠΕΡΑΣ|ΠΕΡΑΤΟΣ|ΠΕΡΑΤΗ|ΠΕΡΑΤΑ|ΠΕΡΑΤΩÎ|ΤΕΡΑΣ|ΤΕΡΑΤΟΣ|ΤΕΡΑΤΑ|ΤΕΡΑΤΩÎ|ΦΩΣ|ΦΩΤΟΣ|ΦΩΤΑ|ΦΩΤΩÎ|ΚΑΘΕΣΤΩΣ|ΚΑΘΕΣΤΩΤΟΣ|ΚΑΘΕΣΤΩΤΑ|ΚΑΘΕΣΤΩΤΩÎ|ΓΕΓΟÎΟΣ|ΓΕΓΟÎΟΤΟΣ|ΓΕΓΟÎΟΤΑ|ΓΕΓΟÎΟΤΩÎ)$/'; | |
if (preg_match($re,$w,$match)) { | |
$stem = $match[1]; | |
$suffix = $match[2]; | |
$w = $stem . $step1list[$suffix]; | |
$test1 = false; | |
} | |
// Step 2a. 2 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΑΔΕΣ|ΑΔΩÎ)$/'; | |
if( preg_match($re,$w,$match) ) { | |
$stem = $match[1]; | |
$w = $stem; | |
$re = '/(ΟΚ|ΜΑΜ|ΜΑÎ|ΜΠΑΜΠ|ΠΑΤΕΡ|ΓΙΑΓΙ|ÎΤΑÎΤ|ΚΥΡ|ΘΕΙ|ΠΕΘΕΡ)$/'; | |
if( !preg_match($re,$w) ) { | |
$w = $w . "ΑΔ"; | |
} | |
} | |
//Step 2b. 2 stems | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΕΔΕΣ|ΕΔΩÎ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$exept2 = '/(ΟΠ|ΙΠ|ΕΜΠ|ΥΠ|ΓΗΠ|ΔΑΠ|ΚΡΑΣΠ|ΜΙΛ)$/'; | |
if( preg_match($exept2,$w) ) { | |
$w = $w . 'ΕΔ'; | |
} | |
} | |
//Step 2c | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΟΥΔΕΣ|ΟΥΔΩÎ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$exept3 = '/(ΑΡΚ|ΚΑΛΙΑΚ|ΠΕΤΑΛ|ΛΙΧ|ΠΛΕΞ|ΣΚ|Σ|ΦΛ|ΦΡ|ΒΕΛ|ΛΟΥΛ|ΧÎ|ΣΠ|ΤΡΑΓ|ΦΕ)$/'; | |
if( preg_match($exept3,$w) ) { | |
$w = $w . 'ΟΥΔ'; | |
} | |
} | |
//Step 2d | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΕΩΣ|ΕΩÎ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept4 = '/^(Θ|Δ|ΕΛ|ΓΑΛ|Î|Î |ΙΔ|ΠΑΡ)$/'; | |
if( preg_match($exept4,$w) ) { | |
$w = $w . 'Ε'; | |
} | |
} | |
//Step 3 | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΑ|ΙΟΥ|ΙΩÎ)$/'; | |
if( preg_match($re,$w,$fp) ) { | |
$stem = $fp[1]; | |
$w = $stem; | |
$re = '/'.$v.'$/'; | |
$test1 = false; | |
if( preg_match($re,$w) ) { | |
$w = $stem . 'Ι'; | |
} | |
} | |
//Step 4 | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΙΚΑ|ΙΚΟ|ΙΚΟΥ|ΙΚΩÎ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$re = '/'.$v.'$/'; | |
$exept5 = '/^(ΑΛ|ΑΔ|ΕÎΔ|ΑΜΑÎ|ΑΜΜΟΧΑΛ|ΗΘ|ΑÎΗΘ|ΑÎΤΙΔ|ΦΥΣ|ΒΡΩΜ|ΓΕΡ|ΕΞΩΔ|ΚΑΛΠ|ΚΑΛΛΙÎ|ΚΑΤΑΔ|ΜΟΥΛ|ΜΠΑÎ|ΜΠΑΓΙΑΤ|ΜΠΟΛ|ΜΠΟΣ|ÎΙΤ|ΞΙΚ|ΣΥÎΟΜΗΛ|ΠΕΤΣ|ΠΙΤΣ|ΠΙΚΑÎΤ|ΠΛΙΑΤΣ|ΠΟΣΤΕΛÎ|ΠΡΩΤΟΔ|ΣΕΡΤ|ΣΥÎΑΔ|ΤΣΑΜ|ΥΠΟΔ|ΦΙΛΟÎ|ΦΥΛΟΔ|ΧΑΣ)$/'; | |
if( preg_match($re,$w) || preg_match($exept5,$w) ) { | |
$w = $w . 'ΙΚ'; | |
} | |
} | |
//step 5a | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΑΜΕ)$/'; | |
$re2 = '/^(.+?)(ΑΓΑΜΕ|ΗΣΑΜΕ|ΟΥΣΑΜΕ|ΗΚΑΜΕ|ΗΘΗΚΑΜΕ)$/'; | |
if ($w == "ΑΓΑΜΕ") { | |
$w = "ΑΓΑΜ"; | |
} | |
if( preg_match($re2,$w) ) { | |
preg_match($re2,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
} | |
$numberOfRulesExamined++; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept6 = '/^(ΑÎΑΠ|ΑΠΟΘ|ΑΠΟΚ|ΑΠΟΣΤ|ΒΟΥΒ|ΞΕΘ|ΟΥΛ|ΠΕΘ|ΠΙΚΡ|ΠΟΤ|ΣΙΧ|Χ)$/'; | |
if( preg_match($exept6,$w) ) { | |
$w = $w . "ΑΜ"; | |
} | |
} | |
//Step 5b | |
$numberOfRulesExamined++; | |
$re2 = '/^(.+?)(ΑÎΕ)$/'; | |
$re3 = '/^(.+?)(ΑΓΑÎΕ|ΗΣΑÎΕ|ΟΥΣΑÎΕ|ΙΟÎΤΑÎΕ|ΙΟΤΑÎΕ|ΙΟΥÎΤΑÎΕ|ΟÎΤΑÎΕ|ΟΤΑÎΕ|ΟΥÎΤΑÎΕ|ΗΚΑÎΕ|ΗΘΗΚΑÎΕ)$/'; | |
if( preg_match($re3,$w) ) { | |
preg_match($re3,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$re3 = '/^(ΤΡ|ΤΣ)$/'; | |
if( preg_match($re3,$w) ) { | |
$w = $w . "ΑΓΑÎ"; | |
} | |
} | |
$numberOfRulesExamined++; | |
if( preg_match($re2,$w) ) { | |
preg_match($re2,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$re2 = '/'.$v2.'$/'; | |
$exept7 = '/^(ΒΕΤΕΡ|ΒΟΥΛΚ|ΒΡΑΧΜ|Γ|ΔΡΑΔΟΥΜ|Θ|ΚΑΛΠΟΥΖ|ΚΑΣΤΕΛ|ΚΟΡΜΟΡ|ΛΑΟΠΛ|ΜΩΑΜΕΘ|Îœ|ΜΟΥΣΟΥΛΜ|Î|ΟΥΛ|Î |ΠΕΛΕΚ|ΠΛ|ΠΟΛΙΣ|ΠΟΡΤΟΛ|ΣΑΡΑΚΑΤΣ|ΣΟΥΛΤ|ΤΣΑΡΛΑΤ|ΟΡΦ|ΤΣΙΓΓ|ΤΣΟΠ|ΦΩΤΟΣΤΕΦ|Χ|ΨΥΧΟΠΛ|ΑΓ|ΟΡΦ|ΓΑΛ|ΓΕΡ|ΔΕΚ|ΔΙΠΛ|ΑΜΕΡΙΚΑÎ|ΟΥΡ|ΠΙΘ|ΠΟΥΡΙΤ|Σ|ΖΩÎΤ|ΙΚ|ΚΑΣΤ|ΚΟΠ|ΛΙΧ|ΛΟΥΘΗΡ|ΜΑΙÎΤ|ΜΕΛ|ΣΙΓ|ΣΠ|ΣΤΕΓ|ΤΡΑΓ|ΤΣΑΓ|Φ|ΕΡ|ΑΔΑΠ|ΑΘΙΓΓ|ΑΜΗΧ|ΑÎΙΚ|ΑÎΟΡΓ|ΑΠΗΓ|ΑΠΙΘ|ΑΤΣΙΓΓ|ΒΑΣ|ΒΑΣΚ|ΒΑΘΥΓΑΛ|ΒΙΟΜΗΧ|ΒΡΑΧΥΚ|ΔΙΑΤ|ΔΙΑΦ|ΕÎΟΡΓ|ΘΥΣ|ΚΑΠÎΟΒΙΟΜΗΧ|ΚΑΤΑΓΑΛ|ΚΛΙΒ|ΚΟΙΛΑΡΦ|ΛΙΒ|ΜΕΓΛΟΒΙΟΜΗΧ|ΜΙΚΡΟΒΙΟΜΗΧ|ÎΤΑΒ|ΞΗΡΟΚΛΙΒ|ΟΛΙΓΟΔΑΜ|ΟΛΟΓΑΛ|ΠΕÎΤΑΡΦ|ΠΕΡΗΦ|ΠΕΡΙΤΡ|ΠΛΑΤ|ΠΟΛΥΔΑΠ|ΠΟΛΥΜΗΧ|ΣΤΕΦ|ΤΑΒ|ΤΕΤ|ΥΠΕΡΗΦ|ΥΠΟΚΟΠ|ΧΑΜΗΛΟΔΑΠ|ΨΗΛΟΤΑΒ)$/'; | |
if( preg_match($re2,$w) || preg_match($exept7,$w) ){ | |
$w = $w . "ΑÎ"; | |
} | |
} | |
//Step 5c | |
$numberOfRulesExamined++; | |
$re3 = '/^(.+?)(ΕΤΕ)$/'; | |
$re4 = '/^(.+?)(ΗΣΕΤΕ)$/'; | |
if( preg_match($re4,$w) ) { | |
preg_match($re4,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
} | |
$numberOfRulesExamined++; | |
if( preg_match($re3,$w) ) { | |
preg_match($re3,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$re3 = '/'.$v2.'$/'; | |
$exept8 = '/(ΟΔ|ΑΙΡ|ΦΟΡ|ΤΑΘ|ΔΙΑΘ|ΣΧ|ΕÎΔ|ΕΥΡ|ΤΙΘ|ΥΠΕΡΘ|ΡΑΘ|ΕÎΘ|ΡΟΘ|ΣΘ|ΠΥΡ|ΑΙÎ|ΣΥÎΔ|ΣΥÎ|ΣΥÎΘ|ΧΩΡ|ΠΟÎ|ΒΡ|ΚΑΘ|ΕΥΘ|ΕΚΘ|ÎΕΤ|ΡΟÎ|ΑΡΚ|ΒΑΡ|ΒΟΛ|ΩΦΕΛ)$/'; | |
$exept9 = '/^(ΑΒΑΡ|ΒΕÎ|ΕÎΑΡ|ΑΒΡ|ΑΔ|ΑΘ|ΑÎ|ΑΠΛ|ΒΑΡΟÎ|ÎΤΡ|ΣΚ|ΚΟΠ|ΜΠΟΡ|ÎΙΦ|ΠΑΓ|ΠΑΡΑΚΑΛ|ΣΕΡΠ|ΣΚΕΛ|ΣΥΡΦ|ΤΟΚ|Î¥|Δ|ΕΜ|ΘΑΡΡ|Θ)$/'; | |
if( preg_match($re3,$w) || preg_match($exept8,$w) || preg_match($exept9,$w) ){ | |
$w = $w . "ΕΤ"; | |
} | |
} | |
//Step 5d | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΟÎΤΑΣ|ΩÎΤΑΣ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept10 = '/^(ΑΡΧ)$/'; | |
$exept11 = '/(ΚΡΕ)$/'; | |
if( preg_match($exept10,$w) ){ | |
$w = $w . "ΟÎΤ"; | |
} | |
if( preg_match($exept11,$w) ){ | |
$w = $w . "ΩÎΤ"; | |
} | |
} | |
//Step 5e | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΟΜΑΣΤΕ|ΙΟΜΑΣΤΕ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept11 = '/^(ΟÎ)$/'; | |
if( preg_match($exept11,$w) ){ | |
$w = $w . "ΟΜΑΣΤ"; | |
} | |
} | |
//Step 5f | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΕΣΤΕ)$/'; | |
$re2 = '/^(.+?)(ΙΕΣΤΕ)$/'; | |
if( preg_match($re2,$w) ) { | |
preg_match($re2,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$re2 = '/^(Π|ΑΠ|ΣΥΜΠ|ΑΣΥΜΠ|ΑΚΑΤΑΠ|ΑΜΕΤΑΜΦ)$/'; | |
if( preg_match($re2,$w) ) { | |
$w = $w . "ΙΕΣΤ"; | |
} | |
} | |
$numberOfRulesExamined++; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept12 = '/^(ΑΛ|ΑΡ|ΕΚΤΕΛ|Ζ|Îœ|Ξ|ΠΑΡΑΚΑΛ|ΑΡ|ΠΡΟ|ÎΙΣ)$/'; | |
if( preg_match($exept12,$w) ){ | |
$w = $w . "ΕΣΤ"; | |
} | |
} | |
//Step 5g | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΗΚΑ|ΗΚΕΣ|ΗΚΕ)$/'; | |
$re2 = '/^(.+?)(ΗΘΗΚΑ|ΗΘΗΚΕΣ|ΗΘΗΚΕ)$/'; | |
if( preg_match($re2,$w) ) { | |
preg_match($re2,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
} | |
$numberOfRulesExamined++; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept13 = '/(ΣΚΩΛ|ΣΚΟΥΛ|ÎΑΡΘ|ΣΦ|ΟΘ|ΠΙΘ)$/'; | |
$exept14 = '/^(ΔΙΑΘ|Θ|ΠΑΡΑΚΑΤΑΘ|ΠΡΟΣΘ|ΣΥÎΘ|)$/'; | |
if( preg_match($exept13,$w) || preg_match($exept14,$w) ){ | |
$w = $w . "ΗΚ"; | |
} | |
} | |
//Step 5h | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΟΥΣΑ|ΟΥΣΕΣ|ΟΥΣΕ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept15 = '/^(ΦΑΡΜΑΚ|ΧΑΔ|ΑΓΚ|ΑÎΑΡΡ|ΒΡΟΜ|ΕΚΛΙΠ|ΛΑΜΠΙΔ|ΛΕΧ|Îœ|ΠΑΤ|Ρ|Λ|ΜΕΔ|ΜΕΣΑΖ|ΥΠΟΤΕΙÎ|ΑΜ|ΑΙΘ|ΑÎΗΚ|ΔΕΣΠΟΖ|ΕÎΔΙΑΦΕΡ|ΔΕ|ΔΕΥΤΕΡΕΥ|ΚΑΘΑΡΕΥ|ΠΛΕ|ΤΣΑ)$/'; | |
$exept16 = '/(ΠΟΔΑΡ|ΒΛΕΠ|ΠΑÎΤΑΧ|ΦΡΥΔ|ΜΑÎΤΙΛ|ΜΑΛΛ|ΚΥΜΑΤ|ΛΑΧ|ΛΗΓ|ΦΑΓ|ΟΜ|ΠΡΩΤ)$/'; | |
if( preg_match($exept15,$w) || preg_match($exept16,$w) ){ | |
$w = $w . "ΟΥΣ"; | |
} | |
} | |
//Step 5i | |
$re = '/^(.+?)(ΑΓΑ|ΑΓΕΣ|ΑΓΕ)$/'; | |
$numberOfRulesExamined++; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept17 = '/^(ΨΟΦ|ÎΑΥΛΟΧ)$/'; | |
$exept20 = '/(ΚΟΛΛ)$/'; | |
$exept18 = '/^(ΑΒΑΣΤ|ΠΟΛΥΦ|ΑΔΗΦ|ΠΑΜΦ|Ρ|ΑΣΠ|ΑΦ|ΑΜΑΛ|ΑΜΑΛΛΙ|ΑÎΥΣΤ|ΑΠΕΡ|ΑΣΠΑΡ|ΑΧΑΡ|ΔΕΡΒΕÎ|ΔΡΟΣΟΠ|ΞΕΦ|ÎΕΟΠ|ÎΟΜΟΤ|ΟΛΟΠ|ΟΜΟΤ|ΠΡΟΣΤ|ΠΡΟΣΩΠΟΠ|ΣΥΜΠ|ΣΥÎΤ|Τ|ΥΠΟΤ|ΧΑΡ|ΑΕΙΠ|ΑΙΜΟΣΤ|ΑÎΥΠ|ΑΠΟΤ|ΑΡΤΙΠ|ΔΙΑΤ|ΕÎ|ΕΠΙΤ|ΚΡΟΚΑΛΟΠ|ΣΙΔΗΡΟΠ|Λ|ÎΑΥ|ΟΥΛΑΜ|ΟΥΡ|Î |ΤΡ|Îœ)$/'; | |
$exept19 = '/(ΟΦ|ΠΕΛ|ΧΟΡΤ|ΛΛ|ΣΦ|ΡΠ|ΦΡ|ΠΡ|ΛΟΧ|ΣΜΗÎ)$/'; | |
if( (preg_match($exept18,$w) || preg_match($exept19,$w)) | |
&& !(preg_match($exept17,$w) || preg_match($exept20,$w)) ) { | |
$w = $w . "ΑΓ"; | |
} | |
} | |
//Step 5j | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΗΣΕ|ΗΣΟΥ|ΗΣΑ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept21 = '/^(Î|ΧΕΡΣΟÎ|ΔΩΔΕΚΑÎ|ΕΡΗΜΟÎ|ΜΕΓΑΛΟÎ|ΕΠΤΑÎ)$/'; | |
if( preg_match($exept21,$w) ){ | |
$w = $w . "ΗΣ"; | |
} | |
} | |
//Step 5k | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΗΣΤΕ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept22 = '/^(ΑΣΒ|ΣΒ|ΑΧΡ|ΧΡ|ΑΠΛ|ΑΕΙΜÎ|ΔΥΣΧΡ|ΕΥΧΡ|ΚΟΙÎΟΧΡ|ΠΑΛΙΜΨ)$/'; | |
if( preg_match($exept22,$w) ){ | |
$w = $w . "ΗΣΤ"; | |
} | |
} | |
//Step 5l | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΟΥÎΕ|ΗΣΟΥÎΕ|ΗΘΟΥÎΕ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept23 = '/^(Î|Ρ|ΣΠΙ|ΣΤΡΑΒΟΜΟΥΤΣ|ΚΑΚΟΜΟΥΤΣ|ΕΞΩÎ)$/'; | |
if( preg_match($exept23,$w) ){ | |
$w = $w . "ΟΥÎ"; | |
} | |
} | |
//Step 5l | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΟΥΜΕ|ΗΣΟΥΜΕ|ΗΘΟΥΜΕ)$/'; | |
if( preg_match($re,$w) ) { | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
$test1 = false; | |
$exept24 = '/^(ΠΑΡΑΣΟΥΣ|Φ|Χ|ΩΡΙΟΠΛ|ΑΖ|ΑΛΛΟΣΟΥΣ|ΑΣΟΥΣ)$/'; | |
if( preg_match($exept24,$w) ){ | |
$w = $w . "ΟΥΜ"; | |
} | |
} | |
// Step 6 | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΜΑΤΑ|ΜΑΤΩÎ|ΜΑΤΟΣ)$/'; | |
$re2 = '/^(.+?)(Α|ΑΓΑΤΕ|ΑΓΑÎ|ΑΕΙ|ΑΜΑΙ|ΑÎ|ΑΣ|ΑΣΑΙ|ΑΤΑΙ|ΑΩ|Ε|ΕΙ|ΕΙΣ|ΕΙΤΕ|ΕΣΑΙ|ΕΣ|ΕΤΑΙ|Ι|ΙΕΜΑΙ|ΙΕΜΑΣΤΕ|ΙΕΤΑΙ|ΙΕΣΑΙ|ΙΕΣΑΣΤΕ|ΙΟΜΑΣΤΑÎ|ΙΟΜΟΥÎ|ΙΟΜΟΥÎΑ|ΙΟÎΤΑÎ|ΙΟÎΤΟΥΣΑÎ|ΙΟΣΑΣΤΑÎ|ΙΟΣΑΣΤΕ|ΙΟΣΟΥÎ|ΙΟΣΟΥÎΑ|ΙΟΤΑÎ|ΙΟΥΜΑ|ΙΟΥΜΑΣΤΕ|ΙΟΥÎΤΑΙ|ΙΟΥÎΤΑÎ|Η|ΗΔΕΣ|ΗΔΩÎ|ΗΘΕΙ|ΗΘΕΙΣ|ΗΘΕΙΤΕ|ΗΘΗΚΑΤΕ|ΗΘΗΚΑÎ|ΗΘΟΥÎ|ΗΘΩ|ΗΚΑΤΕ|ΗΚΑÎ|ΗΣ|ΗΣΑÎ|ΗΣΑΤΕ|ΗΣΕΙ|ΗΣΕΣ|ΗΣΟΥÎ|ΗΣΩ|Ο|ΟΙ|ΟΜΑΙ|ΟΜΑΣΤΑÎ|ΟΜΟΥÎ|ΟΜΟΥÎΑ|ΟÎΤΑΙ|ΟÎΤΑÎ|ΟÎΤΟΥΣΑÎ|ΟΣ|ΟΣΑΣΤΑÎ|ΟΣΑΣΤΕ|ΟΣΟΥÎ|ΟΣΟΥÎΑ|ΟΤΑÎ|ΟΥ|ΟΥΜΑΙ|ΟΥΜΑΣΤΕ|ΟΥÎ|ΟΥÎΤΑΙ|ΟΥÎΤΑÎ|ΟΥΣ|ΟΥΣΑÎ|ΟΥΣΑΤΕ|Î¥|ΥΣ|Ω|ΩÎ)$/'; | |
if( preg_match($re,$w,$match)) { | |
$stem = $match[1]; | |
$w = $stem . "ΜΑ"; | |
} | |
$numberOfRulesExamined++; | |
if( preg_match($re2,$w) && $test1 ) { | |
preg_match($re2,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
} | |
// Step 7 (ΠΑΡΑΘΕΤΙΚΑ) | |
$numberOfRulesExamined++; | |
$re = '/^(.+?)(ΕΣΤΕΡ|ΕΣΤΑΤ|ΟΤΕΡ|ΟΤΑΤ|ΥΤΕΡ|ΥΤΑΤ|ΩΤΕΡ|ΩΤΑΤ)$/'; | |
if( preg_match($re,$w) ){ | |
preg_match($re,$w,$match); | |
$stem = $match[1]; | |
$w = $stem; | |
} | |
return returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined); | |
} | |
protected function returnStem($w,$w_CASE,$encoding_changed,$numberOfRulesExamined) | |
{ | |
//convert case back to initial by reading $w_CASE | |
$unacceptedLetters=array("α","β","γ","δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","Ï€","Ï","σ","Ï„","Ï…","φ","χ","ψ","ω","ά","Î","ή","ί","ÏŒ","Ï","Ï‚","ÏŽ","ÏŠ"); | |
$acceptedLetters=array("Α","Î’","Γ","Δ","Ε","Ζ","Η","Θ","Ι","Κ","Λ","Îœ","Î","Ξ","Ο","Î ","Ρ","Σ","Τ","Î¥","Φ","Χ","Ψ","Ω","Α","Ε","Η","Ι","Ο","Î¥","Σ","Ω","Ι"); | |
for($i=0;$i<=strlen($w)-1;$i++){ | |
if (@$w_CASE[$i]==1){ | |
for($k=0;$k<=32;$k=$k+1){ | |
if ($w[$i]== $acceptedLetters[$k]){ | |
$w[$i]= $unacceptedLetters[$k]; | |
} | |
} | |
} | |
else if (@$w_CASE[$i]==2){$w[$i]="Ï‚";} | |
} | |
return $w; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment