{"id":34928,"date":"2026-10-16T05:00:00","date_gmt":"2026-10-16T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=34928"},"modified":"2026-10-15T16:21:13","modified_gmt":"2026-10-15T14:21:13","slug":"interpretowalne-klastrowanie-dokumentow","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/","title":{"rendered":"Interpretowalne klastrowanie dokument\u00f3w"},"content":{"rendered":"\n<p>Wiele firm gromadzi dokumenty latami, cz\u0119sto bez sp\u00f3jnej struktury i w r\u00f3\u017cnych formatach. Nowoczesne systemy AI (np. asystenci agentowi, RAG-i) potrafi\u0105 znacz\u0105co usprawni\u0107 prac\u0119, ale ich efektywno\u015b\u0107 jest ograniczona jako\u015bci\u0105 danych wej\u015bciowych. Po d\u0142ugim czasie rozrastania si\u0119 archiwum nie tylko traci ono jakikolwiek porz\u0105dek, ale cz\u0119sto nie ma jednej osoby, kt\u00f3ra mia\u0142aby poj\u0119cie, co si\u0119 w nim znajduje. To kiepski start do wdro\u017cenia AI: bez znajomo\u015bci danych trudno zaplanowa\u0107 ulepszenia, a ba\u0142agan zwykle odbija si\u0119 na wynikach.<\/p>\n\n\n\n<p>W artykule przybli\u017c\u0119 projekt, kt\u00f3ry bada, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w. U\u017cyte metody mog\u0105 by\u0107 warto\u015bciowe pod k\u0105tem samego rozpoznania tre\u015bci lub mog\u0105 by\u0107 wst\u0119pem do automatycznego (lub p\u00f3\u0142automatycznego) uporz\u0105dkowania i opisania repozytorium.<\/p>\n\n\n\n<p>W ramach <em>proof-of-concept<\/em> zaw\u0119\u017camy zakres i:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>skupiamy si\u0119 na nienadzorowanym wydobyciu struktury z korpusu dokument\u00f3w,<\/li>\n\n\n\n<li>eksperymentujemy z reprezentacjami opartymi nie tylko na tek\u015bcie, ale r\u00f3wnie\u017c na uk\u0142adzie strony i formie wizualnej,<\/li>\n\n\n\n<li>badamy, jak grupowa\u0107 dokumenty w spos\u00f3b interpretowalny i jak uczyni\u0107 odkryt\u0105 struktur\u0119 \u0142atw\u0105 do odczytania.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Kontekst<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Modelowanie temat\u00f3w<\/strong><\/h3>\n\n\n\n<p>Znajdowanie struktury w korpusie tekstowym nie jest nowym problemem i historycznie u\u017cywano do tego metod opartych na statystykach s\u0142\u00f3w.<\/p>\n\n\n\n<p>Klasycznym przyk\u0142adem jest <strong>LDA (Latent Dirichlet Allocation)<\/strong>: ka\u017cdy dokument traktowany jest jako mieszanka temat\u00f3w (<em>mixture of topics<\/em>), a ka\u017cdy temat jako rozk\u0142ad na zbiorze s\u0142\u00f3w, bazuj\u0105cy na tym, kt\u00f3re s\u0142owa maj\u0105 tendencj\u0119 do wsp\u00f3\u0142wyst\u0119powania.<\/p>\n\n\n\n<p>LDA nadal bywa przydatne, ale ma wyra\u017ane ograniczenia. Opiera si\u0119 wy\u0142\u0105cznie na tek\u015bcie, wi\u0119c pozosta\u0142e informacje zawarte w dokumencie (np. rozk\u0142ad tekstu, tabele, wykresy czy format wizualny) zostaj\u0105 odrzucone. Poza tym, metoda operuje na liczbie wyst\u0105pie\u0144 s\u0142\u00f3w i fraz (<em>bag-of-words<\/em>), przez co umyka jej subtelniejsza semantyka, kt\u00f3r\u0105 potrafi\u0105 uchwyci\u0107 dzisiejsze modele j\u0119zykowe.<\/p>\n\n\n\n<p>Klastrowanie (<em>clustering<\/em>) podchodzi do tego inaczej. Nie rozk\u0142ada dokumentu na tematy, tylko zestawia ze sob\u0105 dokumenty podobne w wybranej reprezentacji wektorowej (<em>embedding<\/em>), a ta nie musi ogranicza\u0107 si\u0119 do bag-of-words.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Klastrowanie oparte na embeddingach<\/strong><\/h3>\n\n\n\n<p>Dzi\u015b takie grupowanie robi si\u0119 zwykle w przestrzeni embedding\u00f3w (najcz\u0119\u015bciej na bazie sieci neuronowych, cho\u0107 TF-IDF r\u00f3wnie\u017c si\u0119 sprawdza).<\/p>\n\n\n\n<p>Schemat jest z grubsza podobny:<\/p>\n\n\n\n<p><code>embeddingi \u2192 redukcja wymiarowo\u015bci \u2192 klastrowanie<\/code><\/p>\n\n\n\n<p>Konkretnym przyk\u0142adem tego podej\u015bcia zastosowanego do tekstu jest BERTopic, kt\u00f3ry bazuje na nast\u0119puj\u0105cych elementach: embeddingi zda\u0144 (<em>sentence embeddings<\/em>) \u2192 UMAP \u2192 HDBSCAN. Nast\u0119pnie BERTopic wyznacza reprezentacje temat\u00f3w na podstawie cz\u0119sto\u015bci s\u0142\u00f3w.<\/p>\n\n\n\n<p>Tutaj u\u017cywamy podobnego podej\u015bcia do klastrowania, ale skupiamy si\u0119 przede wszystkim na doborze embedding\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dokument to wi\u0119cej ni\u017c tekst<\/strong><\/h3>\n\n\n\n<p>Dokumenty nios\u0105 wi\u0119cej informacji ni\u017c tylko semantyk\u0119 tekstu. Uk\u0142ad i styl wizualny, a nawet elementy graficzne, to warto\u015bciowe sygna\u0142y, kt\u00f3re mog\u0105 by\u0107 dla nas kluczowe przy grupowaniu. Sprawdzamy wi\u0119c, jak wyb\u00f3r embeddingu wp\u0142ywa na powsta\u0142e klastry i kt\u00f3re z sygna\u0142\u00f3w wychodz\u0105 na wierzch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Interpretowalno\u015b\u0107 klastr\u00f3w<\/strong><\/h3>\n\n\n\n<p>LDA i BERTopic opisuj\u0105 znalezione klastry (tematy) list\u0105 charakterystycznych s\u0142\u00f3w lub fraz. Bywa to u\u017cyteczne, ale nie wystarczy, \u017ceby klastry \u0142atwo zrozumie\u0107 ani uporz\u0105dkowa\u0107. Z listy s\u0142\u00f3w mo\u017cna wyczyta\u0107 i zgadn\u0105\u0107 motyw przewodni grupy, ale wymaga to wysi\u0142ku. Nie jest te\u017c \u0142atwo zbudowa\u0107 przydatn\u0105 struktur\u0119 na bazie takiej reprezentacji.<\/p>\n\n\n\n<p>Poni\u017csze przyk\u0142ady pokazuj\u0105, jak LDA i BERTopic opisuj\u0105 tematy. Oba przyk\u0142ady pochodz\u0105 z naszego syntetycznego korpusu (opisanego ni\u017cej w sekcji Dane).<\/p>\n\n\n\n<p>LDA (3 z 6 temat\u00f3w):<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad1f07cd575e&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad1f07cd575e\" class=\"wp-block-image size-full wp-lightbox-container\"><img decoding=\"async\" width=\"931\" height=\"327\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/1-1.png\" alt=\"10 najcz\u0119stszych s\u0142\u00f3w\" class=\"wp-image-34932\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/1-1.png 931w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/1-1-300x105.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/1-1-768x270.png 768w\" sizes=\"(max-width: 931px) 100vw, 931px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>BERTopic (3 z 30 temat\u00f3w):<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad1f07cd6976&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad1f07cd6976\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"293\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/2-1024x293.png\" alt=\"10 najcz\u0119stszych s\u0142\u00f3w\" class=\"wp-image-34934\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/2-1024x293.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/2-300x86.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/2-768x220.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/2.png 1312w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Dlatego opr\u00f3cz por\u00f3wnania embedding\u00f3w i metod klastrowania badamy te\u017c czytelniejszy spos\u00f3b opisywania i strukturyzowania powsta\u0142ych grup.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Eksperymenty<\/strong><\/h2>\n\n\n\n<p>Zaczynamy od samego klastrowania, a do interpretowania i uk\u0142adania klastr\u00f3w wracamy w dalszej cz\u0119\u015bci.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dane<\/strong><\/h3>\n\n\n\n<p><strong>W\u0142asny zbi\u00f3r syntetyczny: <\/strong>Aby m\u00f3c analizowa\u0107 wyniki wzgl\u0119dem r\u00f3\u017cnych sygna\u0142\u00f3w, wygenerowali\u015bmy syntetyczny zbi\u00f3r danych z trzema z g\u00f3ry zdefiniowanymi, w pe\u0142ni skrzy\u017cowanymi osiami:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>topic<\/strong> (5): Cybersecurity, Human Resources, Legal &amp; Compliance, Research &amp; Development, Sales &amp; Customer Relations,<\/li>\n\n\n\n<li><strong>document_type<\/strong> (5): Report, Email, Invoice, Meeting Minutes, Presentation,<\/li>\n\n\n\n<li><strong>style<\/strong> (3): trzy wyra\u017anie r\u00f3\u017cne szablony wizualne (fonty, kolory, konwencje uk\u0142adu).<\/li>\n<\/ul>\n\n\n\n<p>Ka\u017cd\u0105 kombinacj\u0119 przekazali\u015bmy do LLM-a, kt\u00f3ry wygenerowa\u0142 dokument w HTML, a ten skonwertowali\u015bmy do PDF i PNG. Powsta\u0142y zbi\u00f3r zawiera 600 dokument\u00f3w (5 \u00d7 5 \u00d7 3, po 8 dokument\u00f3w na kombinacj\u0119). Dla uproszczenia notacji w wynikach odnosimy si\u0119 do tego zbioru jako: <em>custom<\/em>.<\/p>\n\n\n\n<p>Dokumenty z prawdziwego korpusu sprawdzi\u0142yby si\u0119 lepiej pod k\u0105tem realistycznego oszacowania efektywno\u015bci; niestety, otwarte zbiory z faktycznymi dokumentami (nie samym tekstem) i z etykietami s\u0105 trudne do znalezienia.<\/p>\n\n\n\n<p><strong>RVL-CDIP: <\/strong>Aby przeprowadzi\u0107 testy na prawdziwych danych, skorzystali\u015bmy ze zbioru RVL-CDIP, kt\u00f3ry zawiera skany starych dokument\u00f3w z bran\u017cy tytoniowej. To standardowy zbi\u00f3r w badaniach nad klasyfikacj\u0105 i klastrowaniem dokument\u00f3w na podstawie obrazu. Ka\u017cdy dokument ma etykiet\u0119 jednego z 16 typ\u00f3w. Skany s\u0105 niskiej jako\u015bci, co wprowadza sporo szumu. Dla ograniczenia koszt\u00f3w oblicze\u0144 wzi\u0119li\u015bmy po 50 pr\u00f3bek na typ, czyli \u0142\u0105cznie 800 dokument\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Przygotowanie danych<\/strong><\/h3>\n\n\n\n<p>Dla RVL-CDIP u\u017cyli\u015bmy OCR-u (optycznego rozpoznawania znak\u00f3w) w Azure Content Understanding, aby wydoby\u0107 tekst z obraz\u00f3w (jako .md, ale praktycznie bez formatowania). Dla w\u0142asnego zbioru mieli\u015bmy dost\u0119pne PDF-y, wi\u0119c wystarczy\u0142 Docling, aby wydoby\u0107 .md, kt\u00f3re mo\u017ce zawiera\u0107 cz\u0119\u015b\u0107 informacji o uk\u0142adzie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>U\u017cyte embeddingi<\/strong><\/h3>\n\n\n\n<p>Aby zbada\u0107 reprezentacje nios\u0105ce r\u00f3\u017cny rodzaj sygna\u0142u, wybrali\u015bmy kilka rodzin embedding\u00f3w od czysto tekstowych, przez multimodalne (umiej\u0105ce przetwarza\u0107 zar\u00f3wno tekst jak i obraz), do typowych modeli u\u017cywanych w przetwarzaniu obraz\u00f3w. Embeddingi tekstowe liczyli\u015bmy na wyekstrahowanym markdownie, a embeddingi obrazowe na PNG strony.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cohere Embed v4 (text, image)<\/strong>: multimodalny embedding dokument\u00f3w; obie modalno\u015bci trafiaj\u0105 do jednej wsp\u00f3lnej przestrzeni; wariant obrazowy trenowany by\u0142 na dokumentach, wi\u0119c najprawdopodobniej czyta r\u00f3wnie\u017c tekst,<\/li>\n\n\n\n<li><strong>text-embedding-3-small<\/strong>: typowy embedding tekstu og\u00f3lnego przeznaczenia,<\/li>\n\n\n\n<li><strong>CLIP, SigLIP<\/strong>: og\u00f3lne modele wizyjno-j\u0119zykowe trenowane do kojarzenia obraz\u00f3w z podpisami,<\/li>\n\n\n\n<li><strong>DINOv2, DiT<\/strong>: modele wizyjne bez nadzoru j\u0119zykowego (DiT trenowany na zeskanowanych dokumentach),<\/li>\n\n\n\n<li><strong>TF-IDF, pixel: thumbnail<\/strong>: nieneuronowe punkty odniesienia, wa\u017cone wektory s\u0142\u00f3w lub fraz (rodzaj bag-of-words) oraz strona jako sp\u0142aszczony obraz 32\u00d732 w skali szaro\u015bci (testowali\u015bmy te\u017c kilka innych <em>baseline\u2019\u00f3w<\/em> pikselowych).<\/li>\n<\/ul>\n\n\n\n<p>Obie modalno\u015bci Cohere dziel\u0105 jedn\u0105 przestrze\u0144, wi\u0119c mo\u017cemy eksperymentowa\u0107 z ich \u0142\u0105czeniem:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>image \u2212 text<\/strong>: sprawdzenie hipotezy: przy wsp\u00f3lnej przestrzeni odj\u0119cie reprezentacji opartej wy\u0142\u0105cznie na tek\u015bcie mo\u017ce \u201eusun\u0105\u0107\u201d semantyk\u0119 i wzmocni\u0107 pozosta\u0142e sygna\u0142y,<\/li>\n\n\n\n<li><strong>image + text<\/strong>: niesie oba sygna\u0142y w jednym wektorze o tym samym wymiarze.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wyniki klastrowania<\/strong><\/h3>\n\n\n\n<p>Ka\u017cdy embedding przepu\u015bcili\u015bmy przez PCA, aby zredukowa\u0107 wymiarowo\u015b\u0107 do 32 komponent\u00f3w, i pogrupowali\u015bmy u\u017cywaj\u0105c k-means. Daje to stabiln\u0105 konfiguracj\u0119, kt\u00f3ra pozwala zbada\u0107, jak dobrze r\u00f3\u017cne modele embedding\u00f3w radz\u0105 sobie z poszczeg\u00f3lnymi osiami, bez nadmiernego szumu, kt\u00f3ry wprowadzi\u0142by dodatkowe parametry i ustawienia.<\/p>\n\n\n\n<p>Testowali\u015bmy r\u00f3wnie\u017c UMAP i HDBSCAN (jak w BERTopic), ale wyniki by\u0142y mniej stabilne i nie by\u0142y wyra\u017anie lepsze lub gorsze, wi\u0119c zostali\u015bmy przy PCA i k-means, by skupi\u0107 por\u00f3wnanie na samych reprezentacjach. Zdolno\u015b\u0107 HDBSCAN-u do odk\u0142adania na bok <em>outlier\u00f3w<\/em> (obserwacji odstaj\u0105cych) czyni go bardzo atrakcyjnym kierunkiem, wartym dalszego zbadania, ale wymaga dobrego dostrojenia parametr\u00f3w, \u017ceby dobrze dzia\u0142a\u0107.<\/p>\n\n\n\n<p>Jako punkt odniesienia u\u017cyli\u015bmy BERTopic (na domy\u015blnych embeddingach MiniLM) i LDA (obie metody z lekko dostrojonymi hiperparametrami) oraz losowy podzia\u0142 na grupy. TF-IDF i prosty baseline pikselowy s\u0142u\u017c\u0105 do por\u00f3wnania, ile da si\u0119 osi\u0105gn\u0105\u0107 znacznie prostsz\u0105 reprezentacj\u0105.<\/p>\n\n\n\n<p>Jako\u015b\u0107 mierzyli\u015bmy wzgl\u0119dem dost\u0119pnych etykiet (zdefiniowanych osi we w\u0142asnym zbiorze oraz etykiety typu w RVL) za pomoc\u0105 <em>czysto\u015bci<\/em> (<em>purity<\/em>), kt\u00f3r\u0105 definiujemy jako odsetek dokument\u00f3w zgodnych z dominuj\u0105c\u0105 klas\u0105 w ka\u017cdym klastrze (w uproszczeniu: jak czyste s\u0105 klastry). Purity ro\u015bnie naturalnie wraz z liczb\u0105 klastr\u00f3w, wi\u0119c zestawiamy konfiguracje o ich zbli\u017conej liczbie, oznaczonej w tabeli jako <em>k<\/em>.<\/p>\n\n\n\n<p>Wyj\u0105tkiem jest BERTopic, poniewa\u017c HDBSCAN nie daje mo\u017cliwo\u015bci ustawienia z g\u00f3ry <em>k<\/em>, ale i tak wypada s\u0142abo na swoich domy\u015blnych embeddingach.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad1f07ce68f9&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad1f07ce68f9\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"586\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/3-1024x586.png\" alt=\"tabela\" class=\"wp-image-34936\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/3-1024x586.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/3-300x172.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/3-768x439.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/3.png 1311w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad1f07ceb8ba&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad1f07ceb8ba\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"539\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/4-1024x539.png\" alt=\"tabela\" class=\"wp-image-34938\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/4-1024x539.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/4-300x158.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/4-768x404.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/4.png 1306w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Nie jest zaskoczeniem, \u017ce embeddingi wizualne (CLIP, SigLIP, DINOv2, DiT) osi\u0105gaj\u0105 lepsze wyniki dla stylu i typu dokumentu, podczas gdy embeddingi \u015bwiadome tekstu dobrze sprawdzaj\u0105 si\u0119 przy grupowaniu po temacie. Na RVL najlepiej wypad\u0142 Cohere v4 (image), cho\u0107 margines nad kolejnymi modelami jest na tyle ma\u0142y, \u017ce mo\u017ce by\u0107 dzie\u0142em przypadku. Poradzi\u0142 sobie nie\u017ale r\u00f3wnie\u017c z typem dokumentu i tematem w naszym syntetycznym zbiorze, co ma sens, bo to embedding dedykowany dokumentom i prawdopodobnie czyta tekst.<\/p>\n\n\n\n<p>Odj\u0119cie embeddingu Cohere v4 (text) od embeddingu Cohere v4 (image) zdaje si\u0119 usuwa\u0107 semantyk\u0119 potrzebn\u0105 do grupowania tematycznego i daje reprezentacj\u0119, kt\u00f3ra na zbiorze syntetycznym rozdziela typy dokument\u00f3w niemal bezb\u0142\u0119dnie. Czy to b\u0119dzie si\u0119 dobrze generalizowa\u0107 przy innych danych, nie wiemy, ale sam wynik jest bardzo ciekawy.<\/p>\n\n\n\n<p>Semantyk\u0119 mo\u017cna wyciszy\u0107 r\u00f3wnie\u017c pro\u015bciej: pomniejszy\u0107 stron\u0119 na tyle, \u017ceby tekst przesta\u0142 by\u0107 czytelny, i na bazie takiego obrazu obliczy\u0107 embedding (wiersz Cohere v4 (image, 128px)). Poprawia to klastrowanie po typie dokumentu (cho\u0107 znacznie s\u0142abiej ni\u017c odejmowanie) i podbija te\u017c styl. Ciekawa obserwacja, cho\u0107 w praktyce raczej ma\u0142o u\u017cyteczna.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wykorzystanie wi\u0119cej ni\u017c jednego embeddingu<\/strong><\/h2>\n\n\n\n<p>Wi\u0119kszo\u015b\u0107 embedding\u00f3w da\u0142a dobre wyniki tylko na jednej z osi. Dlatego zamiast klastrowa\u0107 raz, mogliby\u015bmy spr\u00f3bowa\u0107 zrobi\u0107 to kilkukrotnie, za ka\u017cdym razem z innym embeddingiem lub konfiguracj\u0105 skierowanymi na inny sygna\u0142.<\/p>\n\n\n\n<p>W kolejnych eksperymentach sprawdzili\u015bmy, czy klastrowanie dwupoziomowe pozwala odzyska\u0107 wi\u0119cej ni\u017c jedn\u0105 o\u015b naraz.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Podej\u015bcie<\/strong><\/h3>\n\n\n\n<p>Rozwa\u017cali\u015bmy r\u00f3\u017cne pomys\u0142y na po\u0142\u0105czenie dw\u00f3ch poziom\u00f3w klastrowania:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>grupujemy niezale\u017cnie ka\u017cdym embeddingiem i bierzemy iloczyn kartezja\u0144ski przypisa\u0144 jako ostateczne klastry,<\/li>\n\n\n\n<li>drugim embeddingiem klastrujemy osobno wewn\u0105trz ka\u017cdego klastra poziomu 1 (tracimy motywy przechodz\u0105ce mi\u0119dzy klastrami, ale mo\u017ce si\u0119 to dobrze skalowa\u0107 na wi\u0119kszych korpusach),<\/li>\n\n\n\n<li>przed drugim grupowaniem od ka\u017cdego embeddingu odejmujemy centroid klastra z pierwszego poziomu, nie dziel\u0105c danych na cz\u0119\u015bci, po czym bierzemy iloczyn jak w pierwszej metodzie.<\/li>\n<\/ul>\n\n\n\n<p>W eksperymentach najlepiej wypad\u0142 ostatni wariant (wi\u0119c na nim oparli\u015bmy wyniki), cho\u0107 r\u00f3\u017cnice by\u0142y na tyle ma\u0142e, \u017ce trudno by\u0142o wyci\u0105gn\u0105\u0107 jednoznaczne wnioski. To mo\u017ce by\u0107 ciekawy kierunek dalszych usprawnie\u0144.<\/p>\n\n\n\n<p>Prostsz\u0105 alternatyw\u0105 jest konkatenacja dw\u00f3ch embedding\u00f3w i jednorazowe klastrowanie we wsp\u00f3lnej przestrzeni.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wyniki<\/strong><\/h3>\n\n\n\n<p>Na ka\u017cdym poziomie utworzyli\u015bmy 6 klastr\u00f3w i zwin\u0119li\u015bmy te, kt\u00f3re okaza\u0142y si\u0119 zbyt ma\u0142e. Dla por\u00f3wnania z prostsz\u0105 metod\u0105 \u0142\u0105czenia sygna\u0142\u00f3w zestawiamy podej\u015bcie dwupoziomowe z p\u0142askim klastrowaniem przy zbli\u017conej liczbie klastr\u00f3w.<\/p>\n\n\n\n<p>W poni\u017cszej tabeli oznaczamy te konfiguracje nast\u0119puj\u0105co:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>flat: pojedyncze klastrowanie na danym embeddingu.<\/li>\n\n\n\n<li>flat: concat(A, B): pojedyncze klastrowanie na dw\u00f3ch embeddingach sklejonych w jedn\u0105 szersz\u0105 przestrze\u0144.<\/li>\n\n\n\n<li>2lvl: A \u2192 B: klastrowanie dwupoziomowe, poziom 1 na embeddingu A, poziom 2 na B.<\/li>\n<\/ul>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad1f07ceeb79&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad1f07ceeb79\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"818\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/5-1024x818.png\" alt=\"tabela\" class=\"wp-image-34940\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/5-1024x818.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/5-300x240.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/5-768x613.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/5.png 1092w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Klastrowanie dwupoziomowe zachowuje niemal bezb\u0142\u0119dny wynik na typie dokumentu, a przy tym temat albo styl (w zale\u017cno\u015bci od konfiguracji) zostaje na poziomie zbli\u017conym (lub tylko nieco gorszym) do p\u0142askiego grupowania. Dostajemy wi\u0119c dwa u\u017cyteczne podzia\u0142y zamiast jednego, przy tej samej \u0142\u0105cznej liczbie grup.<\/p>\n\n\n\n<p>Dla RVL wyniki si\u0119 pogarszaj\u0105, co nie jest zaskoczeniem. W tym zbiorze oznaczona etykietami jest tylko jedna o\u015b, a klas jest 16, przez co zmniejszenie liczby grup na ka\u017cdym poziomie ograniczy\u0142o mo\u017cliwo\u015b\u0107 odwzorowania tego podzia\u0142u.<\/p>\n\n\n\n<p>Tutaj najlepiej wypad\u0142o podej\u015bcie z konkatenacj\u0105, wi\u0119c \u0142\u0105czenie dw\u00f3ch poziom\u00f3w sygna\u0142u nadal jest korzystne. Sugeruje to, \u017ce ustalona z g\u00f3ry liczba klastr\u00f3w na ka\u017cdym poziomie mo\u017ce si\u0119 s\u0142abo generalizowa\u0107 (np. gdy dane maj\u0105 du\u017c\u0105 zmienno\u015b\u0107 semantyczn\u0105, ale jednorodny format lub odwrotnie). Dynamiczne dobranie liczby klastr\u00f3w do konkretnych danych (np. u\u017cywaj\u0105c HDBSCAN lub opieraj\u0105c si\u0119 na heurystykach) ma szans\u0119 poprawi\u0107 uniwersalno\u015b\u0107 tego podej\u015bcia, co mo\u017ce by\u0107 kluczowym kierunkiem jego rozwoju.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Grupowanie i interpretowalno\u015b\u0107<\/strong><\/h2>\n\n\n\n<p>Jak pokazali\u015bmy wcze\u015bniej, ani LDA, ani BERTopic nie daj\u0105 nam u\u017cytecznych etykiet ani opis\u00f3w klastr\u00f3w.<\/p>\n\n\n\n<p>Aby opisa\u0107 i grupowa\u0107 otrzymane klastry, wykorzystujemy podej\u015bcie oparte na LLM-ach.<\/p>\n\n\n\n<p>Przepuszczanie wszystkich dokument\u00f3w przez LLM by\u0142oby do\u015b\u0107 kosztowne przy du\u017cym korpusie, dlatego, aby zachowa\u0107 wydajno\u015b\u0107, dla ka\u017cdego klastra wybieramy <em>N<\/em> pr\u00f3bek (tutaj <em>N=5<\/em>, ale to parametr do dostrojenia) i pokazujemy je modelowi do interpretacji. W tej analizie wybierali\u015bmy je losowo, ale warto by\u0142oby poeksperymentowa\u0107 z wyborem dokument\u00f3w najbardziej reprezentatywnych albo o najszerszym pokryciu.<\/p>\n\n\n\n<p>Realizujemy to w dw\u00f3ch fazach:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>INTERPRET: model opisuje klaster, nadaje mu kr\u00f3tk\u0105 nazw\u0119 i wskazuje cechy wsp\u00f3lne dla wszystkich pokazanych przyk\u0142ad\u00f3w (dziedzina, typ dokumentu itp.).<\/li>\n\n\n\n<li>NORMALIZE \/ GROUP: przekazujemy wszystkie powsta\u0142e interpretacje naraz i prosimy model o ujednolicenie nazewnictwa oraz pogrupowanie klastr\u00f3w wed\u0142ug wsp\u00f3lnych cech.<\/li>\n<\/ol>\n\n\n\n<p>Z d\u0142ugiej listy klastr\u00f3w robi si\u0119 w ten spos\u00f3b kr\u00f3tszy zestaw nazwanych, sp\u00f3jnych grup wraz z osiami, wzd\u0142u\u017c kt\u00f3rych mo\u017cna je uk\u0142ada\u0107.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wyniki<\/strong><\/h3>\n\n\n\n<p>Wyniki etykietowania i grupowania klastr\u00f3w przedstawiamy w formie drzewa: najwy\u017cszy poziom to grupowanie zaproponowane przez model wzd\u0142u\u017c jednej cechy, a kolejne zagnie\u017cd\u017cone poziomy to podzia\u0142y wzd\u0142u\u017c nast\u0119pnych.<\/p>\n\n\n\n<p>Poni\u017cej pokazujemy kilka pierwszych grup z dw\u00f3ch konfiguracji (opartych na dwupoziomowym klastrowaniu z poprzedniej sekcji): jednej rozdzielaj\u0105cej typ dokumentu i temat, drugiej typ dokumentu i styl.<\/p>\n\n\n\n<p>Kolorowe paski pokazuj\u0105 dla ka\u017cdej grupy dwie najcz\u0119stsze klasy referencyjne na bazie <em>ground truth<\/em>. Te etykiety zosta\u0142y dodane dopiero p\u00f3\u017aniej, wy\u0142\u0105cznie na potrzeby analizy, aby pokaza\u0107, jak zachowuje si\u0119 nazewnictwo dla grup czystych i wymieszanych. Samo klastrowanie, opisywanie i grupowanie odby\u0142o si\u0119 w pe\u0142ni bez nadzoru.<\/p>\n\n\n\n<p><strong>A.<\/strong> 2lvl: Cohere v4 (image \u2212 text) \u2192 Cohere v4 (text): pogrupowane po typie dokumentu (poziom 1) i dziedzinie (poziom 2)<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad1f07cf0afd&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad1f07cf0afd\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"560\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/6-1024x560.png\" alt=\"grupowanie po typie dokumentu i dziedzinie\" class=\"wp-image-34942\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/6-1024x560.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/6-300x164.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/6-768x420.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/6.png 1102w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p><strong>B.<\/strong> 2lvl: Cohere v4 (image \u2212 text) \u2192 CLIP: pogrupowane po typie dokumentu (poziom 1) i stylu wizualnym (poziom 2)<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad1f07cf13d1&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad1f07cf13d1\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"401\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/7-1024x401.png\" alt=\"grupowanie po typie dokumentu i stylu wizualnym\" class=\"wp-image-34944\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/7-1024x401.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/7-300x118.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/7-768x301.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/7.png 1100w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Powi\u0119ksz\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Tam, gdzie klastrowanie zadzia\u0142a\u0142o dobrze, grupy s\u0105 trafnie nazwane i sensownie pouk\u0142adane. Etykiety s\u0105 bardziej og\u00f3lne dla wymieszanych klastr\u00f3w i mniej z nich udaje si\u0119 skutecznie po\u0142\u0105czy\u0107. Zauwa\u017calna cz\u0119\u015b\u0107 klastr\u00f3w w og\u00f3le nie trafia do \u017cadnej grupy, bo model \u0142\u0105czy tylko te, kt\u00f3re maj\u0105 wyra\u017ane cechy wsp\u00f3lne. Natomiast grupy, kt\u00f3re udaje si\u0119 utworzy\u0107, zostaj\u0105 sensownie opisane przez model.<\/p>\n\n\n\n<p>Cho\u0107 na tym etapie rozwi\u0105zanie jest niedoskona\u0142e, taki podzia\u0142 daje szybki, og\u00f3lny wgl\u0105d w to, co zawiera dany korpus. Gdyby uda\u0142o si\u0119 wiarygodnie ocenia\u0107, kt\u00f3re klastry s\u0105 sp\u00f3jne, i wskazywa\u0107 w grupach elementy odstaj\u0105ce, to wyniki mo\u017cna by przekaza\u0107 cz\u0142owiekowi (<em>human-in-the-loop<\/em>) czy nawet mocniejszemu modelowi w celu przegl\u0105du i korekty, tworz\u0105c tym samym wydajny i wzgl\u0119dnie szybki proces porz\u0105dkowania du\u017cych repozytori\u00f3w dokument\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ograniczenia i dalsze kierunki<\/strong><\/h2>\n\n\n\n<p>Niekt\u00f3re elementy zosta\u0142y uproszczone lub pozosta\u0142y poza zakresem projektu (co jest naturalne dla proof-of-concept) i powinny zosta\u0107 rozwini\u0119te, gdyby projekt by\u0142 kontynuowany.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dane<\/strong> \u2013 dla uproszczenia u\u017cyli\u015bmy pojedynczych stron. Syntetyczny korpus pozwoli\u0142 wyizolowa\u0107 r\u00f3\u017cne rodzaje struktury (semantyczn\u0105, wizualn\u0105, uk\u0142adu), ale nie stanowi solidnej podstawy do szacowania bezwzgl\u0119dnej skuteczno\u015bci rozwi\u0105zania. RVL-CDIP jest zbiorem rzeczywistym, lecz niskiej jako\u015bci i niereprezentatywnym dla wsp\u00f3\u0142czesnego archiwum dokument\u00f3w. W\u0142a\u015bciwym benchmarkiem by\u0142by du\u017cy, rzeczywisty, oznaczony korpus, jednak takie zbiory s\u0105 trudne do pozyskania.<\/li>\n\n\n\n<li><strong>Ewaluacja<\/strong> \u2013 metody s\u0105 nienadzorowane, ale etykiety referencyjne (ground truth) zosta\u0142y wykorzystane przy doborze modelu. Starali\u015bmy si\u0119 unika\u0107 raportowania konfiguracji, kt\u00f3rych dobry wynik m\u00f3g\u0142 by\u0107 dzie\u0142em przypadku, i skupili\u015bmy si\u0119 na obserwacjach sp\u00f3jnych w r\u00f3\u017cnych ustawieniach, jednak wyniki uzyskane na tych danych mog\u0105 nie generalizowa\u0107 si\u0119 na inne przypadki. W przysz\u0142ych pracach nale\u017ca\u0142oby zastosowa\u0107 bardziej rygorystyczny protok\u00f3\u0142 (dob\u00f3r modelu i strojenie hiperparametr\u00f3w na wydzielonym zbiorze).<\/li>\n\n\n\n<li><strong>Metody<\/strong> \u2013 przedstawione metody otwieraj\u0105 du\u017co kierunk\u00f3w do dalszego zbadania, takich jak dostrojenie samego klastrowania, ocena pewno\u015bci przypisania poszczeg\u00f3lnych dokument\u00f3w lub sp\u00f3jno\u015bci klastr\u00f3w, czy spos\u00f3b doboru pr\u00f3bek do etykietowania.<\/li>\n<\/ul>\n\n\n<div class=\"nsw-o-blogersii-banner\">\n            <picture>\n            <source srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Banner-AI-Offer-Sample-Desktop.jpg\" media=\"(min-width: 992px)\" >\n            <source srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Banner-AI-Offer-Sample-MOB.jpg\" media=\"(min-width: 300px)\" >            <img decoding=\"async\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/04\/Banner-AI-Offer-Sample-Desktop.jpg\" alt=\"\"  class=\"\"  >\n        <\/picture>\n        <div class=\"cnt\">\n                    <div class=\"nsw-m-title-block -h3 -invert  -has-title-margin-bottom-0 -has-title-font-weight-bold\">\n                                <h2 class=\"nsw-m-title-block__title\" >Artificial Intelligence<\/h2>\n                <\/div>\n                            <p class=\"has-nsw-p-4-font-size has-invert-color\">\n                Dostarczamy rozwi\u0105zania AI dopasowane do Twojego biznesu, kt\u00f3re zwi\u0119kszaj\u0105 efektywno\u015b\u0107 i podnosz\u0105 produktywno\u015b\u0107 Twojego zespo\u0142u.\n            <\/p>\n                            <a  href=\"https:\/\/sii.pl\/oferta\/artificial-intelligence\/\" class=\"nsw-a-button -ghost -banner-button\"   >\n        <span>Oferta AI<\/span>\n    <\/a>\n            <\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wnioski<\/strong><\/h2>\n\n\n\n<p>Nasze wyniki pokazuj\u0105, \u017ce dobieraj\u0105c odpowiednio embedding, mo\u017cemy, do pewnego stopnia, pokierowa\u0107 tym, jaki rodzaj sygna\u0142u ma wychwyci\u0107 klastrowanie. Embedding nie jest z zasady lepszy ani gorszy, ale wyci\u0105ga inne informacje z dokument\u00f3w. Zbadali\u015bmy r\u00f3wnie\u017c sposoby \u0142\u0105czenia reprezentacji, tak aby klastrowanie mog\u0142o ujawni\u0107 wi\u0119cej ni\u017c jeden rodzaj struktury naraz.<\/p>\n\n\n\n<p>Ponadto proponujemy szybki spos\u00f3b etykietowania i porz\u0105dkowania klastr\u00f3w w czytelne grupy i podgrupy. Podej\u015bcie jest przy tym oszcz\u0119dne, poniewa\u017c jego kosztowna cz\u0119\u015b\u0107 (LLM) skaluje si\u0119 z liczb\u0105 grup, a nie z liczb\u0105 dokument\u00f3w.<\/p>\n\n\n\n<p>Przedstawione metody mog\u0142yby pos\u0142u\u017cy\u0107 jako narz\u0119dzie do rozpoznawania tre\u015bci, ujawniaj\u0105c motywy i struktur\u0119 w du\u017cych zbiorach dokument\u00f3w. \u017beby mie\u0107 pewno\u015b\u0107, \u017ce sprawdz\u0105 si\u0119 tak\u017ce na innych danych, wyniki wymaga\u0142yby dalszej weryfikacji, a do p\u00f3\u0142automatycznego porz\u0105dkowania repozytori\u00f3w metod\u0119 trzeba b\u0119dzie jeszcze dopracowa\u0107 (m.in. pod k\u0105tem niezawodno\u015bci).<\/p>\n\n\n\n<p>Mimo to eksperymenty pokazuj\u0105, \u017ce da si\u0119 wydoby\u0107 sensown\u0105 struktur\u0119 z nieuporz\u0105dkowanych dokument\u00f3w i przedstawi\u0107 j\u0105 w czytelnej formie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u0179r\u00f3d\u0142a<\/strong><\/h2>\n\n\n\n<p><strong>Modele tematyczne i metody klastrowania<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>LDA<\/strong> \u2013 Blei, D. M., Ng, A. Y., Jordan, M. I. (2003). <em>Latent Dirichlet Allocation<\/em>. JMLR 3, 993\u20131022. <a href=\"https:\/\/www.jmlr.org\/papers\/volume3\/blei03a\/blei03a.pdf\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.jmlr.org\/papers\/volume3\/blei03a\/blei03a.pdf<\/a><\/li>\n\n\n\n<li><strong>BERTopic<\/strong> \u2013 Grootendorst, M. (2022). <em>BERTopic: Neural topic modeling with a class-based TF-IDF procedure<\/em>. <a href=\"arXiv:2203.05794.%20https:\/\/arxiv.org\/abs\/2203.05794\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >arXiv:2203.05794. https:\/\/arxiv.org\/abs\/2203.05794<\/a><\/li>\n\n\n\n<li><strong>Embedding-based clustering<\/strong> \u2013 Sia, S., Dalmia, A., Mielke, S. J. (2020). <em>Tired of Topic Models? Clusters of Pretrained Word Embeddings Make for Fast and Good Topics too!<\/em>. EMNLP 2020. <a href=\"arXiv:2004.14914.%20https:\/\/arxiv.org\/abs\/2004.14914\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >arXiv:2004.14914. https:\/\/arxiv.org\/abs\/2004.14914<\/a><\/li>\n\n\n\n<li><strong>UMAP<\/strong> \u2013 McInnes, L., Healy, J., Melville, J. (2018). <em>UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction<\/em>. arXiv:1802.03426. <a href=\"https:\/\/arxiv.org\/abs\/1802.03426\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/1802.03426<\/a><\/li>\n\n\n\n<li><strong>HDBSCAN<\/strong> \u2013 Campello, R. J. G. B., Moulavi, D., Sander, J. (2013). <em>Density-Based Clustering Based on Hierarchical Density Estimates<\/em>. PAKDD 2013, 160\u2013172. <a href=\"https:\/\/link.springer.com\/chapter\/10.1007\/978-3-642-37456-2_14\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/link.springer.com\/chapter\/10.1007\/978-3-642-37456-2_14<\/a><\/li>\n<\/ul>\n\n\n\n<p><strong>Modele embedding\u00f3w<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cohere Embed v4<\/strong> (text \/ image, shared embedding space) \u2013 Cohere. <em>Embed documentation<\/em>. <a href=\"https:\/\/docs.cohere.com\/docs\/cohere-embed\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/docs.cohere.com\/docs\/cohere-embed<\/a><\/li>\n\n\n\n<li><strong>text-embedding-3-small<\/strong> \u2013 OpenAI. <em>Embeddings guide<\/em>. <a href=\"https:\/\/platform.openai.com\/docs\/guides\/embeddings\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/platform.openai.com\/docs\/guides\/embeddings<\/a><\/li>\n\n\n\n<li><strong>MiniLM \/ Sentence-BERT<\/strong> (BERTopic\u2019s default embedding) \u2013 Reimers, N., Gurevych, I. (2019). <em>Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks<\/em>. <a href=\"arXiv:1908.10084.%20https:\/\/arxiv.org\/abs\/1908.10084\" rel=\"nofollow\" >arXiv:1908.100<\/a><a href=\"arXiv:1908.10084.%20https:\/\/arxiv.org\/abs\/1908.10084\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >8<\/a><a href=\"arXiv:1908.10084.%20https:\/\/arxiv.org\/abs\/1908.10084\" rel=\"nofollow\" >4. https:\/\/arxiv.org\/abs\/1908.10084<\/a><\/li>\n\n\n\n<li><strong>CLIP<\/strong> \u2013 Radford, A. et al.&nbsp;(2021). <em>Learning Transferable Visual Models From Natural Language Supervision<\/em>. arXiv:2103.00020. <a href=\"https:\/\/arxiv.org\/abs\/2103.00020\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/2103.00020<\/a><\/li>\n\n\n\n<li><strong>SigLIP<\/strong> \u2013 Zhai, X. et al.&nbsp;(2023). <em>Sigmoid Loss for Language Image Pre-Training<\/em>. arXiv:2303.15343. <a href=\"https:\/\/arxiv.org\/abs\/2303.15343\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/2303.15343<\/a><\/li>\n\n\n\n<li><strong>DiT<\/strong> \u2013 Li, J. et al.&nbsp;(2022). <em>DiT: Self-supervised Pre-training for Document Image Transformer<\/em>. <a href=\"arXiv:2203.02378.%20https:\/\/arxiv.org\/abs\/2203.02378\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >arXiv:2203.02378. https:\/\/arxiv.org\/abs\/2203.02378<\/a><\/li>\n\n\n\n<li><strong>DINOv2<\/strong> \u2013 Oquab, M. et al.&nbsp;(2023). <em>DINOv2: Learning Robust Visual Features without Supervision<\/em>. arXiv:2304.07193. <a href=\"https:\/\/arxiv.org\/abs\/2304.07193\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/2304.07193<\/a><\/li>\n<\/ul>\n\n\n\n<p><strong>Dane i narz\u0119dzia<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RVL-CDIP<\/strong> \u2013 Harley, A. W., Ufkes, A., Derpanis, K. G. (2015). <em>Evaluation of Deep Convolutional Nets for Document Image Classification and Retrieval<\/em>. ICDAR 2015, 991\u2013995. <a href=\"https:\/\/arxiv.org\/abs\/1502.07058\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/1502.07058<\/a><\/li>\n\n\n\n<li><strong>Docling<\/strong> (PDF \u2192 markdown extraction) \u2013 Auer, C. et al.&nbsp;(2024). <em>Docling Technical Report<\/em>. arXiv:2408.09869. <a href=\"https:\/\/arxiv.org\/abs\/2408.09869\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/2408.09869<\/a><\/li>\n<\/ul>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;34928&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;2&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5&quot;,&quot;size&quot;:&quot;30&quot;,&quot;title&quot;:&quot;Interpretowalne klastrowanie dokument\u00f3w&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/5&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 24px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wiele firm gromadzi dokumenty latami, cz\u0119sto bez sp\u00f3jnej struktury i w r\u00f3\u017cnych formatach. Nowoczesne systemy AI (np. asystenci agentowi, RAG-i) &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/\">Continued<\/a><\/p>\n","protected":false},"author":829,"featured_media":34947,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[5440,2863,682,1032,1259],"class_list":["post-34928","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-coreai","tag-llm","tag-artificial-intelligence","tag-case-study","tag-przetwarzanie-dokumentow"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Jan Latko\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"blogersii\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Interpretowalne klastrowanie dokument\u00f3w na przyk\u0142adach\" \/>\n\t\t<meta property=\"og:description\" content=\"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"733\" \/>\n\t\t<meta property=\"og:image:height\" content=\"456\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-16T03:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-15T14:21:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Sii.Polska\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Interpretowalne klastrowanie dokument\u00f3w na przyk\u0142adach\" \/>\n\t\t<meta name=\"twitter:description\" content=\"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#article\",\"name\":\"Interpretowalne klastrowanie dokument\\u00f3w na przyk\\u0142adach\",\"description\":\"W artykule przybli\\u017c\\u0119 projekt badaj\\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\\u0107 og\\u00f3ln\\u0105 zawarto\\u015b\\u0107 i wydoby\\u0107 struktur\\u0119 z nieuporz\\u0105dkowanego zbioru dokument\\u00f3w\",\"inLanguage\":\"pl-PL\",\"headline\":\"Interpretowalne klastrowanie dokument\\u00f3w\",\"author\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/jlatko\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\"},\"datePublished\":\"2026-10-16T03:00:00+02:00\",\"dateModified\":\"2026-10-15T14:21:13+02:00\",\"articleSection\":\"Development na twardo, coreAI, LLM, Artificial Intelligence, Case Study, Przetwarzanie dokument\\u00f3w\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#webpage\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/AI_5.jpg\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#articleImage\",\"width\":733,\"height\":456,\"caption\":\"Interpretowalne klastrowanie dokument\\u00f3w\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sii.pl\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"name\":\"Development na twardo\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"position\":2,\"name\":\"Development na twardo\",\"item\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#listItem\",\"name\":\"Interpretowalne klastrowanie dokument\\u00f3w\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#listItem\",\"position\":3,\"name\":\"Interpretowalne klastrowanie dokument\\u00f3w\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/development-na-twardo\\\/#listItem\",\"name\":\"Development na twardo\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\",\"name\":\"Sii Polska\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/\",\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/siipolska\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@siipolska\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCQ3UQ7RJPEYnAWC_rPE5Dxg\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/sii-polska\",\"https:\\\/\\\/clutch.co\\\/profile\\\/sii-poland\",\"https:\\\/\\\/www.crunchbase.com\\\/organization\\\/sii\",\"https:\\\/\\\/www.wikidata.org\\\/wiki\\\/Q16601096\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#webpage\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/\",\"name\":\"Interpretowalne klastrowanie dokument\\u00f3w na przyk\\u0142adach\",\"description\":\"W artykule przybli\\u017c\\u0119 projekt badaj\\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\\u0107 og\\u00f3ln\\u0105 zawarto\\u015b\\u0107 i wydoby\\u0107 struktur\\u0119 z nieuporz\\u0105dkowanego zbioru dokument\\u00f3w\",\"inLanguage\":\"pl-PL\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#breadcrumblist\"},\"author\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/jlatko\\\/#author\",\"creator\":\"https:\\\/\\\/sii.pl\\\/blog\\\/author\\\/jlatko\\\/#author\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/AI_5.jpg\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#mainImage\",\"width\":733,\"height\":456,\"caption\":\"Interpretowalne klastrowanie dokument\\u00f3w\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/interpretowalne-klastrowanie-dokumentow\\\/#mainImage\"},\"datePublished\":\"2026-10-16T03:00:00+02:00\",\"dateModified\":\"2026-10-15T14:21:13+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sii.pl\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/sii.pl\\\/blog\\\/\",\"name\":\"blogersii\",\"description\":\"Blog technologiczny Sii \\u2013 praktyczna wiedza od ekspert\\u00f3w\",\"inLanguage\":\"pl-PL\",\"publisher\":{\"@id\":\"https:\\\/\\\/sii.pl\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Interpretowalne klastrowanie dokument\u00f3w na przyk\u0142adach","description":"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w","canonical_url":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#article","name":"Interpretowalne klastrowanie dokument\u00f3w na przyk\u0142adach","description":"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w","inLanguage":"pl-PL","headline":"Interpretowalne klastrowanie dokument\u00f3w","author":{"@id":"https:\/\/sii.pl\/blog\/author\/jlatko\/#author"},"publisher":{"@id":"https:\/\/sii.pl\/#organization"},"datePublished":"2026-10-16T03:00:00+02:00","dateModified":"2026-10-15T14:21:13+02:00","articleSection":"Development na twardo, coreAI, LLM, Artificial Intelligence, Case Study, Przetwarzanie dokument\u00f3w","mainEntityOfPage":{"@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#webpage"},"isPartOf":{"@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#webpage"},"image":{"@type":"ImageObject","url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg","@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#articleImage","width":733,"height":456,"caption":"Interpretowalne klastrowanie dokument\u00f3w"}},{"@type":"BreadcrumbList","@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog#listItem","position":1,"name":"Home","item":"https:\/\/sii.pl\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","name":"Development na twardo"}},{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","position":2,"name":"Development na twardo","item":"https:\/\/sii.pl\/blog\/development-na-twardo\/","nextItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#listItem","name":"Interpretowalne klastrowanie dokument\u00f3w"},"previousItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#listItem","position":3,"name":"Interpretowalne klastrowanie dokument\u00f3w","previousItem":{"@type":"ListItem","@id":"https:\/\/sii.pl\/blog\/development-na-twardo\/#listItem","name":"Development na twardo"}}]},{"@type":"Organization","@id":"https:\/\/sii.pl\/#organization","name":"Sii Polska","url":"https:\/\/sii.pl\/blog\/","sameAs":["https:\/\/www.instagram.com\/siipolska\/","https:\/\/www.tiktok.com\/@siipolska","https:\/\/www.youtube.com\/channel\/UCQ3UQ7RJPEYnAWC_rPE5Dxg","https:\/\/www.linkedin.com\/company\/sii-polska","https:\/\/clutch.co\/profile\/sii-poland","https:\/\/www.crunchbase.com\/organization\/sii","https:\/\/www.wikidata.org\/wiki\/Q16601096"]},{"@type":"WebPage","@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#webpage","url":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/","name":"Interpretowalne klastrowanie dokument\u00f3w na przyk\u0142adach","description":"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w","inLanguage":"pl-PL","isPartOf":{"@id":"https:\/\/sii.pl\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#breadcrumblist"},"author":"https:\/\/sii.pl\/blog\/author\/jlatko\/#author","creator":"https:\/\/sii.pl\/blog\/author\/jlatko\/#author","image":{"@type":"ImageObject","url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg","@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#mainImage","width":733,"height":456,"caption":"Interpretowalne klastrowanie dokument\u00f3w"},"primaryImageOfPage":{"@id":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/#mainImage"},"datePublished":"2026-10-16T03:00:00+02:00","dateModified":"2026-10-15T14:21:13+02:00"},{"@type":"WebSite","@id":"https:\/\/sii.pl\/blog\/#website","url":"https:\/\/sii.pl\/blog\/","name":"blogersii","description":"Blog technologiczny Sii \u2013 praktyczna wiedza od ekspert\u00f3w","inLanguage":"pl-PL","publisher":{"@id":"https:\/\/sii.pl\/#organization"}}]},"og:locale":"pl_PL","og:site_name":"blogersii","og:type":"article","og:title":"Interpretowalne klastrowanie dokument\u00f3w na przyk\u0142adach","og:description":"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w","og:url":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/","og:image":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg","og:image:secure_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg","og:image:width":733,"og:image:height":456,"article:published_time":"2026-10-16T03:00:00+00:00","article:modified_time":"2026-10-15T14:21:13+00:00","article:publisher":"https:\/\/www.facebook.com\/Sii.Polska","twitter:card":"summary","twitter:title":"Interpretowalne klastrowanie dokument\u00f3w na przyk\u0142adach","twitter:description":"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w","twitter:image":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg"},"aioseo_meta_data":{"post_id":"34928","title":"Interpretowalne klastrowanie dokument\u00f3w na przyk\u0142adach","description":"W artykule przybli\u017c\u0119 projekt badaj\u0105cy, jak stosunkowo niewielkim kosztem rozpozna\u0107 og\u00f3ln\u0105 zawarto\u015b\u0107 i wydoby\u0107 struktur\u0119 z nieuporz\u0105dkowanego zbioru dokument\u00f3w","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"created":"2026-10-07 12:45:25","updated":"2026-10-16 04:43:49","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/sii.pl\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/sii.pl\/blog\/development-na-twardo\/\" title=\"Development na twardo\">Development na twardo<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tInterpretowalne klastrowanie dokument\u00f3w\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/sii.pl\/blog"},{"label":"Development na twardo","link":"https:\/\/sii.pl\/blog\/development-na-twardo\/"},{"label":"Interpretowalne klastrowanie dokument\u00f3w","link":"https:\/\/sii.pl\/blog\/interpretowalne-klastrowanie-dokumentow\/"}],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2026\/10\/AI_5.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/34928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/829"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=34928"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/34928\/revisions"}],"predecessor-version":[{"id":34953,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/34928\/revisions\/34953"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/34947"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=34928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=34928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=34928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}