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

Method PassBackwardCompatibleToken

library/cpp/tokenizer/nlpparser.cpp:241–286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

239}
240
241void TNlpParser::PassBackwardCompatibleToken(const TWideToken& multitoken, NLP_TYPE type, size_t totalLen) {
242 if (multitoken.SubTokens.size() == 1) {
243 const TCharSpan& subtok = multitoken.SubTokens[0];
244 TWideToken tok;
245 if (subtok.PrefixLen) {
246 tok.Token = multitoken.Token;
247 tok.Leng = subtok.PrefixLen;
248 SentBreakFilter.OnToken(tok, NLP_MISCTEXT);
249 TokenHandler.OnToken(tok, tok.Leng, NLP_MISCTEXT);
250 }
251
252 const ui16 prefixLen = subtok.PrefixLen;
253 tok.Token = multitoken.Token + prefixLen;
254 tok.Leng = multitoken.Leng - prefixLen;
255 tok.SubTokens.push_back(subtok);
256 tok.SubTokens[0].PrefixLen = 0;
257 tok.SubTokens[0].Pos -= prefixLen;
258
259 SentBreakFilter.OnToken(tok, type);
260 TokenHandler.OnToken(tok, tok.Leng + (totalLen - multitoken.Leng), type);
261 // suffix after alone number is kept, for example: 18+ -> [18+]
262 // if number with suffix is part of multitoken then suffix will be removed: 16+/18+ -> [16]+/[18]+
263 // see also tokenizer_ut.cpp
264 } else {
265 TWideToken tok;
266 TTokenIterator it(multitoken);
267 it.GetPrefix(tok); // prefix of the first token
268 if (tok.Leng) {
269 SentBreakFilter.OnToken(tok, NLP_MISCTEXT);
270 TokenHandler.OnToken(tok, tok.Leng, NLP_MISCTEXT);
271 }
272 while (it.Next()) {
273 it.GetMultitoken(tok);
274 SentBreakFilter.OnToken(tok, it.GetNlpType());
275 if (!it.Finished())
276 TokenHandler.OnToken(tok, tok.Leng, it.GetNlpType());
277 else
278 TokenHandler.OnToken(tok, tok.Leng + (totalLen - multitoken.Leng), it.GetNlpType());
279 it.GetDelimiter(tok);
280 if (tok.Leng) {
281 SentBreakFilter.OnToken(tok, NLP_MISCTEXT);
282 TokenHandler.OnToken(tok, tok.Leng, NLP_MISCTEXT);
283 }
284 }
285 }
286}
287
288void TNlpParser::MakeEntry(const wchar16* entry, size_t entryLen, NLP_TYPE type) {
289 TWideToken token; // don't call to constructor TWideToken(entry, leng)!

Callers

nothing calls this directly

Calls 9

GetPrefixMethod · 0.80
GetMultitokenMethod · 0.80
GetDelimiterMethod · 0.80
sizeMethod · 0.45
OnTokenMethod · 0.45
push_backMethod · 0.45
NextMethod · 0.45
GetNlpTypeMethod · 0.45
FinishedMethod · 0.45

Tested by

no test coverage detected