Izboljšanje zmožnosti iskanja kitajskih sporočil v Telegramu
Zaključek
Ključne točke
- Zbirka podatkov Telegrama: Telegram uporablja SQLite kot svojo zbirko podatkov.
- Mehanizem iskanja po celotnem besedilu: Funkcija iskanja po celotnem besedilu v Telegramu razdeli nize z uporabo razčlenjevalnika (Tokenizer) v besedne zveze in generira zgoščene vrednosti (hash vrednosti), ki se med iskanjem primerjajo z zgoščeno tabelo (hash tabelo).
- Generator žetonov (tokenov): Generator žetonov (tokenov) se opira na ločevalce in razdeljevalce za razrez nizov.
- Definicija žetona (tokena): Vsebina, ki ni ločevalec ali razdeljevalec, se šteje za "žeton" ("token"), kar vključuje tri vrste: velike črke (*), števke (N) in druge znake (Co).
- Obdelava znakov CJK: Večina kitajskih, japonskih in korejskih (CJK) znakov v Unicode se prepozna kot žeton (token).
Ker med kitajskimi pismenkami ni ločevalcev, Telegram celoten niz pismenk zgošča (hashira), kar vodi do slabe učinkovitosti iskanja. Ta članek se poglobljeno posveča omejitvam iskanja kitajskih sporočil v Telegramu z vidika kode.
Predlogi za izboljšave
- Ročno vstavljanje ločevalcev: Ročno dodajte nevidne ločevalce med kitajske pismenke, da izboljšate učinkovitost iskanja.
- Prilagojen razčlenjevalnik (Tokenizer): Razvijte prilagojen razčlenjevalnik (Tokenizer) in spremenite odjemalca Telegram, da izboljšate funkcijo iskanja.
Semantično iskanje z umetno inteligenco (UI)
Poleg tradicionalnih metod iskanja, uvedba umetne inteligence (UI) ponuja boljše rešitve za semantično iskanje. Projekt telegram-search uporablja vgradne (embedding) modele, kar uporabnikom omogoča iskanje želenih vsebin, tudi če nimajo natančnih ujemajočih se ključnih besed. Na primer, z vnosom "昨晚吃饭的那个人" (oseba, ki je včeraj zvečer jedla) lahko najdete "昨天晚上和我们一起吃饭的男的" (moški, ki je včeraj zvečer jedel z nami).