void BrazilianStemmer::step4()
 {
     if (RV.empty())
         return;
     
     if (checkSuffix(RV, L"os"))
     {
         CT = removeSuffix(CT, L"os");
         return;
     }
     if (checkSuffix(RV, L"a"))
     {
         CT = removeSuffix(CT, L"a");
         return;
     }
     if (checkSuffix(RV, L"i"))
     {
         CT = removeSuffix(CT, L"i");
         return;
     }
     if (checkSuffix(RV, L"o"))
     {
         CT = removeSuffix(CT, L"o");
         return;
     }
 }
    void BrazilianStemmer::step5()
    {
        if (RV.empty())
            return;
        
        if (checkSuffix(RV, L"e"))
        {
            if (suffixPreceded(RV, L"e", L"gu"))
            {
                CT = removeSuffix(CT, L"e");
                CT = removeSuffix(CT, L"u");
                return;
            }

            if (suffixPreceded(RV, L"e", L"ci"))
            {
                CT = removeSuffix(CT, L"e");
                CT = removeSuffix(CT, L"i");
                return;
            }

            CT = removeSuffix(CT, L"e");
            return;
        }
    }
Exemplo n.º 3
0
 bool
 FormatWriter::isThisType(const boost::filesystem::path& name,
                          bool                           /* open */) const
 {
   return checkSuffix(name,
                      writerProperties.suffixes,
                      writerProperties.compression_suffixes);
 }
 void BrazilianStemmer::step3()
 {
     if (RV.empty())
         return;
     
     if (checkSuffix(RV, L"i") && suffixPreceded(RV, L"i", L"c"))
         CT = removeSuffix(CT, L"i");
 }
Exemplo n.º 5
0
void FunctionDeclarationCompletionItem::executed(KTextEditor::View* view, const KTextEditor::Range& word)
{
    qCDebug(KDEV_PYTHON_CODECOMPLETION) << "FunctionDeclarationCompletionItem executed";
    KTextEditor::Document* document = view->document();
    auto resolvedDecl = Helper::resolveAliasDeclaration(declaration().data());
    DUChainReadLocker lock;
    auto functionDecl = Helper::functionForCalled(resolvedDecl).declaration;
    lock.unlock();
    if ( ! functionDecl && (! resolvedDecl || ! resolvedDecl->abstractType()
                           || resolvedDecl->abstractType()->whichType() != AbstractType::TypeStructure) ) {
        qCritical(KDEV_PYTHON_CODECOMPLETION) << "ERROR: could not get declaration data, not executing completion item!";
        return;
    }
    QString suffix = "()";
    KTextEditor::Range checkPrefix(word.start().line(), 0, word.start().line(), word.start().column());
    KTextEditor::Range checkSuffix(word.end().line(), word.end().column(), word.end().line(), document->lineLength(word.end().line()));
    if ( m_doNotCall || document->text(checkSuffix).trimmed().startsWith('(')
         || document->text(checkPrefix).trimmed().endsWith('@')
         || (functionDecl && Helper::findDecoratorByName(functionDecl, QLatin1String("property"))) )
    {
        // don't insert brackets if they're already there,
        // the item is a decorator, or if it's an import item.
        suffix.clear();
    }
    // place cursor behind bracktes by default
    int skip = 2;
    if ( functionDecl ) {
        bool needsArguments = false;
        int argumentCount = functionDecl->type<FunctionType>()->arguments().length();
        if ( functionDecl->context()->type() == KDevelop::DUContext::Class ) {
            // it's a member function, so it has the implicit self
            // TODO static methods
            needsArguments = argumentCount > 1;
        }
        else {
            // it's a free function
            needsArguments = argumentCount > 0;
        }
        if ( needsArguments ) {
            // place cursor in brackets if there's parameters
            skip = 1;
        }
    }
    document->replaceText(word, declaration()->identifier().toString() + suffix);
    view->setCursorPosition( Cursor(word.end().line(), word.end().column() + skip) );
}
Exemplo n.º 6
0
Arquivo: sr.cpp Projeto: koturn/sr
/*!
 * @brief プログラムのエントリポイント
 * @param [in] argc コマンドライン引数の数
 * @param [in] argv コマンドライン引数
 * @return  終了ステータス
 */
