MCPcopy Create free account
hub / github.com/catboost/catboost / GetMultitoken

Method GetMultitoken

library/cpp/token/token_iterator.h:127–154  ·  view source on GitHub ↗

the first subtoken of multitoken has position equal to 0 @note only word tokens can have suffixes

Source from the content-addressed store, hash-verified

125 //! the first subtoken of multitoken has position equal to 0
126 //! @note only word tokens can have suffixes
127 void GetMultitoken(TWideToken& tok) const {
128 Y_ASSERT(!Tokens.empty());
129 tok.SubTokens = Tokens;
130 TTokenStructure& subtokens = tok.SubTokens;
131 const TCharSpan& first = subtokens[0];
132 TCharSpan& last = subtokens.back();
133 tok.Token = Tok.Token + first.Pos;
134 if (last.Type == TOKEN_WORD) {
135 tok.Leng = last.EndPos() + last.SuffixLen - first.Pos;
136 if (!Finished() && Subtokens[First].PrefixLen) {
137 const ui16 suffixLen = GetAdditionalSuffixLen();
138 tok.Leng += suffixLen;
139 last.SuffixLen += suffixLen;
140 }
141 } else {
142 tok.Leng = last.EndPos() - first.Pos;
143 last.SuffixLen = 0;
144 if (NlpType == NLP_INTEGER && !Finished() && Subtokens[First].PrefixLen) {
145 const ui16 suffixLen = GetIntegerSuffixLen();
146 tok.Leng += suffixLen;
147 last.SuffixLen = suffixLen;
148 }
149 }
150 subtokens[0].PrefixLen = 0;
151 const size_t diff = first.Pos;
152 for (auto& subtoken : subtokens)
153 subtoken.Pos -= diff;
154 }
155 ui16 GetAdditionalSuffixLen() const {
156 const TCharSpan& origtok = Subtokens[First - 1];
157 Y_ASSERT(origtok.Type == TOKEN_WORD && !Finished() && Subtokens[First].PrefixLen);

Callers 1

Calls 3

EndPosMethod · 0.80
emptyMethod · 0.45
backMethod · 0.45

Tested by

no test coverage detected