Download tools/mosesdecoder/OnDiskPt/OnDiskQuery.cpp from Quagmire1/wiki-cased: direct link, hf CLI and curl.
- Browser
- Download file 2.16 kB
-
https://huggingface.co/Quagmire1/wiki-cased/resolve/main/tools/mosesdecoder/OnDiskPt/OnDiskQuery.cpp
- Command line
-
hf download hf://Quagmire1/wiki-cased/tools/mosesdecoder/OnDiskPt/OnDiskQuery.cpp
-
curl -L -o OnDiskQuery.cpp https://huggingface.co/Quagmire1/wiki-cased/resolve/main/tools/mosesdecoder/OnDiskPt/OnDiskQuery.cpp
2.16 kB
| namespace OnDiskPt | |
| { | |
| void OnDiskQuery::Tokenize(Phrase &phrase, | |
| const std::string &token, | |
| bool addSourceNonTerm, | |
| bool addTargetNonTerm) | |
| { | |
| bool nonTerm = false; | |
| size_t tokSize = token.size(); | |
| int comStr =token.compare(0, 1, "["); | |
| if (comStr == 0) { | |
| comStr = token.compare(tokSize - 1, 1, "]"); | |
| nonTerm = comStr == 0; | |
| } | |
| if (nonTerm) { | |
| // non-term | |
| size_t splitPos = token.find_first_of("[", 2); | |
| std::string wordStr = token.substr(0, splitPos); | |
| if (splitPos == std::string::npos) { | |
| // lhs - only 1 word | |
| WordPtr word (new Word()); | |
| word->CreateFromString(wordStr, m_wrapper.GetVocab()); | |
| phrase.AddWord(word); | |
| } else { | |
| // source & target non-terms | |
| if (addSourceNonTerm) { | |
| WordPtr word( new Word()); | |
| word->CreateFromString(wordStr, m_wrapper.GetVocab()); | |
| phrase.AddWord(word); | |
| } | |
| wordStr = token.substr(splitPos, tokSize - splitPos); | |
| if (addTargetNonTerm) { | |
| WordPtr word(new Word()); | |
| word->CreateFromString(wordStr, m_wrapper.GetVocab()); | |
| phrase.AddWord(word); | |
| } | |
| } | |
| } else { | |
| // term | |
| WordPtr word(new Word()); | |
| word->CreateFromString(token, m_wrapper.GetVocab()); | |
| phrase.AddWord(word); | |
| } | |
| } | |
| SourcePhrase OnDiskQuery::Tokenize(const std::vector<std::string>& tokens) | |
| { | |
| SourcePhrase sourcePhrase; | |
| if (tokens.size() > 0) { | |
| std::vector<std::string>::const_iterator token = tokens.begin(); | |
| for (; token + 1 != tokens.end(); ++token) { | |
| Tokenize(sourcePhrase, *token, true, true); | |
| } | |
| // last position. LHS non-term | |
| Tokenize(sourcePhrase, *token, false, true); | |
| } | |
| return sourcePhrase; | |
| } | |
| const PhraseNode* OnDiskQuery::Query(const SourcePhrase& sourcePhrase) | |
| { | |
| const PhraseNode *node = &m_wrapper.GetRootSourceNode(); | |
| assert(node); | |
| for (size_t pos = 0; pos < sourcePhrase.GetSize(); ++pos) { | |
| const Word &word = sourcePhrase.GetWord(pos); | |
| node = node->GetChild(word, m_wrapper); | |
| if (node == NULL) { | |
| break; | |
| } | |
| } | |
| return node; | |
| } | |
| } | |