int main(int argc, char *argv[])
{
  std::string lang = DEFAULT_LANG;
  int remidx = parseArguments(argc, argv, lang);
  if (argc == remidx) {  // 引数のチェック
    std::cerr << "Invalid argument" << std::endl;
    showUsage(argv[0], EXIT_FAILURE);
  }

  try {
    std::vector<std::string> arg_list;
    for (int i = remidx; i < argc; i++) {
      arg_list.push_back(argv[i]);
    }
    clx::http session(clx::uri::encode(URL_HOST), HTTP_PORT);
    for (std::vector<std::string>::iterator arg = arg_list.begin(); arg != arg_list.end(); ++arg) {
      if (isDirectory(*arg)) {  // ディレクトリだった場合
        std::vector<std::string> file_list = getFileList(*arg);
        for (std::vector<std::string>::iterator fn = file_list.begin(); fn != file_list.end(); ++fn) {
          if (checkSuffix(*fn, "wav")) {
            std::cout << *fn << " ... ";
            try {
              speachToText(session, lang, *fn, *fn + ".txt");
              std::cout << "Proccessed" << std::endl;
            } catch (const char *errmsg) {
              std::cerr << errmsg << std::endl;
            }
          }
        }
      } else {  // ファイルだった場合
        std::cout << *arg << " ... ";
        try {
          speachToText(session, lang, *arg, *arg + ".txt");
          std::cout << "Proccessed" << std::endl;
        } catch (const char *errmsg) {
          std::cerr << errmsg << std::endl;
        }
      }
    }
  } catch (clx::socket_error &e) {
    std::cerr << e.what() << std::endl;
  }
  return EXIT_SUCCESS;
}
Exemplo n.º 7
0
 vector<string> wordBreak(string s, unordered_set<string> &dict) {
     vector<string>  res;
     if(s.size() == 0) return res;
     if(cache.find(s) != cache.end()) return cache.find(s)->second;
     
     if(dictContains(s, dict)) res.push_back(s);
     
     for(int i = 1; i < s.size(); i++){
         string prefix = s.substr(0, i);
         string suffix = s.substr(i);
         if(dictContains(prefix, dict) && checkSuffix(suffix, dict)){
             vector<string> words = wordBreak(suffix, dict);
             for(int j = 0; j < words.size(); j++){
                 res.push_back(prefix + " " + words[j]);
             }
         }
     }
     cache.insert({s, res});
     return res;
 }
