Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static StemmedWord SchinkeStemmer(string word) {
- StringBuilder stembuilder = new StringBuilder(word.ToLower());
- stembuilder.Replace('j', 'i');
- stembuilder.Replace('v', 'u');
- //Remove -que suffix
- if (stembuilder.ToString().EndsWith("que")) {
- //Check for special case.
- if (conj_dir_write.Contains(stembuilder.ToString())) {
- return new StemmedWord(stembuilder.ToString(), stembuilder.ToString());
- }
- //Remove "que" suffix.
- else {
- stembuilder.Remove(stembuilder.Length - 3, 3);
- }
- //Check and remove noun suffix
- string stemmed_noun = "";
- foreach (string noun_suffix in noun_suffixes) {
- if (stembuilder.ToString().EndsWith(noun_suffix) ) {
- if (stembuilder.Length - noun_suffix.Length >= 2) {
- stemmed_noun = stembuilder.ToString().Remove(stembuilder.Length - noun_suffix.Length);
- }
- break;
- }
- }
- string stemmed_verb = "";
- //New StringBuilder for verb.
- foreach (string verb_suffix in verb_suffixes) {
- if (stembuilder.ToString().EndsWith(verb_suffix)) {
- if (verb_i_suffixes.Contains(verb_suffix)) {
- stemmed_verb = stembuilder.ToString().Remove(stembuilder.Length - verb_suffix.Length) + "i";
- }
- else if (verb_bi_suffixes.Contains(verb_suffix)) {
- stemmed_verb = stembuilder.ToString().Remove(stembuilder.Length - verb_suffix.Length) + "bi";
- }
- else if (verb_suffix == "ero") {
- stemmed_verb = stembuilder.ToString().Remove(stembuilder.Length - verb_suffix.Length) + "eri";
- }
- else {
- stemmed_verb = stembuilder.ToString().Remove(stembuilder.Length - verb_suffix.Length);
- }
- if (stemmed_verb.Length < 2) {
- stemmed_verb = "";
- }
- break;
- }
- }
- return new StemmedWord(stemmed_verb, stemmed_noun);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement