{"id":9128,"date":"2025-03-31T10:00:00","date_gmt":"2025-03-31T08:00:00","guid":{"rendered":"https:\/\/haimagazine.com\/?p=9128"},"modified":"2025-06-18T10:05:21","modified_gmt":"2025-06-18T08:05:21","slug":"bert-klasycznie-na-topie","status":"publish","type":"post","link":"https:\/\/haimagazine.com\/pl\/hai-magazine\/numer-4\/bert-klasycznie-na-topie\/","title":{"rendered":"\ud83d\udd12 BERT \u2013 klasycznie na topie"},"content":{"rendered":"<p>Kiedy m\u00f3wimy o modelach j\u0119zyka, mamy na my\u015bli przede wszystkim modele generatywne, takie jak GPT, Claude czy Gemini, kt\u00f3rych zadaniem jest odpowiadanie na pytania, wykonywanie polece\u0144 czy tworzenie tre\u015bci. Tak naprawd\u0119 modelowanie j\u0119zyka nie musi jednak wcale opiera\u0107 si\u0119 na generowaniu tekstu, gdy\u017c modelowanie oznacza tutaj opracowanie modelu (matematycznego, probabilistycznego) opisuj\u0105cego j\u0119zyk. Gdy przyjrzymy si\u0119 drzewu genealogicznemu modeli j\u0119zyka, zobaczymy, \u017ce dzieli si\u0119 ono na trzy g\u0142\u00f3wne ga\u0142\u0119zie. W pierwszej znajduj\u0105 si\u0119 doskonale nam znane generatywne modele j\u0119zyka, oparte na dekoderach z architektury transformera, w drugiej z kolei \u2013 modele oparte na enkoderach, kt\u00f3re nie s\u0105 nastawione na generowanie tekstu, tylko na tworzenie jego reprezentacji (wektor\u00f3w s\u0142\u00f3w i zda\u0144). Poprzez nauk\u0119 nienadzorowan\u0105 ucz\u0105 si\u0119 \u201erozumie\u0107\u201d j\u0119zyk i umieszcza\u0107 zdania o podobnym znaczeniu blisko siebie.<\/p><p>Enkodery nie mog\u0105 na przyk\u0142ad samodzielnie pe\u0142ni\u0107 funkcji asystenta, ale s\u0105 elementami wi\u0119kszych system\u00f3w uczenia maszynowego. Reprezentacje, kt\u00f3re tworz\u0105, mo\u017cna wykorzystywa\u0107 cho\u0107by w systemach Retrieval Augmented Generation (RAG), wyszukiwarkach czy systemach rekomendacyjnych, kt\u00f3re nie mog\u0142yby dzia\u0142a\u0107 bez dobrej reprezentacji tekstu. Ponadto s\u0105 podstaw\u0105 dla modeli uczenia maszynowego dedykowanych konkretnym zadaniom, takim jak klasyfikacja czy ekstrakcja informacji.<\/p><p>Cho\u0107 s\u0105 to dwa alternatywne sposoby tworzenia modeli j\u0119zyka, stwierdzenie, \u017ce modele oparte na dekoderach wygra\u0142y wy\u015bcig, by\u0142oby nieuczciwe. Co prawda nowy model do reprezentacji tekstu nie wzbudza takich emocji, jak nowa wersja GPT czy DeepSeek, ale to po prostu narz\u0119dzia do innych cel\u00f3w. Dodatkowo systemy te w\u0142a\u015bnie dlatego, \u017ce s\u0105 oparte na l\u017cejszych modelach, kt\u00f3re nie generuj\u0105 tekstu, a jedynie tworz\u0105 jego reprezentacje, mog\u0105 dzia\u0142a\u0107 lokalnie z du\u017c\u0105 wydajno\u015bci\u0105 i wi\u0119ksz\u0105 kontrol\u0105.<\/p><h4 class=\"wp-block-heading\"><strong>Od ko\u0144ca i od pocz\u0105tku<\/strong><\/h4><p>Jednym z pierwszych modeli j\u0119zyka opartych na enkoderach by\u0142 model BERT. Zosta\u0142 on opracowany przez Google w 2018 r. (praktycznie w tym samym czasie co pierwsza wersja GPT). Nazwa BERT to skr\u00f3t od <strong>Bidirectional Encoder Representations from Transformers<\/strong>. W nazwie tej zawarte s\u0105 w zasadzie najwa\u017cniejsze cechy modelu:<\/p><ul class=\"wp-block-list\"><li><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#0072bc\" class=\"has-inline-color\">Bidirectional<\/mark> <\/strong>\u2013 model jest dwukierunkowy, co oznacza, \u017ce analizuje tekst jednocze\u015bnie w obu kierunkach \u2013 zar\u00f3wno od pocz\u0105tku do ko\u0144ca, jak i od ko\u0144ca do pocz\u0105tku, zamiast przetwarza\u0107 go sekwencyjnie jak modele generatywne. W przeciwie\u0144stwie do modeli typu GPT nie generuje on tekstu, lecz tworzy jego reprezentacj\u0119, dlatego jest trenowany, aby korzysta\u0107 zar\u00f3wno z lewostronnego, jak i prawostronnego kontekstu. Mo\u017ce lepiej uchwyci\u0107 kontekst s\u0142\u00f3w, poniewa\u017c bierze pod uwag\u0119 zar\u00f3wno wcze\u015bniejsze, jak i p\u00f3\u017aniejsze cz\u0119\u015bci zdania przy tworzeniu tej reprezentacji.<\/li>\n\n<li><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#0072bc\" class=\"has-inline-color\">Encoder <\/mark><\/strong>\u2013 model korzysta z architektury transformera. Standardowy transformer sk\u0142ada si\u0119 z dw\u00f3ch cz\u0119\u015bci \u2013 enkodera i dekodera. Podczas gdy enkoder odpowiada za tworzenie reprezentacji sekwencji wej\u015bciowej, zadaniem dekodera jest wykorzystanie tych reprezentacji do generowania tekstu.<\/li>\n\n<li><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#0072bc\" class=\"has-inline-color\">Representations from Transformers<\/mark> <\/strong>\u2013 model ma za zadanie tworzenie reprezentacji tekstu. Wynikiem dzia\u0142a\u0144 BERT-a s\u0105 kontekstowe wektory s\u0142\u00f3w i zda\u0144, kt\u00f3re koduj\u0105 znaczenie poj\u0119\u0107. To w\u0142a\u015bnie te reprezentacje wykorzystuje si\u0119 jako wej\u015bcie do innych system\u00f3w NLP.<\/li><\/ul><h4 class=\"wp-block-heading\"><strong>Jak BERT uczy si\u0119 rozumie\u0107 j\u0119zyk<\/strong><\/h4><p>Podczas gdy modele GPT trenuje si\u0119 tak, by nauczy\u0142y si\u0119 przewidywa\u0107 nast\u0119pne s\u0142owo (Causal Language Modeling), Bert podchodzi do zadania zrozumienia j\u0119zyka w nieco inny spos\u00f3b. Wykorzystuje on dwa mechanizmy: Masked Language Modeling (MLM), kt\u00f3ry polega na zas\u0142anianiu losowych s\u0142\u00f3w w zdaniu i odgadywaniu, co sta\u0142o w ich miejscu, i Next Sentence Prediction (NSP), kt\u00f3ry polega na odgadywaniu, czy dwa zdania stanowi\u0105 logiczny ci\u0105g. Warto zaznaczy\u0107, \u017ce s\u0105 to tak zwane zadania pomocnicze (<em>pretext tasks<\/em>). Nie chodzi nam o stworzenie modelu, kt\u00f3ry doskonale uzupe\u0142nia luki w zdaniach. Model musi po prostu nauczy\u0107 si\u0119 po\u015brednio tworzy\u0107 dobre reprezentacje tekstu i tymi zadaniami zmuszamy go do nauki j\u0119zyka.<\/p><h4 class=\"wp-block-heading\"><strong>Masked Language Modeling<\/strong><\/h4><p>W tym zadaniu losowo wybiera si\u0119 kilka s\u0142\u00f3w i zast\u0119puje je specjalnym symbolem [MASK]. Na przyk\u0142ad zdanie \u201eKot \u015bpi na kanapie\u201d mo\u017ce zosta\u0107 przekszta\u0142cone na \u201eKot [MASK] na kanapie\u201d. Model musi odgadn\u0105\u0107, jakie s\u0142owo zosta\u0142o zast\u0105pione symbolem [MASK]. W tym wypadku model stara si\u0119 przewidzie\u0107, \u017ce brakuj\u0105cym s\u0142owem jest \u201e\u015bpi\u201d. Aby poprawnie przewidzie\u0107 brakuj\u0105ce s\u0142owo, model musi zrozumie\u0107 kontekst ca\u0142ego zdania. Dzi\u0119ki temu uczy si\u0119, jak s\u0142owa s\u0105 ze sob\u0105 powi\u0105zane i jak ich znaczenie zale\u017cy od otoczenia.<\/p><p>I tutaj w\u0142a\u015bnie wida\u0107 dwukierunkowo\u015b\u0107 BERT-a, bo \u017ceby przewidzie\u0107 brakuj\u0105ce s\u0142owo, mo\u017ce on korzysta\u0107 zar\u00f3wno z kontekstu lewostronnego, jak i prawostronnego, czyli nie czyta tekstu od pocz\u0105tku do ko\u0144ca, ale przetwarza ca\u0142\u0105 sekwencj\u0119 naraz.<\/p><p>Technicznie przewidywanie zamaskowanego s\u0142owa to klasyfikacja bazuj\u0105ca na reprezentacji tokenu [MASK], kt\u00f3ry zosta\u0142 stworzony przez BERT-a. Poprzez mechanizm atencji transformera reprezentacja ta jest iteracyjnie wzbogacona o informacje ze s\u0142\u00f3w s\u0105siednich i na wyj\u015bciu modelu otrzymujemy wektor tokenu [MASK] w kontek\u015bcie ca\u0142ego tekstu.<\/p><h4 class=\"wp-block-heading\"><strong>Next Sentence Prediction<\/strong><\/h4><p>Model otrzymuje pary zda\u0144. Jedna para mo\u017ce sk\u0142ada\u0107 si\u0119 z dw\u00f3ch kolejnych zda\u0144 tekstu (np. \u201eKot \u015bpi na kanapie. Jest zm\u0119czony po ca\u0142ym dniu zabawy\u201d), a druga para mo\u017ce sk\u0142ada\u0107 si\u0119 z losowo dobranych zda\u0144, kt\u00f3re nie maj\u0105 ze sob\u0105 zwi\u0105zku (np. \u201eKot \u015bpi na kanapie. Samoch\u00f3d jest zaparkowany na ulicy\u201d). <\/p><p class=\"has-text-align-center\"> <img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"405\" class=\"wp-image-9829\" style=\"width: 600px;\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/150_1.png\" alt=\"\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/150_1.png 467w, https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/150_1-300x202.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p><p>Model musi okre\u015bli\u0107, czy drugie zdanie jest logiczn\u0105 kontynuacj\u0105 pierwszego, czy nie (klasyfikacja binarna). W pierwszym wypadku model powinien stwierdzi\u0107, \u017ce zdania s\u0105 ze sob\u0105 powi\u0105zane, a w drugim \u2013 \u017ce nie s\u0105.<\/p><p>Klasyfikacja odbywa si\u0119 na podstawie reprezentacji tokenu [CLS]. Jest to specjalny sztucznie dodany token, kt\u00f3ry ma zawiera\u0107 uog\u00f3lnion\u0105 reprezentacj\u0119 ca\u0142ego zdania. Samo zadanie wymusza na modelu, by token [CLS] reprezentowa\u0142 ca\u0142e zdanie, bo \u017ceby m\u00f3c dokona\u0107 klasyfikacji jedynie na podstawie tego tokenu, si\u0142\u0105 rzeczy model musi nauczy\u0107 si\u0119 kodowa\u0107 w nim wszystkie informacje o zdaniu.<\/p><h4 class=\"wp-block-heading\"><strong>Wykorzystanie w uczeniu maszynowym<\/strong><\/h4><figure class=\"wp-block-table\"><table class=\"has-background has-fixed-layout\" style=\"background-color:#89b4d5\"><tbody><tr><td>Na pocz\u0105tku powiedzieli\u015bmy sobie, \u017ce modele typu BERT s\u0105 wykorzystywane w systemach przetwarzania j\u0119zyka naturalnego, warto wi\u0119c opisa\u0107, jak takie zastosowania wygl\u0105daj\u0105. Dzi\u0119ki zadaniom opisanym wy\u017cej BERT tworzy reprezentacj\u0119 tekstu, kt\u00f3ra mo\u017ce by\u0107 wykorzystana na wiele sposob\u00f3w w systemach uczenia maszynowego. Najcz\u0119stsze zastosowania mo\u017cna podzieli\u0107 na kilka g\u0142\u00f3wnych kategorii:<br><br><strong>1. klasyfikacja tekstu \u2013 <\/strong>wykorzystuj\u0105c reprezentacj\u0119 tokenu [CLS], kt\u00f3ry \u2013 jak ju\u017c wiemy \u2013 zawiera zagregowane informacje o ca\u0142ym tek\u015bcie, mo\u017cemy zbudowa\u0107 klasyfikator do r\u00f3\u017cnych zada\u0144, takich jak analiza sentymentu, wykrywanie spamu czy kategoryzacja dokument\u00f3w. Wystarczy doda\u0107 jedn\u0105 warstw\u0119 klasyfikacyjn\u0105 na reprezentacji [CLS].<br> <img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"360\" class=\"wp-image-9831\" style=\"width: 600px;\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_1.png\" alt=\"\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_1.png 467w, https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_1-300x180.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><br><strong>2. ekstrakcja informacji \u2013 <\/strong>reprezentacje poszczeg\u00f3lnych token\u00f3w mog\u0105 by\u0107 u\u017cywane do oznaczania fragment\u00f3w tekstu (<em>token classification<\/em>), co jest przydatne w takich zadaniach, jak rozpoznawanie nazw w\u0142asnych \u2013 Named Entity Recognition (NER) \u2013 czy ekstrakcja kluczowych informacji z dokument\u00f3w.<br> <img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"340\" class=\"wp-image-9833\" style=\"width: 600px;\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_2.png\" alt=\"\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_2.png 478w, https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_2-300x170.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><br><br><strong>3. systemy wyszukiwania \u2013 <\/strong>reprezentacje utworzone przez BERT-a umo\u017cliwiaj\u0105 semantyczne por\u00f3wnywanie tekst\u00f3w. Zamiast por\u00f3wnywa\u0107 teksty na podstawie wyst\u0119puj\u0105cych w nich s\u0142\u00f3w, mo\u017cemy por\u00f3wnywa\u0107 ich wektory, co pozwala wychwyci\u0107 podobie\u0144stwo znaczeniowe nawet wtedy, gdy u\u017cyte s\u0105 r\u00f3\u017cne s\u0142owa.<br><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"407\" class=\"wp-image-9835\" style=\"width: 600px;\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_3.png\" alt=\"\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_3.png 472w, https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/151_3-300x203.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/td><\/tr><\/tbody><\/table><\/figure><h4 class=\"wp-block-heading\"><strong>Polacy nie g\u0119si i sw\u00f3j model maj\u0105<\/strong><\/h4><p>W Polsce powsta\u0142 mi\u0119dzy innymi model HerBERT opracowany przez Allegro w 2021 r. Trenowano go na ponad 20 mln tekst\u00f3w pochodz\u0105cych ze zbior\u00f3w takich jak Narodowy Korpus J\u0119zyka Polskiego, Wikipedia czy Wolne Lektury. Jego architektura by\u0142a bardzo zbli\u017cona do oryginalnego BERT-a, ale wykorzystano m.in. dedykowany tokenizer i pomini\u0119to zadanie NSP (kt\u00f3re, jak pokaza\u0142y r\u00f3wnie\u017c inne badania, okaza\u0142o si\u0119 zb\u0119dne).&nbsp;<\/p><p>Kolejnym przyk\u0142adem polskiego modelu jest Polish RoBERTa, opracowany przez O\u015brodek Przetwarzania Informacji \u2013 Pa\u0144stwowy Instytut Badawczy. Jest on wi\u0119kszy od HerBERT-a i trenowano go na wi\u0119kszym zbiorze danych, co te\u017c prze\u0142o\u017cy\u0142o si\u0119 na lepsze wyniki.<\/p><p>To tylko dwa z wielu modeli, kt\u00f3re zosta\u0142y opracowane specjalnie dla j\u0119zyka polskiego. Wi\u0119cej z nich mo\u017cna znale\u017a\u0107 na przyk\u0142ad w rankingu o nazwie Kompleksowa Lista Ewaluacji J\u0119zykowych (KLEJ), polskiej wersji rankingu The General Language Understanding Evaluation (GLUE).<\/p><h4 class=\"wp-block-heading\"><strong>Stary, ale jary<\/strong><\/h4><p>Jak ju\u017c wspomnia\u0142em, modele oparte na enkoderach wci\u0105\u017c s\u0142u\u017c\u0105 do tworzenia reprezentacji tekstu. Co prawda nie bazuj\u0105 ju\u017c one zwykle na samym modelu BERT, tylko na nowszych wariantach jego architektury, ale takie zadania jak MLM s\u0105 w dalszym ci\u0105gu wykorzystywane.<\/p><p>Pod koniec 2024 r. pojawi\u0142a si\u0119 zaktualizowana wersja modelu BERT o nazwie ModernBERT. R\u00f3\u017cni si\u0119 on od poprzednika przede wszystkim wi\u0119ksz\u0105 d\u0142ugo\u015bci\u0105 kontekstu \u2013 wspiera maksymalnie 8192 token\u00f3w w por\u00f3wnaniu do 512 w modelu BERT, co umo\u017cliwia lepsze przetwarzanie d\u0142u\u017cszych dokument\u00f3w i z\u0142o\u017conych zapyta\u0144. Dodatkowo wprowadza ulepszenia w samej architekturze modelu, takie jak u\u017cycie Rotary Position Embeddings (ROPE), warstw GeGLU oraz mechanizmu Flash Attention, kt\u00f3re poprawiaj\u0105 efektywno\u015b\u0107 i stabilno\u015b\u0107 treningu. Model ten jest r\u00f3wnie\u017c trenowany na bardziej zr\u00f3\u017cnicowanym zestawie danych w tym kodzie, co poprawia jego wydajno\u015b\u0107 w zadaniach zwi\u0105zanych z j\u0119zykiem programowania. ModernBERT osi\u0105ga lepsze wyniki ni\u017c popularny model DeBERTaV3, kt\u00f3ry do tej pory wygrywa\u0142 najwi\u0119cej konkurs\u00f3w na platformie Kaggle. Poza tym ModernBERT zu\u017cywa pi\u0119\u0107 razy mniej pami\u0119ci ni\u017c DeBERTa.<\/p>","protected":false},"excerpt":{"rendered":"<p>Na pocz\u0105tku by\u0142o s\u0142owo, po nim te\u017c i kolejne, czytane do przodu i wstecz. Dwukierunkowy enkoder swego czasu wszed\u0142 na salony z rozmachem i kr\u00f3lowa\u0142 d\u0142ugo \u2013 sceny ust\u0105pi\u0142 dopiero LLM-om, ale z dala od blichtru do dzi\u015b robi karier\u0119. Szczeg\u00f3lnie tam, gdzie stawk\u0105 jest stabilno\u015b\u0107 i bezpiecze\u0144stwo.<\/p>\n","protected":false},"author":256,"featured_media":9826,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_lock_modified_date":false,"footnotes":""},"categories":[612,763,402,754],"tags":[],"popular":[],"difficulty-level":[38],"ppma_author":[628],"class_list":["post-9128","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-numer-4","category-ai_praktyka","category-hai-magazine","category-hai_premium","difficulty-level-medium"],"acf":[],"authors":[{"term_id":628,"user_id":256,"is_guest":0,"slug":"aleksander-obuchowski","display_name":"Aleksander Obuchowski","avatar_url":{"url":"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/IMG_5204-scaled.jpeg","url2x":"https:\/\/haimagazine.com\/wp-content\/uploads\/2025\/03\/IMG_5204-scaled.jpeg"},"first_name":"Aleksander","last_name":"Obuchowski","user_url":"","job_title":"","description":"Wsp\u00f3\u0142za\u0142o\u017cyciel grupy badawczej TheLion.ai. Wsp\u00f3\u0142za\u0142o\u017cyciel i CTO Medalion Technology. Znalaz\u0142 si\u0119 na li\u015bcie Forbes \u201e25 under 25\u201d."}],"_links":{"self":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/9128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/users\/256"}],"replies":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/comments?post=9128"}],"version-history":[{"count":7,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/9128\/revisions"}],"predecessor-version":[{"id":9840,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/9128\/revisions\/9840"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/media\/9826"}],"wp:attachment":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/media?parent=9128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/categories?post=9128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/tags?post=9128"},{"taxonomy":"popular","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/popular?post=9128"},{"taxonomy":"difficulty-level","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/difficulty-level?post=9128"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/ppma_author?post=9128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}