Exemplo n.º 8
0
bool isChplSource(const char* filename) {
  bool retval = checkSuffix(filename, "chpl");
  if (retval) foundChplSource = true;
  return retval;
}
Exemplo n.º 9
0
bool isObjFile(const char* filename) {
  return checkSuffix(filename, "o");
}
Exemplo n.º 10
0
bool isCHeader(const char* filename) {
  return checkSuffix(filename, "h");
}
Exemplo n.º 11
0
bool isCSource(const char* filename) {
  return checkSuffix(filename, "c");
}
Exemplo n.º 12
0
    bool BrazilianStemmer::step2()
    {
        if (RV.empty())
            return false;
        
        // suffix lenght = 7
        if (RV.length() >= 7)
        {
            if (checkSuffix(RV, L"issemos"))
            {
                CT = removeSuffix(CT, L"issemos");
                return true;
            }
            if (checkSuffix(RV, L"essemos"))
            {
                CT = removeSuffix(CT, L"essemos");
                return true;
            }
            if (checkSuffix(RV, L"assemos"))
            {
                CT = removeSuffix(CT, L"assemos");
                return true;
            }
            if (checkSuffix(RV, L"ariamos"))
            {
                CT = removeSuffix(CT, L"ariamos");
                return true;
            }
            if (checkSuffix(RV, L"eriamos"))
            {
                CT = removeSuffix(CT, L"eriamos");
                return true;
            }
            if (checkSuffix(RV, L"iriamos"))
            {
                CT = removeSuffix(CT, L"iriamos");
                return true;
            }
        }

        // suffix length = 6
        if (RV.length() >= 6)
        {
            if (checkSuffix(RV, L"iremos"))
            {
                CT = removeSuffix(CT, L"iremos");
                return true;
            }
            if (checkSuffix(RV, L"eremos"))
            {
                CT = removeSuffix(CT, L"eremos");
                return true;
            }
            if (checkSuffix(RV, L"aremos"))
            {
                CT = removeSuffix(CT, L"aremos");
                return true;
            }
            if (checkSuffix(RV, L"avamos"))
            {
                CT = removeSuffix(CT, L"avamos");
                return true;
            }
            if (checkSuffix(RV, L"iramos"))
            {
                CT = removeSuffix(CT, L"iramos");
                return true;
            }
            if (checkSuffix(RV, L"eramos"))
            {
                CT = removeSuffix(CT, L"eramos");
                return true;
            }
            if (checkSuffix(RV, L"aramos"))
            {
                CT = removeSuffix(CT, L"aramos");
                return true;
            }
            if (checkSuffix(RV, L"asseis"))
            {
                CT = removeSuffix(CT, L"asseis");
                return true;
            }
            if (checkSuffix(RV, L"esseis"))
            {
                CT = removeSuffix(CT, L"esseis");
                return true;
            }
            if (checkSuffix(RV, L"isseis"))
            {
                CT = removeSuffix(CT, L"isseis");
                return true;
            }
            if (checkSuffix(RV, L"arieis"))
            {
                CT = removeSuffix(CT, L"arieis");
                return true;
            }
            if (checkSuffix(RV, L"erieis"))
            {
                CT = removeSuffix(CT, L"erieis");
                return true;
            }
            if (checkSuffix(RV, L"irieis"))
            {
                CT = removeSuffix(CT, L"irieis");
                return true;
            }
        }
        
        // suffix length = 5
        if (RV.length() >= 5)
        {
            if (checkSuffix(RV, L"irmos"))
            {
                CT = removeSuffix(CT, L"irmos");
                return true;
            }
            if (checkSuffix(RV, L"iamos"))
            {
                CT = removeSuffix(CT, L"iamos");
                return true;
            }
            if (checkSuffix(RV, L"armos"))
            {
                CT = removeSuffix(CT, L"armos");
                return true;
            }
            if (checkSuffix(RV, L"ermos"))
            {
                CT = removeSuffix(CT, L"ermos");
                return true;
            }
            if (checkSuffix(RV, L"areis"))
            {
                CT = removeSuffix(CT, L"areis");
                return true;
            }
            if (checkSuffix(RV, L"ereis"))
            {
                CT = removeSuffix(CT, L"ereis");
                return true;
            }
            if (checkSuffix(RV, L"ireis"))
            {
                CT = removeSuffix(CT, L"ireis");
                return true;
            }
            if (checkSuffix(RV, L"asses"))
            {
                CT = removeSuffix(CT, L"asses");
                return true;
            }
            if (checkSuffix(RV, L"esses"))
            {
                CT = removeSuffix(CT, L"esses");
                return true;
            }
            if (checkSuffix(RV, L"isses"))
            {
                CT = removeSuffix(CT, L"isses");
                return true;
            }
            if (checkSuffix(RV, L"astes"))
            {
                CT = removeSuffix(CT, L"astes");
                return true;
            }
            if (checkSuffix(RV, L"assem"))
            {
                CT = removeSuffix(CT, L"assem");
                return true;
            }
            if (checkSuffix(RV, L"essem"))
            {
                CT = removeSuffix(CT, L"essem");
                return true;
            }
            if (checkSuffix(RV, L"issem"))
            {
                CT = removeSuffix(CT, L"issem");
                return true;
            }
            if (checkSuffix(RV, L"ardes"))
            {
                CT = removeSuffix(CT, L"ardes");
                return true;
            }
            if (checkSuffix(RV, L"erdes"))
            {
                CT = removeSuffix(CT, L"erdes");
                return true;
            }
            if (checkSuffix(RV, L"irdes"))
            {
                CT = removeSuffix(CT, L"irdes");
                return true;
            }
            if (checkSuffix(RV, L"ariam"))
            {
                CT = removeSuffix(CT, L"ariam");
                return true;
            }
            if (checkSuffix(RV, L"eriam"))
            {
                CT = removeSuffix(CT, L"eriam");
                return true;
            }
            if (checkSuffix(RV, L"iriam"))
            {
                CT = removeSuffix(CT, L"iriam");
                return true;
            }
            if (checkSuffix(RV, L"arias"))
            {
                CT = removeSuffix(CT, L"arias");
                return true;
            }
            if (checkSuffix(RV, L"erias"))
            {
                CT = removeSuffix(CT, L"erias");
                return true;
            }
            if (checkSuffix(RV, L"irias"))
            {
                CT = removeSuffix(CT, L"irias");
                return true;
                }
            if (checkSuffix(RV, L"estes"))
            {
                CT = removeSuffix(CT, L"estes");
                return true;
            }
            if (checkSuffix(RV, L"istes"))
            {
                CT = removeSuffix(CT, L"istes");
                return true;
            }
            if (checkSuffix(RV, L"areis"))
            {
                CT = removeSuffix(CT, L"areis");
                return true;
            }
            if (checkSuffix(RV, L"aveis"))
            {
                CT = removeSuffix(CT, L"aveis");
                return true;
            }
        }

        // suffix length = 4
        if (RV.length() >= 4)
        {
            if (checkSuffix(RV, L"aria"))
            {
                CT = removeSuffix(CT, L"aria");
                return true;
            }
            if (checkSuffix(RV, L"eria"))
            {
                CT = removeSuffix(CT, L"eria");
                return true;
            }
            if (checkSuffix(RV, L"iria"))
            {
                CT = removeSuffix(CT, L"iria");
                return true;
            }
            if (checkSuffix(RV, L"asse"))
            {
                CT = removeSuffix(CT, L"asse");
                return true;
            }
            if (checkSuffix(RV, L"esse"))
            {
                CT = removeSuffix(CT, L"esse");
                return true;
            }
            if (checkSuffix(RV, L"isse"))
            {
                CT = removeSuffix(CT, L"isse");
                return true;
            }
            if (checkSuffix(RV, L"aste"))
            {
                CT = removeSuffix(CT, L"aste");
                return true;
            }
            if (checkSuffix(RV, L"este"))
            {
                CT = removeSuffix(CT, L"este");
                return true;
            }
            if (checkSuffix(RV, L"iste"))
            {
                CT = removeSuffix(CT, L"iste");
                return true;
            }
            if (checkSuffix(RV, L"arei"))
            {
                CT = removeSuffix(CT, L"arei");
                return true;
            }
            if (checkSuffix(RV, L"erei"))
            {
                CT = removeSuffix(CT, L"erei");
                return true;
            }
            if (checkSuffix(RV, L"irei"))
            {
                CT = removeSuffix(CT, L"irei");
                return true;
            }
            if (checkSuffix(RV, L"aram"))
            {
                CT = removeSuffix(CT, L"aram");
                return true;
            }
            if (checkSuffix(RV, L"eram"))
            {
                CT = removeSuffix(CT, L"eram");
                return true;
            }
            if (checkSuffix(RV, L"iram"))
            {
                CT = removeSuffix(CT, L"iram");
                return true;
            }
            if (checkSuffix(RV, L"avam"))
            {
                CT = removeSuffix(CT, L"avam");
                return true;
            }
            if (checkSuffix(RV, L"arem"))
            {
                CT = removeSuffix(CT, L"arem");
                return true;
            }
            if (checkSuffix(RV, L"erem"))
            {
                CT = removeSuffix(CT, L"erem");
                return true;
            }
            if (checkSuffix(RV, L"irem"))
            {
                CT = removeSuffix(CT, L"irem");
                return true;
            }
            if (checkSuffix(RV, L"ando"))
            {
                CT = removeSuffix(CT, L"ando");
                return true;
            }
            if (checkSuffix(RV, L"endo"))
            {
                CT = removeSuffix(CT, L"endo");
                return true;
            }
            if (checkSuffix(RV, L"indo"))
            {
                CT = removeSuffix(CT, L"indo");
                return true;
            }
            if (checkSuffix(RV, L"arao"))
            {
                CT = removeSuffix(CT, L"arao");
                return true;
            }
            if (checkSuffix(RV, L"erao"))
            {
                CT = removeSuffix(CT, L"erao");
                return true;
            }
            if (checkSuffix(RV, L"irao"))
            {
                CT = removeSuffix(CT, L"irao");
                return true;
            }
            if (checkSuffix(RV, L"adas"))
            {
                CT = removeSuffix(CT, L"adas");
                return true;
            }
            if (checkSuffix(RV, L"idas"))
            {
                CT = removeSuffix(CT, L"idas");
                return true;
            }
            if (checkSuffix(RV, L"aras"))
            {
                CT = removeSuffix(CT, L"aras");
                return true;
            }
            if (checkSuffix(RV, L"eras"))
            {
                CT = removeSuffix(CT, L"eras");
                return true;
            }
            if (checkSuffix(RV, L"iras"))
            {
                CT = removeSuffix(CT, L"iras");
                return true;
            }
            if (checkSuffix(RV, L"avas"))
            {
                CT = removeSuffix(CT, L"avas");
                return true;
            }
            if (checkSuffix(RV, L"ares"))
            {
                CT = removeSuffix(CT, L"ares");
                return true;
            }
            if (checkSuffix(RV, L"eres"))
            {
                CT = removeSuffix(CT, L"eres");
                return true;
            }
            if (checkSuffix(RV, L"ires"))
            {
                CT = removeSuffix(CT, L"ires");
                return true;
            }
            if (checkSuffix(RV, L"ados"))
            {
                CT = removeSuffix(CT, L"ados");
                return true;
            }
            if (checkSuffix(RV, L"idos"))
            {
                CT = removeSuffix(CT, L"idos");
                return true;
            }
            if (checkSuffix(RV, L"amos"))
            {
                CT = removeSuffix(CT, L"amos");
                return true;
            }
            if (checkSuffix(RV, L"emos"))
            {
                CT = removeSuffix(CT, L"emos");
                return true;
            }
            if (checkSuffix(RV, L"imos"))
            {
                CT = removeSuffix(CT, L"imos");
                return true;
            }
            if (checkSuffix(RV, L"iras"))
            {
                CT = removeSuffix(CT, L"iras");
                return true;
            }
            if (checkSuffix(RV, L"ieis"))
            {
                CT = removeSuffix(CT, L"ieis");
                return true;
            }
        }

        // suffix length = 3
        if (RV.length() >= 3)
        {
            if (checkSuffix(RV, L"ada"))
            {
                CT = removeSuffix(CT, L"ada");
                return true;
            }
            if (checkSuffix(RV, L"ida"))
            {
                CT = removeSuffix(CT, L"ida");
                return true;
            }
            if (checkSuffix(RV, L"ara"))
            {
                CT = removeSuffix(CT, L"ara");
                return true;
            }
            if (checkSuffix(RV, L"era"))
            {
                CT = removeSuffix(CT, L"era");
                return true;
            }
            if (checkSuffix(RV, L"ira"))
            {
                CT = removeSuffix(CT, L"ava");
                return true;
            }
            if (checkSuffix(RV, L"iam"))
            {
                CT = removeSuffix(CT, L"iam");
                return true;
            }
            if (checkSuffix(RV, L"ado"))
            {
                CT = removeSuffix(CT, L"ado");
                return true;
            }
            if (checkSuffix(RV, L"ido"))
            {
                CT = removeSuffix(CT, L"ido");
                return true;
            }
            if (checkSuffix(RV, L"ias"))
            {
                CT = removeSuffix(CT, L"ias");
                return true;
            }
            if (checkSuffix(RV, L"ais"))
            {
                CT = removeSuffix(CT, L"ais");
                return true;
            }
            if (checkSuffix(RV, L"eis"))
            {
                CT = removeSuffix(CT, L"eis");
                return true;
            }
            if (checkSuffix(RV, L"ira"))
            {
                CT = removeSuffix(CT, L"ira");
                return true;
            }
            if (checkSuffix(RV, L"ear"))
            {
                CT = removeSuffix(CT, L"ear");
                return true;
            }
        }

                // suffix length = 2
        if (RV.length() >= 2)
        {
            if (checkSuffix(RV, L"ia"))
            {
                CT = removeSuffix(CT, L"ia");
                return true;
            }
            if (checkSuffix(RV, L"ei"))
            {
                CT = removeSuffix(CT, L"ei");
                return true;
            }
            if (checkSuffix(RV, L"am"))
            {
                CT = removeSuffix(CT, L"am");
                return true;
            }
            if (checkSuffix(RV, L"em"))
            {
                CT = removeSuffix(CT, L"em");
                return true;
            }
            if (checkSuffix(RV, L"ar"))
            {
                CT = removeSuffix(CT, L"ar");
                return true;
            }
            if (checkSuffix(RV, L"er"))
            {
                CT = removeSuffix(CT, L"er");
                return true;
            }
            if (checkSuffix(RV, L"ir"))
            {
                CT = removeSuffix(CT, L"ir");
                return true;
            }
            if (checkSuffix(RV, L"as"))
            {
                CT = removeSuffix(CT, L"as");
                return true;
            }
            if (checkSuffix(RV, L"es"))
            {
                CT = removeSuffix(CT, L"es");
                return true;
            }
            if (checkSuffix(RV, L"is"))
            {
                CT = removeSuffix(CT, L"is");
                return true;
            }
            if (checkSuffix(RV, L"eu"))
            {
                CT = removeSuffix(CT, L"eu");
                return true;
            }
            if (checkSuffix(RV, L"iu"))
            {
                CT = removeSuffix(CT, L"iu");
                return true;
            }
            if (checkSuffix(RV, L"iu"))
            {
                CT = removeSuffix(CT, L"iu");
                return true;
            }
            if (checkSuffix(RV, L"ou"))
            {
                CT = removeSuffix(CT, L"ou");
                return true;
            }
        }

        // no ending was removed by step2
        return false;
    }
