import java.util.Arrays;
import java.util.HashSet;
/**
* This file is part of PTStemmer, an open-source Java Stemming toolkit for the Portuguese language
* More information at http://code.google.com/p/ptstemmer/
*
*
* Portuguese Porter Stemming algorithm as defined in:
* http://snowball.tartarus.org/algorithms/portuguese/stemmer.html
* @author Pedro Oliveira (http://student.dei.uc.pt/~pcoliv)
*
*/
public class PortuguesePorterStemmer{
public String wordStemming(String word)
{
return algorithm(word);
}
private String algorithm(String st)
{
st = processNasalidedVowels(st);
String stem = st;
String r1 = findR(stem);
String r2 = findR(r1);
String rv = findRV(stem);
stem = step1(stem,r1,r2,rv);
if(stem.compareTo(st)==0)
stem = step2(stem,r1,r2,rv);
else
{
r1 = findR(stem);
r2 = findR(r1);
rv = findRV(stem);
}
if(stem.compareTo(st)!=0)
{
r1 = findR(stem);
r2 = findR(r1);
rv = findRV(stem);
stem = step3(stem,r1,r2,rv);
}
else
stem = step4(stem,r1,r2,rv);
if(stem.compareTo(st)!=0)
{
r1 = findR(stem);
r2 = findR(r1);
rv = findRV(stem);
}
stem = step5(stem,r1,r2,rv);
stem = deprocessNasalidedVowels(stem);
return stem;
}
private String step1(String st, String r1, String r2, String rv)
{
int i;
for(i = 0; i2)
{
if(!vowels.contains(st.charAt(1)))
{
for(int i=2; i vowels = new HashSet(Arrays.asList('a', 'e', 'i', 'o', 'u', 'á', 'é', 'í', 'ó', 'ú', 'â', 'ê', 'ô'));
private final String suffix1[] = {"amentos", "imentos", "amento", "imento", "adoras", "adores", "aço~es", "ismos", "istas", "adora", "aça~o", "antes", "ância", "ezas", "icos", "icas", "ismo", "ável", "ível", "ista", "osos", "osas", "ador", "ante", "eza", "ico", "ica", "oso", "osa"};
private final String suffix2[] ={"logías", "logía"};
private final String suffix3[] ={"uciones", "ución"};
private final String suffix4[] ={"ências", "ência"};
private final String suffix5[] ={"amente"};
private final String suffix6[] ={"mente"};
private final String suffix7[] ={"idades", "idade"};
private final String suffix8[] ={"ivas", "ivos", "iva", "ivo"};
private final String suffix9[] ={"iras", "ira"};
private final String suffixv[] = {"aríamos", "eríamos", "iríamos", "ássemos", "êssemos", "íssemos", "aríeis", "eríeis", "iríeis", "ásseis", "ésseis", "ísseis", "áramos", "éramos", "íramos", "ávamos", "aremos", "eremos", "iremos", "ariam", "eriam", "iriam", "assem", "essem", "issem", "ara~o", "era~o", "ira~o", "arias", "erias", "irias", "ardes", "erdes", "irdes", "asses", "esses", "isses", "astes", "estes", "istes", "áreis", "areis", "éreis", "ereis", "íreis", "ireis", "áveis", "íamos", "armos", "ermos", "irmos", "aria", "eria", "iria", "asse", "esse", "isse", "aste", "este", "iste", "arei", "erei", "irei", "aram", "eram", "iram", "avam", "arem", "erem", "irem", "ando", "endo", "indo", "adas", "idas", "arás", "aras", "erás", "eras", "irás", "avas", "ares", "eres", "ires", "íeis", "ados", "idos", "ámos", "amos", "emos", "imos", "iras", "ada", "ida", "ará", "ara", "erá", "era", "irá", "ava", "iam", "ado", "ido", "ias", "ais", "eis", "ira", "ia", "ei", "am", "em", "ar", "er", "ir", "as", "es", "is", "eu", "iu", "ou"};
private final String suffixr[] = {"os", "a", "i", "o", "á", "í", "ó"};
private final String suffixf[] = {"e", "é", "ê"};
}