Exemplo n.º 13
0
    bool BrazilianStemmer::step1()
    {
        if (CT.empty())
            return false;
        
        // suffix length = 7
        if (checkSuffix(CT, L"uciones") && checkSuffix(R2, L"uciones"))
        {
            CT = replaceSuffix(CT, L"uciones", L"u");
            return true;
        }

        // suffix length = 6
        if (CT.length() >= 6)
        {
            if (checkSuffix(CT, L"imentos") && checkSuffix(R2, L"imentos"))
            {
                CT = removeSuffix(CT, L"imentos");
                return true;
            }
            if (checkSuffix(CT, L"amentos") && checkSuffix(R2, L"amentos"))
            {
                CT = removeSuffix(CT, L"amentos");
                return true;
            }
            if (checkSuffix(CT, L"adores") && checkSuffix(R2, L"adores"))
            {
                CT = removeSuffix(CT, L"adores");
                return true;
            }
            if (checkSuffix(CT, L"adoras") && checkSuffix(R2, L"adoras"))
            {
                CT = removeSuffix(CT, L"adoras");
                return true;
            }
            if (checkSuffix(CT, L"logias") && checkSuffix(R2, L"logias")) 
            {
                replaceSuffix(CT, L"logias", L"log");
                return true;
            }
            if (checkSuffix(CT, L"encias") && checkSuffix(R2, L"encias"))
            {
                CT = replaceSuffix(CT, L"encias", L"ente");
                return true;
            }
            if (checkSuffix(CT, L"amente") && checkSuffix(R1, L"amente"))
            {
                CT = removeSuffix(CT, L"amente");
                return true;
            }
            if (checkSuffix(CT, L"idades") && checkSuffix(R2, L"idades"))
            {
                CT = removeSuffix(CT, L"idades");
                return true;
            }
        }

        // suffix length = 5
        if (CT.length() >= 5)
        {
            if (checkSuffix(CT, L"acoes") && checkSuffix(R2, L"acoes"))
            {
                CT = removeSuffix(CT, L"acoes");
                return true;
            }
            if (checkSuffix(CT, L"imento") && checkSuffix(R2, L"imento"))
            {
                CT = removeSuffix(CT, L"imento");
                return true;
            }
            if (checkSuffix(CT, L"amento") && checkSuffix(R2, L"amento"))
            {
                CT = removeSuffix(CT, L"amento");
                return true;
            }
            if (checkSuffix(CT, L"adora") && checkSuffix(R2, L"adora"))
            {
                CT = removeSuffix(CT, L"adora");
                return true;
            }
            if (checkSuffix(CT, L"ismos") && checkSuffix(R2, L"ismos"))
            {
                CT = removeSuffix(CT, L"ismos");
                return true;
            }
            if (checkSuffix(CT, L"istas") && checkSuffix(R2, L"istas"))
            {
                CT = removeSuffix(CT, L"istas");
                return true;
            }
            if (checkSuffix(CT, L"logia") && checkSuffix(R2, L"logia"))
            {
                CT = replaceSuffix(CT, L"logia", L"log");
                return true;
            }
            if (checkSuffix(CT, L"ucion") && checkSuffix(R2, L"ucion"))
            {
                CT = replaceSuffix(CT, L"ucion", L"u");
                return true;
            }
            if (checkSuffix(CT, L"encia") && checkSuffix(R2, L"encia"))
            {
                CT = replaceSuffix(CT, L"encia", L"ente");
                return true;
            }
            if (checkSuffix(CT, L"mente") && checkSuffix(R2, L"mente"))
            {
                CT = removeSuffix(CT, L"mente");
                return true;
            }
            if (checkSuffix(CT, L"idade") && checkSuffix(R2, L"idade"))
            {
                CT = removeSuffix(CT, L"idade");
                return true;
            }
        }

        // suffix length = 4
        if (CT.length() >= 4)
        {
            if (checkSuffix(CT, L"acao") && checkSuffix(R2, L"acao"))
            {
                CT = removeSuffix(CT, L"acao");
                return true;
            }
            if (checkSuffix(CT, L"ezas") && checkSuffix(R2, L"ezas"))
            {
                CT = removeSuffix(CT, L"ezas");
                return true;
            }
            if (checkSuffix(CT, L"icos") && checkSuffix(R2, L"icos"))
            {
                CT = removeSuffix(CT, L"icos");
                return true;
            }
            if (checkSuffix(CT, L"icas") && checkSuffix(R2, L"icas"))
            {
                CT = removeSuffix(CT, L"icas");
                return true;
            }
            if (checkSuffix(CT, L"ismo") && checkSuffix(R2, L"ismo"))
            {
                CT = removeSuffix(CT, L"ismo");
                return true;
            }
            if (checkSuffix(CT, L"avel") && checkSuffix(R2, L"avel"))
            {
                CT = removeSuffix(CT, L"avel");
                return true;
            }
            if (checkSuffix(CT, L"ivel") && checkSuffix(R2, L"ivel"))
            {
                CT = removeSuffix(CT, L"ivel");
                return true;
            }
            if (checkSuffix(CT, L"ista") && checkSuffix(R2, L"ista"))
            {
                CT = removeSuffix(CT, L"ista");
                return true;
            }
            if (checkSuffix(CT, L"osos") && checkSuffix(R2, L"osos"))
            {
                CT = removeSuffix(CT, L"osos");
                return true;
            }
            if (checkSuffix(CT, L"osas") && checkSuffix(R2, L"osas"))
            {
                CT = removeSuffix(CT, L"osas");
                return true;
            }
            if (checkSuffix(CT, L"ador") && checkSuffix(R2, L"ador"))
            {
                CT = removeSuffix(CT, L"ador");
                return true;
            }
            if (checkSuffix(CT, L"ivas") && checkSuffix(R2, L"ivas"))
            {
                CT = removeSuffix(CT, L"ivas");
                return true;
            }
            if (checkSuffix(CT, L"ivos") && checkSuffix(R2, L"ivos"))
            {
                CT = removeSuffix(CT, L"ivos");
                return true;
            }
            if (checkSuffix(CT, L"iras") && checkSuffix(RV, L"iras") && suffixPreceded(CT, L"iras", L"e"))
            {
                CT = replaceSuffix(CT, L"iras", L"ir");
                return true;
            }
        }

        // suffix length = 3
        if (CT.length() >= 3)
        {
            if (checkSuffix(CT, L"eza") && checkSuffix(R2, L"eza"))
            {
                CT = removeSuffix(CT, L"eza");
                return true;
            }
            if (checkSuffix(CT, L"ico") && checkSuffix(R2, L"ico"))
            {
                CT = removeSuffix(CT, L"ico");
                return true;
            }
            if (checkSuffix(CT, L"ica") && checkSuffix(R2, L"ica"))
            {
                CT = removeSuffix(CT, L"ica");
                return true;
            }
            if (checkSuffix(CT, L"oso") && checkSuffix(R2, L"oso"))
            {
                CT = removeSuffix(CT, L"oso");
                return true;
            }
            if (checkSuffix(CT, L"osa") && checkSuffix(R2, L"osa"))
            {
                CT = removeSuffix(CT, L"osa");
                return true;
            }
            if (checkSuffix(CT, L"iva") && checkSuffix(R2, L"iva"))
            {
                CT = removeSuffix(CT, L"iva");
                return true;
            }
            if (checkSuffix(CT, L"ivo") && checkSuffix(R2, L"ivo"))
            {
                CT = removeSuffix(CT, L"ivo");
                return true;
            }
            if (checkSuffix(CT, L"ira") && checkSuffix(RV, L"ira") && suffixPreceded(CT, L"ira", L"e"))
            {
                CT = replaceSuffix(CT, L"ira", L"ir");
                return true;
            }
        }

        // no ending was removed by step1
        return false;
    }
Exemplo n.º 14
0
 bool BrazilianStemmer::suffixPreceded(const String& value, const String& suffix, const String& preceded)
 {
     if (value.empty() || suffix.empty() || preceded.empty() || !checkSuffix(value, suffix))
         return false;
     return checkSuffix(removeSuffix(value, suffix), preceded);
 }
Exemplo n.º 15
0
 String BrazilianStemmer::removeSuffix(const String& value, const String& toRemove)
 {
     if (value.empty() || toRemove.empty() || !checkSuffix(value, toRemove))
         return value;
     return value.substr(0, value.length() - toRemove.length());
 }