{"id":31643,"date":"2026-09-18T16:28:31","date_gmt":"2026-09-18T14:28:31","guid":{"rendered":"https:\/\/wordlift.io\/blog\/en\/?p=31643"},"modified":"2026-09-18T16:28:38","modified_gmt":"2026-09-18T14:28:38","slug":"content-analysis","status":"publish","type":"post","link":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/","title":{"rendered":"Content Analysis v3: From the Semantic Web to the Entity Layer of AI"},"content":{"rendered":"\n<p><em>Fifteen years after <a class=\"wl-entity-page-link\" title=\"Interactive Knowledge Stack\" href=\"https:\/\/wordlift.io\/blog\/en\/entity\/iks-research-projects\/\" data-id=\"http:\/\/data.wordlift.io\/wl0216\/entity\/what_is_iks_really_about_\" >IKS<\/a> and Apache Stanbol, entity resolution is becoming core infrastructure for AI.<\/em><\/p>\n\n\n\n<p>Generative AI has made producing text remarkably easy. Understanding what that text is actually <em>about<\/em> remains much harder.<\/p>\n\n\n\n<p>Take a simple sentence:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Apple opened a new store in Paris.<\/p>\n<\/blockquote>\n\n\n\n<p>A language model reads it effortlessly. A system that wants to build reliable knowledge from it has to answer more precise questions. Is <em>Apple<\/em> the company, the fruit or the record label? Is <em>Paris<\/em> the French capital or the town in Texas? What types of things are they, and which identifiers represent them? And, most importantly: <strong>when should the system admit that it does not have enough evidence to decide?<\/strong><\/p>\n\n\n\n<p>These questions sound very current in the age of AI agents. For us they are not. We have been working on them for more than fifteen years. Content Analysis v3 is the latest chapter of a journey that began before WordLift existed as a company, with the European IKS project, Apache Stanbol, <a class=\"wl-entity-page-link\"  href=\"https:\/\/wordlift.io\/blog\/en\/entity\/dbpedia\/\" data-id=\"http:\/\/data.wordlift.io\/wl0216\/entity\/dbpedia;http:\/\/rdf.freebase.com\/ns\/m.02rw2c7;http:\/\/yago-knowledge.org\/resource\/DBpedia;http:\/\/dbpedia.org\/resource\/DBpedia\" >DBpedia<\/a> and a group of brilliant people who taught us to see content not as strings of words but as a network of identifiable things.<\/p>\n\n\n\n<p>What has changed is the scale of the problem. Entity resolution is no longer only about enriching a CMS or adding structured data to a page. It increasingly determines how AI systems reconstruct the world. Which brings us back to the oldest question in our field: <strong>what are we talking about?<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"it-started-with-iks\">It started with IKS<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-1024x576.jpg\" alt=\"\" class=\"wp-image-31695\" srcset=\"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-1024x576.jpg 1024w, https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-300x169.jpg 300w, https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-768x432.jpg 768w, https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-1536x864.jpg 1536w, https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-2048x1152.jpg 2048w, https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-288x163.jpg 288w, https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-1200x675.jpg 1200w, https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/PXL_20260706_083827721.MP_-150x84.jpg 150w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Rupert Westenthaler and myself at the new Redlink office in Salzburg a few weeks ago \ud83d\udc4f<\/figcaption><\/figure>\n\n\n\n<p>In 2009 the European Commission launched the Interactive Knowledge Stack (IKS), a four-year FP7 research project coordinated by Salzburg Research. Its goal sounds remarkably contemporary: give content management systems a layer of semantic intelligence, so that software could operate on knowledge and not only on documents.<\/p>\n\n\n\n<p>From that work came Apache Stanbol, an open-source framework for semantic content management. Stanbol brought together what we would now call an AI enrichment pipeline: language detection, <a class=\"wl-entity-page-link\" title=\"Entity Extraction\" href=\"https:\/\/wordlift.io\/blog\/en\/entity\/named-entity-recognition\/\" data-id=\"http:\/\/data.wordlift.io\/wl0216\/entity\/named-entity_recognition;http:\/\/rdf.freebase.com\/ns\/m.0658pt;http:\/\/yago-knowledge.org\/resource\/Named-entity_recognition;http:\/\/dbpedia.org\/resource\/Named-entity_recognition\" >named entity recognition<\/a>, entity linking, controlled vocabularies, semantic indexing, reasoning.<\/p>\n\n\n\n<p>In 2012 Olivier Grisel and Rupert Westenthaler presented <em>Automated Linking Data with Apache Stanbol<\/em> at WWW2012. Rupert would later become my partner in Redlink; at the time, he and Olivier were among the people teaching us how to think rigorously about semantic content analysis. One phrase from that work has stayed with me ever since:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Get to know your content.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p>It sounds simple. It is not. The point was never to detect the word <em>Paris<\/em>. It was to determine that the text referred to Paris, France, attach a stable identifier to it, understand what kind of thing it was, and connect it to a wider graph of knowledge. That shift, from strings to things, changed the way we thought about content.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"from-stanbol-to-wordlift\">From Stanbol to WordLift<\/h2>\n\n\n\n<p>We were not watching from the outside. By 2012 some of the early technology that would become WordLift was already being contributed back to Apache Stanbol: language processing with FreeLing, entity recognition against Freebase, enrichment with DBpedia, and a refactoring layer that translated extracted knowledge toward Schema.org.<\/p>\n\n\n\n<p>The technologies have changed almost completely since then. The architectural idea has not: <strong>content analysis should produce reusable knowledge, not annotations trapped inside an NLP service.<\/strong> An entity needs an identity. That identity must be resolvable and reconcilable with other knowledge, and publishers and organizations should be able to build their own knowledge on top of it.<\/p>\n\n\n\n<p>This is why we still support the DBpedia project today. Open knowledge infrastructure and shared identifiers remain fundamental to an interoperable web. This is not nostalgia for the Semantic Web. It has become more relevant in the age of AI.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-world-has-come-back-to-entities\">The world has come back to entities<\/h2>\n\n\n\n<p>For several years the dominant AI narrative moved in the opposite direction. Embeddings could encode meaning, vector databases could retrieve similar passages, LLMs could extract facts directly from text. Perhaps explicit entities and identifiers were no longer necessary.<\/p>\n\n\n\n<p>Then we started looking inside modern AI systems, and the entities were there.<\/p>\n\n\n\n<p>In our research on <a href=\"https:\/\/wordlift.io\/blog\/en\/chatgpt-local-entities\/\">ChatGPT&#8217;s web interface, we observed OpenAI carrying structured entity objects<\/a> alongside conversational responses: people, organizations, events, products. More recently, studying local search inside ChatGPT, we found something even more concrete. ChatGPT resolves local businesses into structured objects with an internal <code>entity_lookup_id<\/code> (of the form <code>lbe1_...<\/code>), carrying name, coordinates, address, category, website, ratings and reviews. We were able to connect these objects with externally verifiable Google place identities. And we saw the resolved entity being carried forward into the experience:<\/p>\n\n\n\n<p><strong>query \u2192 entity resolution \u2192 entity panel \u2192 follow-up retrieval<\/strong><\/p>\n\n\n\n<p>These are observations of the current ChatGPT web experience, not a public OpenAI API contract. But the architectural direction is clear. The question for an AI system is no longer only <em>which document should I retrieve?<\/em> It is increasingly <em>which real-world entity does this document refer to?<\/em> Once that identity is established, it becomes part of the interface and part of the context for whatever happens next.<\/p>\n\n\n\n<p>What Rupert and Olivier were solving inside a semantic CMS in 2012 is now happening inside one of the world&#8217;s most advanced AI interfaces. The scale is different and the models are vastly better, but the problem is familiar: <strong>language has to be reconciled with identity.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"enter-content-analysis-v3\">Enter Content Analysis v3<\/h2>\n\n\n\n<p>Content Analysis v3 is our newest implementation of that idea, and one of the foundations of WordLift&#8217;s Context Engine: a semantic-resolution layer that turns unstructured language into entities with stable identities, types and evidence, ready to enter a Knowledge Graph or an AI workflow.<\/p>\n\n\n\n<p>The production system works across eight languages (English, Italian, French, German, Spanish, Portuguese, Japanese and Chinese) against a Knowledge Base of approximately 13.67 million Wikidata entities, 34 million surface forms and 13.67 million semantic vectors, plus almost 11 million DBpedia abstracts covering more than 5 million entities.<\/p>\n\n\n\n<p>It still starts from a fundamental distinction: finding an entity is not the same as knowing what it is. Named Entity Recognition tells us that <em>Apple<\/em> is an Organization and <em>Paris<\/em> is a Location. Useful, but insufficient for a graph. A graph needs identity, and that is the job of Named Entity Disambiguation: <em>Apple<\/em> is Wikidata <code>Q312<\/code>, <em>Paris<\/em> is <code>Q90<\/code>. A label tells us that something looks like an organization. An identifier tells us <strong>which<\/strong> organization.<\/p>\n\n\n\n<p>That stable identity is what lets knowledge discovered on one page connect with data found elsewhere: reconciled across languages, joined with proprietary data, linked to DBpedia, mapped into Schema.org, used by retrieval, or preserved as context for an agent.<\/p>\n\n\n\n<p>So Content Analysis v3 treats recognition and disambiguation as a single system:<\/p>\n\n\n\n<p><strong>content \u2192 language detection \u2192 entity recognition \u2192 candidate retrieval \u2192 reranking \u2192 abstention \u2192 entity identity<\/strong><\/p>\n\n\n\n<p>The output is not a list of keywords. It is grounded context.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-it-resolves-identity\">How it resolves identity<\/h2>\n\n\n\n<p>Recognition starts with GLiNER on a multilingual DeBERTa architecture. The harder stage comes afterward: for each mention, the system has to find possible identities among millions of entities and decide which candidate, if any, the author actually meant.<\/p>\n\n\n\n<p>Candidate retrieval combines two kinds of evidence. Lexical: a search across millions of labels and aliases for exact and approximate matches. Semantic: BGE-M3 embeddings provide vector retrieval over the entity collection, so we can find candidates even when the text and the canonical label do not match.<\/p>\n\n\n\n<p>The candidates are then evaluated by a multilingual BGE reranker cross-encoder. Unlike a vector similarity score, the cross-encoder reads the mention in its surrounding context jointly with the candidate&#8217;s label, description and encyclopedic information. In production we deliberately keep a large candidate pool, because at this scale eliminating the right candidate too early is often impossible to repair later.<\/p>\n\n\n\n<p>Finally, the system combines that semantic evidence with lexical priors, entity typing and other signals before deciding what to return. And one possible answer is, deliberately, nothing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"a-false-edge-is-worse-than-no-edge\">A false edge is worse than no edge<\/h2>\n\n\n\n<p>This is probably the most important principle in Content Analysis v3: the system is allowed to abstain.<\/p>\n\n\n\n<p>A missing relationship can be enriched tomorrow. A wrong one quietly contaminates everything built on top of it: retrieval, recommendations, analytics, generation, agent reasoning.<\/p>\n\n\n\n<p>This led us to separate evidence from confidence. A model can produce a high numerical score and still be wrong. Worse, apparent confidence can shift simply because the candidate set changed. So Content Analysis asks two distinct questions: <em>which candidate should rank first?<\/em> and <em>do we have enough evidence to accept it?<\/em> Signals that are useful for ranking do not automatically count as evidence for accepting an identity.<\/p>\n\n\n\n<p>That may look conservative for an NLP application. For a Context Engine it is essential.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-knowledge-base-is-part-of-the-model\">The Knowledge Base is part of the model<\/h2>\n\n\n\n<!-- WordLift chart: wl-ca3-cjk. Paste into a WordPress \"Custom HTML\" block. -->\n<style>figure.wlc{container-type:inline-size;margin:40px 0;padding:0;border:0;max-width:100%}figure.wlc *{box-sizing:border-box;margin:0;padding:0;border:0;background:none;float:none}.wlc .wlc-card{--sky:#3452db;--berry:#d55471;--ink:#191919;--ink2:#4a4a4a;--track:#f6f6f7;--line:rgba(25,25,25,.16);--hair:rgba(25,25,25,.08);--lab:200px;padding:28px 28px 22px;background:#fff;border:1px solid var(--line);border-radius:18px;color:var(--ink);font-family:var(--font-family-open-sauce,\"Open Sauce\"),\"Open Sauce Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-size:14px;font-weight:400;line-height:1.5;text-align:left}.wlc .wlc-title{font-family:var(--font-family-denim,\"Denim\"),\"Denim INK\",\"Bricolage Grotesque\",system-ui,sans-serif;font-size:26px;font-weight:400;line-height:1.15;letter-spacing:-.01em;color:var(--ink);max-width:30em}.wlc .wlc-note{margin-top:8px;max-width:64ch;color:var(--ink2);font-size:14px;line-height:1.5}.wlc .wlc-legend{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:18px}.wlc .wlc-mono,.wlc .wlc-key,.wlc .wlc-head,.wlc .wlc-src,.wlc .wlc-ticks,.wlc .wlc-n{font-family:var(--font-family-dm-mono,\"DM Mono\"),ui-monospace,\"SF Mono\",Menlo,Consolas,monospace;text-transform:uppercase;letter-spacing:.12em;font-weight:400}.wlc .wlc-key{display:inline-flex;align-items:center;gap:8px;font-size:12px;line-height:1.2;color:var(--ink)}.wlc .wlc-key i{display:block;width:12px;height:12px;border-radius:3px}.wlc .wlc-a{background:linear-gradient(135deg,#5670ea,#3452db)}.wlc .wlc-b{background:linear-gradient(135deg,#e07c94,#d55471)}.wlc .wlc-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:30px 36px;margin-top:22px}.wlc .wlc-head{font-size:12px;line-height:1.2;color:var(--ink)}.wlc .wlc-sub{margin-top:4px;color:var(--ink2);font-size:13px;line-height:1.4}.wlc .wlc-rows{display:grid;gap:14px;margin-top:22px}.wlc .wlc-panel .wlc-rows{margin-top:14px;gap:10px}.wlc .wlc-row{display:grid;grid-template-columns:minmax(0,var(--lab)) minmax(0,1fr);gap:4px 16px;align-items:center}.wlc .wlc-row.wlc-total{padding-top:12px;border-top:1px solid var(--line)}.wlc .wlc-lab{font-size:14px;line-height:1.3;color:var(--ink)}.wlc .wlc-total .wlc-lab,.wlc .wlc-val,.wlc .wlc-strong{font-family:var(--font-family-open-sauce-semibold,\"Open Sauce Semibold\"),\"Open Sauce Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-weight:600}.wlc .wlc-lab.wlc-num{display:flex;gap:10px;align-items:baseline}.wlc .wlc-n{flex:none;font-size:11px;color:var(--ink2)}.wlc .wlc-bars{display:grid;gap:4px}.wlc .wlc-bar{display:grid;grid-template-columns:minmax(0,1fr) 50px;gap:10px;align-items:center}.wlc .wlc-track{display:block;height:16px;border-radius:4px;overflow:hidden;background:linear-gradient(90deg,var(--hair) 1px,transparent 1px) 0 0\/25% 100% repeat-x,var(--track)}.wlc .wlc-fill{display:block;height:100%;border-radius:4px}.wlc .wlc-val{font-size:14px;line-height:1;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}.wlc .wlc-val.wlc-dim{font-family:var(--font-family-open-sauce,\"Open Sauce\"),\"Open Sauce Sans\",system-ui,sans-serif;font-weight:400;color:var(--ink2)}.wlc .wlc-ticks{display:block;position:relative;height:10px;font-size:10px;line-height:1;color:var(--ink2);letter-spacing:.06em}.wlc .wlc-ticks span{position:absolute;top:0;transform:translateX(-50%)}.wlc .wlc-ticks span:first-child{transform:none}.wlc .wlc-ticks span:last-child{transform:none}.wlc .wlc-src{display:block;margin-top:20px;padding-top:14px;border-top:1px solid var(--hair);font-size:11px;line-height:1.5;color:var(--ink2)}.wlc .wlc-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}@container (max-width:560px){.wlc .wlc-card{padding:22px 18px 18px;border-radius:14px}.wlc .wlc-title{font-size:22px}.wlc .wlc-row{grid-template-columns:minmax(0,1fr)}.wlc .wlc-axis .wlc-lab{display:none}}<\/style>\n<figure class=\"wlc\" id=\"wl-ca3-cjk\"><div class=\"wlc-card\" style=\"--lab:230px\"><div class=\"wlc-title\">A tokenizer fixed recognition. The Knowledge Base fixed linking.<\/div><div class=\"wlc-note\">End-to-end entity linking accuracy on the production endpoint, measured after each change. Gold sets: 79 Japanese and 78 Chinese mentions.<\/div><div class=\"wlc-legend\"><span class=\"wlc-key\"><i class=\"wlc-a\"><\/i>Japanese<\/span><span class=\"wlc-key\"><i class=\"wlc-b\"><\/i>Chinese<\/span><\/div><div class=\"wlc-rows\"><div class=\"wlc-row\"><div class=\"wlc-lab\">Whitespace splitting<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:3.8%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Japanese: <\/span>3.8%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:6.4%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Chinese: <\/span>6.4%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">+ Janome and Jieba segmentation<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:10.1%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Japanese: <\/span>10.1%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:14.1%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Chinese: <\/span>14.1%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">+ Japanese and Chinese in the Knowledge Base<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:70.9%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Japanese: <\/span>70.9%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:59%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Chinese: <\/span>59.0%<\/span><\/div><\/div><\/div><div class=\"wlc-row wlc-axis\" aria-hidden=\"true\"><div class=\"wlc-lab\"><\/div><div class=\"wlc-bar\"><div class=\"wlc-ticks\"><span style=\"left:0\">0<\/span><span style=\"left:25%\">25<\/span><span style=\"left:50%\">50<\/span><span style=\"left:75%\">75<\/span><span style=\"right:0\">100%<\/span><\/div><\/div><\/div><\/div><figcaption class=\"wlc-src\">Source: WordLift, Content Analysis v3 live evaluation, 14 to 15 September 2026<\/figcaption><\/div><\/figure>\n\n\n\n<p>It is tempting to imagine that the model does the intelligence and the Knowledge Base is just data attached to it. Entity linking shows why that is wrong.<\/p>\n\n\n\n<p>We saw it clearly with Portuguese. Recognition performed well, but our entity layer lacked Portuguese labels, aliases and <a class=\"wl-entity-page-link\"  href=\"https:\/\/wordlift.io\/blog\/en\/entity\/wikipedia-2\/\" data-id=\"http:\/\/data.wordlift.io\/wl0216\/entity\/wikipedia-2;http:\/\/www.wikidata.org\/entity\/Q52\" >Wikipedia<\/a> mappings. The system knew a phrase was an entity; it did not have the local-language knowledge to say which one. After rebuilding the Knowledge Base with the right Portuguese data, performance changed dramatically.<\/p>\n\n\n\n<p>Japanese and Chinese made the lesson stronger, and produced some of our most useful failures. Performance was initially very poor, and it would have been easy to blame the multilingual model. The real culprit was tokenization: our default strategy assumed word boundaries that do not exist in Japanese and Chinese the way they do in European languages. With proper segmentation, exact-span recall in our tests went from roughly 5% to above 80% in Japanese, and from roughly 3% to almost 80% in Chinese. We added Unicode normalization, traditional-to-simplified folding for Chinese and CJK-specific type logic, then rebuilt the Knowledge Base with Japanese and Chinese labels and aliases. End-to-end linking improved dramatically too.<\/p>\n\n\n\n<p>Chinese is still where the system is weakest, and that is useful information. Entity linking cannot be reduced to choosing a better foundation model. Labels, aliases, descriptions, Wikipedia mappings, normalization, tokenization and evaluation data all have to be multilingual. One of the principles now written into the Content Analysis repository says it well:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Adding a language is a knowledge-base job, not a code switch.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p>Quality is a system property.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"more-knowledge-creates-more-ambiguity\">More knowledge creates more ambiguity<\/h2>\n\n\n\n<p>Scaling the Knowledge Base taught us something counterintuitive: more knowledge can make entity linking harder.<\/p>\n\n\n\n<p>With a small dictionary, an exact string match looks almost definitive. Expand to tens of millions of labels and aliases, and the same string can point to a company, a football club, a political organization, a place, a product, a person or a creative work. Coverage improves, and ambiguity grows with it.<\/p>\n\n\n\n<p>Shortcuts that worked with a smaller collection became unsafe. Exact matching could no longer be equated with identity. Retrieval had to become broader, reranking more important, abstention critical.<\/p>\n\n\n\n<p>This is why I consider the current architecture state of the art. Not because we added one new model, but because of how the pieces work together: multilingual NER, a 13.7M-entity lexical layer, dense semantic retrieval, cross-encoder reranking, semantic typing, evidence-aware abstention and evaluation on the live system. The intelligence is in the system.<\/p>\n\n\n\n<!-- WordLift chart: wl-ca3-kb-size. Paste into a WordPress \"Custom HTML\" block. -->\n<style>figure.wlc{container-type:inline-size;margin:40px 0;padding:0;border:0;max-width:100%}figure.wlc *{box-sizing:border-box;margin:0;padding:0;border:0;background:none;float:none}.wlc .wlc-card{--sky:#3452db;--berry:#d55471;--ink:#191919;--ink2:#4a4a4a;--track:#f6f6f7;--line:rgba(25,25,25,.16);--hair:rgba(25,25,25,.08);--lab:200px;padding:28px 28px 22px;background:#fff;border:1px solid var(--line);border-radius:18px;color:var(--ink);font-family:var(--font-family-open-sauce,\"Open Sauce\"),\"Open Sauce Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-size:14px;font-weight:400;line-height:1.5;text-align:left}.wlc .wlc-title{font-family:var(--font-family-denim,\"Denim\"),\"Denim INK\",\"Bricolage Grotesque\",system-ui,sans-serif;font-size:26px;font-weight:400;line-height:1.15;letter-spacing:-.01em;color:var(--ink);max-width:30em}.wlc .wlc-note{margin-top:8px;max-width:64ch;color:var(--ink2);font-size:14px;line-height:1.5}.wlc .wlc-legend{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:18px}.wlc .wlc-mono,.wlc .wlc-key,.wlc .wlc-head,.wlc .wlc-src,.wlc .wlc-ticks,.wlc .wlc-n{font-family:var(--font-family-dm-mono,\"DM Mono\"),ui-monospace,\"SF Mono\",Menlo,Consolas,monospace;text-transform:uppercase;letter-spacing:.12em;font-weight:400}.wlc .wlc-key{display:inline-flex;align-items:center;gap:8px;font-size:12px;line-height:1.2;color:var(--ink)}.wlc .wlc-key i{display:block;width:12px;height:12px;border-radius:3px}.wlc .wlc-a{background:linear-gradient(135deg,#5670ea,#3452db)}.wlc .wlc-b{background:linear-gradient(135deg,#e07c94,#d55471)}.wlc .wlc-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:30px 36px;margin-top:22px}.wlc .wlc-head{font-size:12px;line-height:1.2;color:var(--ink)}.wlc .wlc-sub{margin-top:4px;color:var(--ink2);font-size:13px;line-height:1.4}.wlc .wlc-rows{display:grid;gap:14px;margin-top:22px}.wlc .wlc-panel .wlc-rows{margin-top:14px;gap:10px}.wlc .wlc-row{display:grid;grid-template-columns:minmax(0,var(--lab)) minmax(0,1fr);gap:4px 16px;align-items:center}.wlc .wlc-row.wlc-total{padding-top:12px;border-top:1px solid var(--line)}.wlc .wlc-lab{font-size:14px;line-height:1.3;color:var(--ink)}.wlc .wlc-total .wlc-lab,.wlc .wlc-val,.wlc .wlc-strong{font-family:var(--font-family-open-sauce-semibold,\"Open Sauce Semibold\"),\"Open Sauce Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-weight:600}.wlc .wlc-lab.wlc-num{display:flex;gap:10px;align-items:baseline}.wlc .wlc-n{flex:none;font-size:11px;color:var(--ink2)}.wlc .wlc-bars{display:grid;gap:4px}.wlc .wlc-bar{display:grid;grid-template-columns:minmax(0,1fr) 50px;gap:10px;align-items:center}.wlc .wlc-track{display:block;height:16px;border-radius:4px;overflow:hidden;background:linear-gradient(90deg,var(--hair) 1px,transparent 1px) 0 0\/25% 100% repeat-x,var(--track)}.wlc .wlc-fill{display:block;height:100%;border-radius:4px}.wlc .wlc-val{font-size:14px;line-height:1;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}.wlc .wlc-val.wlc-dim{font-family:var(--font-family-open-sauce,\"Open Sauce\"),\"Open Sauce Sans\",system-ui,sans-serif;font-weight:400;color:var(--ink2)}.wlc .wlc-ticks{display:block;position:relative;height:10px;font-size:10px;line-height:1;color:var(--ink2);letter-spacing:.06em}.wlc .wlc-ticks span{position:absolute;top:0;transform:translateX(-50%)}.wlc .wlc-ticks span:first-child{transform:none}.wlc .wlc-ticks span:last-child{transform:none}.wlc .wlc-src{display:block;margin-top:20px;padding-top:14px;border-top:1px solid var(--hair);font-size:11px;line-height:1.5;color:var(--ink2)}.wlc .wlc-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}@container (max-width:560px){.wlc .wlc-card{padding:22px 18px 18px;border-radius:14px}.wlc .wlc-title{font-size:22px}.wlc .wlc-row{grid-template-columns:minmax(0,1fr)}.wlc .wlc-axis .wlc-lab{display:none}}<\/style>\n<figure class=\"wlc\" id=\"wl-ca3-kb-size\"><div class=\"wlc-card\" style=\"--lab:230px\"><div class=\"wlc-title\">Twice the knowledge doubled Portuguese and cost English news five points<\/div><div class=\"wlc-note\">Same pipeline and the same acceptance gate, only the Knowledge Base swapped. Portuguese gold set: 83 mentions. AIDA-CoNLL testb: 3,138 mentions.<\/div><div class=\"wlc-legend\"><span class=\"wlc-key\"><i class=\"wlc-b\"><\/i>Knowledge Base, 6.4M entities<\/span><span class=\"wlc-key\"><i class=\"wlc-a\"><\/i>Knowledge Base, 13.5M entities<\/span><\/div><div class=\"wlc-rows\"><div class=\"wlc-row\"><div class=\"wlc-lab\">Portuguese, accuracy<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:42.2%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">6.4M entities: <\/span>42.2%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:84.3%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">13.5M entities: <\/span>84.3%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Portuguese, precision<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:77.8%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">6.4M entities: <\/span>77.8%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:81.6%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">13.5M entities: <\/span>81.6%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">English news (AIDA), recall<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:87.2%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">6.4M entities: <\/span>87.2%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:82.2%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">13.5M entities: <\/span>82.2%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">English news (AIDA), precision<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:88.7%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">6.4M entities: <\/span>88.7%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:86.3%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">13.5M entities: <\/span>86.3%<\/span><\/div><\/div><\/div><div class=\"wlc-row wlc-axis\" aria-hidden=\"true\"><div class=\"wlc-lab\"><\/div><div class=\"wlc-bar\"><div class=\"wlc-ticks\"><span style=\"left:0\">0<\/span><span style=\"left:25%\">25<\/span><span style=\"left:50%\">50<\/span><span style=\"left:75%\">75<\/span><span style=\"right:0\">100%<\/span><\/div><\/div><\/div><\/div><figcaption class=\"wlc-src\">Source: WordLift, Content Analysis v3 offline benchmark, 14 September 2026<\/figcaption><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-state-of-the-art-are-we\">How state of the art are we?<\/h2>\n\n\n\n<!-- WordLift chart: wl-ca3-vs-google. Paste into a WordPress \"Custom HTML\" block. -->\n<style>figure.wlc{container-type:inline-size;margin:40px 0;padding:0;border:0;max-width:100%}figure.wlc *{box-sizing:border-box;margin:0;padding:0;border:0;background:none;float:none}.wlc .wlc-card{--sky:#3452db;--berry:#d55471;--ink:#191919;--ink2:#4a4a4a;--track:#f6f6f7;--line:rgba(25,25,25,.16);--hair:rgba(25,25,25,.08);--lab:200px;padding:28px 28px 22px;background:#fff;border:1px solid var(--line);border-radius:18px;color:var(--ink);font-family:var(--font-family-open-sauce,\"Open Sauce\"),\"Open Sauce Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-size:14px;font-weight:400;line-height:1.5;text-align:left}.wlc .wlc-title{font-family:var(--font-family-denim,\"Denim\"),\"Denim INK\",\"Bricolage Grotesque\",system-ui,sans-serif;font-size:26px;font-weight:400;line-height:1.15;letter-spacing:-.01em;color:var(--ink);max-width:30em}.wlc .wlc-note{margin-top:8px;max-width:64ch;color:var(--ink2);font-size:14px;line-height:1.5}.wlc .wlc-legend{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:18px}.wlc .wlc-mono,.wlc .wlc-key,.wlc .wlc-head,.wlc .wlc-src,.wlc .wlc-ticks,.wlc .wlc-n{font-family:var(--font-family-dm-mono,\"DM Mono\"),ui-monospace,\"SF Mono\",Menlo,Consolas,monospace;text-transform:uppercase;letter-spacing:.12em;font-weight:400}.wlc .wlc-key{display:inline-flex;align-items:center;gap:8px;font-size:12px;line-height:1.2;color:var(--ink)}.wlc .wlc-key i{display:block;width:12px;height:12px;border-radius:3px}.wlc .wlc-a{background:linear-gradient(135deg,#5670ea,#3452db)}.wlc .wlc-b{background:linear-gradient(135deg,#e07c94,#d55471)}.wlc .wlc-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:30px 36px;margin-top:22px}.wlc .wlc-head{font-size:12px;line-height:1.2;color:var(--ink)}.wlc .wlc-sub{margin-top:4px;color:var(--ink2);font-size:13px;line-height:1.4}.wlc .wlc-rows{display:grid;gap:14px;margin-top:22px}.wlc .wlc-panel .wlc-rows{margin-top:14px;gap:10px}.wlc .wlc-row{display:grid;grid-template-columns:minmax(0,var(--lab)) minmax(0,1fr);gap:4px 16px;align-items:center}.wlc .wlc-row.wlc-total{padding-top:12px;border-top:1px solid var(--line)}.wlc .wlc-lab{font-size:14px;line-height:1.3;color:var(--ink)}.wlc .wlc-total .wlc-lab,.wlc .wlc-val,.wlc .wlc-strong{font-family:var(--font-family-open-sauce-semibold,\"Open Sauce Semibold\"),\"Open Sauce Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-weight:600}.wlc .wlc-lab.wlc-num{display:flex;gap:10px;align-items:baseline}.wlc .wlc-n{flex:none;font-size:11px;color:var(--ink2)}.wlc .wlc-bars{display:grid;gap:4px}.wlc .wlc-bar{display:grid;grid-template-columns:minmax(0,1fr) 50px;gap:10px;align-items:center}.wlc .wlc-track{display:block;height:16px;border-radius:4px;overflow:hidden;background:linear-gradient(90deg,var(--hair) 1px,transparent 1px) 0 0\/25% 100% repeat-x,var(--track)}.wlc .wlc-fill{display:block;height:100%;border-radius:4px}.wlc .wlc-val{font-size:14px;line-height:1;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}.wlc .wlc-val.wlc-dim{font-family:var(--font-family-open-sauce,\"Open Sauce\"),\"Open Sauce Sans\",system-ui,sans-serif;font-weight:400;color:var(--ink2)}.wlc .wlc-ticks{display:block;position:relative;height:10px;font-size:10px;line-height:1;color:var(--ink2);letter-spacing:.06em}.wlc .wlc-ticks span{position:absolute;top:0;transform:translateX(-50%)}.wlc .wlc-ticks span:first-child{transform:none}.wlc .wlc-ticks span:last-child{transform:none}.wlc .wlc-src{display:block;margin-top:20px;padding-top:14px;border-top:1px solid var(--hair);font-size:11px;line-height:1.5;color:var(--ink2)}.wlc .wlc-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}@container (max-width:560px){.wlc .wlc-card{padding:22px 18px 18px;border-radius:14px}.wlc .wlc-title{font-size:22px}.wlc .wlc-row{grid-template-columns:minmax(0,1fr)}.wlc .wlc-axis .wlc-lab{display:none}}<\/style>\n<figure class=\"wlc\" id=\"wl-ca3-vs-google\"><div class=\"wlc-card\" style=\"--lab:92px\"><div class=\"wlc-title\">Content Analysis v3 leads recall in five languages. Google leads precision in seven.<\/div><div class=\"wlc-note\">666 entity mentions across eight gold sets, both systems scored with the same mention-matching rules. Content Analysis v3 is shown before the 0.7 acceptance threshold. The higher value in each pair is in bold.<\/div><div class=\"wlc-legend\"><span class=\"wlc-key\"><i class=\"wlc-a\"><\/i>Content Analysis v3<\/span><span class=\"wlc-key\"><i class=\"wlc-b\"><\/i>Google Cloud Natural Language<\/span><\/div><div class=\"wlc-panels\"><div class=\"wlc-panel\"><div class=\"wlc-head\">Recall<\/div><div class=\"wlc-sub\">Correct links over all gold mentions<\/div><div class=\"wlc-rows\"><div class=\"wlc-row\"><div class=\"wlc-lab\">German<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:93%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>93.0%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:87.2%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>87.2%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">English<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:88%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>88.0%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:81%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>81.0%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Spanish<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:88%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>88.0%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:80.7%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>80.7%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Italian<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:86.7%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>86.7%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:84.3%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>84.3%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">French<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:83.6%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>83.6%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:80.8%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>80.8%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Japanese<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:70.9%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>70.9%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:73.4%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>73.4%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Portuguese<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:90.5%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>90.5%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:96.4%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>96.4%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Chinese<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:59%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>59.0%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:70.5%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>70.5%<\/span><\/div><\/div><\/div><div class=\"wlc-row wlc-total\"><div class=\"wlc-lab\">All eight<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:82.9%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>82.9%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:82%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>82.0%<\/span><\/div><\/div><\/div><div class=\"wlc-row wlc-axis\" aria-hidden=\"true\"><div class=\"wlc-lab\"><\/div><div class=\"wlc-bar\"><div class=\"wlc-ticks\"><span style=\"left:0\">0<\/span><span style=\"left:50%\">50<\/span><span style=\"right:0\">100%<\/span><\/div><\/div><\/div><\/div><\/div><div class=\"wlc-panel\"><div class=\"wlc-head\">Precision<\/div><div class=\"wlc-sub\">Correct links among the links each system made<\/div><div class=\"wlc-rows\"><div class=\"wlc-row\"><div class=\"wlc-lab\">German<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:95.2%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>95.2%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:98.7%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>98.7%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">English<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:89.8%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>89.8%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:96.4%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>96.4%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Spanish<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:93.6%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>93.6%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:93.1%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>93.1%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Italian<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:88.9%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>88.9%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:94.6%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>94.6%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">French<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:87.1%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>87.1%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:95.2%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>95.2%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Japanese<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:84.8%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>84.8%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:87.9%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>87.9%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Portuguese<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:92.7%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>92.7%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:98.8%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>98.8%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab\">Chinese<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:75.4%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>75.4%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:79.7%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>79.7%<\/span><\/div><\/div><\/div><div class=\"wlc-row wlc-total\"><div class=\"wlc-lab\">All eight<\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:89%\"><\/span><\/span><span class=\"wlc-val wlc-dim\"><span class=\"wlc-sr\">Content Analysis v3: <\/span>89.0%<\/span><\/div><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:93.3%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Google Cloud Natural Language: <\/span>93.3%<\/span><\/div><\/div><\/div><div class=\"wlc-row wlc-axis\" aria-hidden=\"true\"><div class=\"wlc-lab\"><\/div><div class=\"wlc-bar\"><div class=\"wlc-ticks\"><span style=\"left:0\">0<\/span><span style=\"left:50%\">50<\/span><span style=\"right:0\">100%<\/span><\/div><\/div><\/div><\/div><\/div><\/div><figcaption class=\"wlc-src\">Source: WordLift benchmark against Google Cloud Natural Language API v1, 16 September 2026<\/figcaption><\/div><\/figure>\n\n\n\n<p>We wanted an external reference point, so we built a harness to compare Content Analysis v3 with Google Cloud Natural Language&#8217;s entity-linking service, using the same mention-matching rules and the same eight evaluation sets for both: 666 entity mentions in total.<\/p>\n\n\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Language<\/th><th>Content Analysis v3 F1<\/th><th>Google Cloud NL F1<\/th><\/tr><tr><td>German<\/td><td><strong>94.1<\/strong><\/td><td>92.6<\/td><\/tr><tr><td>English<\/td><td><strong>88.9<\/strong><\/td><td>88.0<\/td><\/tr><tr><td>Spanish<\/td><td><strong>90.7<\/strong><\/td><td>86.5<\/td><\/tr><tr><td>Italian<\/td><td>87.8<\/td><td><strong>89.2<\/strong><\/td><\/tr><tr><td>French<\/td><td>85.3<\/td><td><strong>87.4<\/strong><\/td><\/tr><tr><td>Japanese<\/td><td>77.2<\/td><td><strong>80.0<\/strong><\/td><\/tr><tr><td>Portuguese<\/td><td>91.6<\/td><td><strong>97.6<\/strong><\/td><\/tr><tr><td>Chinese<\/td><td>66.2<\/td><td><strong>74.8<\/strong><\/td><\/tr><tr><td><strong>All languages<\/strong><\/td><td>85.8<\/td><td><strong>87.3<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>We do not universally &#8220;beat Google&#8221;, and that is not the interesting conclusion. The interesting one is more specific. Content Analysis v3 achieves higher F1 on our German, English and Spanish sets, and higher recall in German, English, Spanish, Italian and French. Across all eight languages recall is essentially tied (82.9% versus 82.0%). Google&#8217;s advantage is precision, 93.3% against our 89.0%, which gives it the stronger aggregate F1.<\/p>\n\n\n\n<p>Some caveats. These are small, deliberately difficult evaluation sets, not a universal benchmark. Our own data construction may introduce some home-field advantage. And Google&#8217;s API exposes a single operating point, while Content Analysis can move along the precision\/recall trade-off through its abstention threshold: at the 0.7 acceptance threshold we currently use, it reaches 91.0% precision and 86.1 F1 overall.<\/p>\n\n\n\n<p>So this is how I would put it: the system we actually operate, not a research prototype, is in the same performance territory as a mature commercial entity-linking API, with measurable wins in three languages and clear areas where Google is stronger. I find that more interesting than declaring victory, because we can see what to improve next.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"owning-the-improvement-loop\">Owning the improvement loop<\/h2>\n\n\n\n<p>When Content Analysis makes a mistake, we can ask why. Was the entity absent from the Knowledge Base? Was the right alias missing? Did NER pick the wrong span? Was the correct entity never retrieved as a candidate? Did the cross-encoder choose the wrong reading? Did typing distort the result? Or should the system simply have abstained?<\/p>\n\n\n\n<p>Being able to decompose failure is one of the most valuable properties of this architecture. Our evaluation framework lets us replay candidate sets and inspect every changed entity decision before we release a modification. The question is not just <em>did F1 improve?<\/em> but <em>which entities changed?<\/em><\/p>\n\n\n\n<p>A recent example: <strong>SAP<\/strong>, in German. NER correctly identified it as a company, but a vocabulary rule was inadvertently lending support to the Swedish Social Democratic Party, because <em>party<\/em> appeared in organization-related type evidence. We fixed the rule. Across twenty evaluation ledgers (gold and live entity types, multiple datasets) exactly one production decision changed: SAP moved from the wrong political entity to abstention. No correct links were lost, German precision went up, and we shipped it.<\/p>\n\n\n\n<!-- WordLift chart: wl-ca3-aida-iterations. Paste into a WordPress \"Custom HTML\" block. -->\n<style>figure.wlc{container-type:inline-size;margin:40px 0;padding:0;border:0;max-width:100%}figure.wlc *{box-sizing:border-box;margin:0;padding:0;border:0;background:none;float:none}.wlc .wlc-card{--sky:#3452db;--berry:#d55471;--ink:#191919;--ink2:#4a4a4a;--track:#f6f6f7;--line:rgba(25,25,25,.16);--hair:rgba(25,25,25,.08);--lab:200px;padding:28px 28px 22px;background:#fff;border:1px solid var(--line);border-radius:18px;color:var(--ink);font-family:var(--font-family-open-sauce,\"Open Sauce\"),\"Open Sauce Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-size:14px;font-weight:400;line-height:1.5;text-align:left}.wlc .wlc-title{font-family:var(--font-family-denim,\"Denim\"),\"Denim INK\",\"Bricolage Grotesque\",system-ui,sans-serif;font-size:26px;font-weight:400;line-height:1.15;letter-spacing:-.01em;color:var(--ink);max-width:30em}.wlc .wlc-note{margin-top:8px;max-width:64ch;color:var(--ink2);font-size:14px;line-height:1.5}.wlc .wlc-legend{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:18px}.wlc .wlc-mono,.wlc .wlc-key,.wlc .wlc-head,.wlc .wlc-src,.wlc .wlc-ticks,.wlc .wlc-n{font-family:var(--font-family-dm-mono,\"DM Mono\"),ui-monospace,\"SF Mono\",Menlo,Consolas,monospace;text-transform:uppercase;letter-spacing:.12em;font-weight:400}.wlc .wlc-key{display:inline-flex;align-items:center;gap:8px;font-size:12px;line-height:1.2;color:var(--ink)}.wlc .wlc-key i{display:block;width:12px;height:12px;border-radius:3px}.wlc .wlc-a{background:linear-gradient(135deg,#5670ea,#3452db)}.wlc .wlc-b{background:linear-gradient(135deg,#e07c94,#d55471)}.wlc .wlc-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:30px 36px;margin-top:22px}.wlc .wlc-head{font-size:12px;line-height:1.2;color:var(--ink)}.wlc .wlc-sub{margin-top:4px;color:var(--ink2);font-size:13px;line-height:1.4}.wlc .wlc-rows{display:grid;gap:14px;margin-top:22px}.wlc .wlc-panel .wlc-rows{margin-top:14px;gap:10px}.wlc .wlc-row{display:grid;grid-template-columns:minmax(0,var(--lab)) minmax(0,1fr);gap:4px 16px;align-items:center}.wlc .wlc-row.wlc-total{padding-top:12px;border-top:1px solid var(--line)}.wlc .wlc-lab{font-size:14px;line-height:1.3;color:var(--ink)}.wlc .wlc-total .wlc-lab,.wlc .wlc-val,.wlc .wlc-strong{font-family:var(--font-family-open-sauce-semibold,\"Open Sauce Semibold\"),\"Open Sauce Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-weight:600}.wlc .wlc-lab.wlc-num{display:flex;gap:10px;align-items:baseline}.wlc .wlc-n{flex:none;font-size:11px;color:var(--ink2)}.wlc .wlc-bars{display:grid;gap:4px}.wlc .wlc-bar{display:grid;grid-template-columns:minmax(0,1fr) 50px;gap:10px;align-items:center}.wlc .wlc-track{display:block;height:16px;border-radius:4px;overflow:hidden;background:linear-gradient(90deg,var(--hair) 1px,transparent 1px) 0 0\/25% 100% repeat-x,var(--track)}.wlc .wlc-fill{display:block;height:100%;border-radius:4px}.wlc .wlc-val{font-size:14px;line-height:1;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}.wlc .wlc-val.wlc-dim{font-family:var(--font-family-open-sauce,\"Open Sauce\"),\"Open Sauce Sans\",system-ui,sans-serif;font-weight:400;color:var(--ink2)}.wlc .wlc-ticks{display:block;position:relative;height:10px;font-size:10px;line-height:1;color:var(--ink2);letter-spacing:.06em}.wlc .wlc-ticks span{position:absolute;top:0;transform:translateX(-50%)}.wlc .wlc-ticks span:first-child{transform:none}.wlc .wlc-ticks span:last-child{transform:none}.wlc .wlc-src{display:block;margin-top:20px;padding-top:14px;border-top:1px solid var(--hair);font-size:11px;line-height:1.5;color:var(--ink2)}.wlc .wlc-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}@container (max-width:560px){.wlc .wlc-card{padding:22px 18px 18px;border-radius:14px}.wlc .wlc-title{font-size:22px}.wlc .wlc-row{grid-template-columns:minmax(0,1fr)}.wlc .wlc-axis .wlc-lab{display:none}}<\/style>\n<figure class=\"wlc\" id=\"wl-ca3-aida-iterations\"><div class=\"wlc-card\" style=\"--lab:292px\"><div class=\"wlc-title\">From 18% to 86.9% recall on AIDA-CoNLL, and not in a straight line<\/div><div class=\"wlc-note\">Disambiguation recall after each iteration on AIDA-CoNLL testb: 231 documents, 3,138 gold mentions, on the earlier 6.4M-entity Knowledge Base. Post-hoc boosting stalled near 81%; fine-tuning the reranker broke through.<\/div><div class=\"wlc-legend\"><span class=\"wlc-key\"><i class=\"wlc-a\"><\/i>Rules, thresholds and aliases<\/span><span class=\"wlc-key\"><i class=\"wlc-b\"><\/i>Reranker fine-tuning<\/span><\/div><div class=\"wlc-rows\" style=\"gap:10px\"><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">00<\/span><span>Baseline, untuned<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:18%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>18.0%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">01<\/span><span>Knowledge Base entity patching<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:22.2%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>22.2%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">02<\/span><span>Threshold calibration<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:43.6%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>43.6%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">03<\/span><span>Supplemental aliases<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:47.2%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>47.2%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">04<\/span><span>Label boost tuning<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:50.9%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>50.9%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">05<\/span><span>Cross-encoder fine-tuning, v1<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:73%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>73.0%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">06<\/span><span>Margin threshold disabled<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:78.5%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>78.5%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">07<\/span><span>Fast-path blocklist<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:82%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>82.0%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">08<\/span><span>Alias rebuild and aligned sigmoid gate<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:81.4%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>81.4%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">09<\/span><span>Type-coherence boost, context window<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:78.7%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>78.7%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">10<\/span><span>Conditional label boost<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:80.1%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>80.1%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">11<\/span><span>Blocklist expansion<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-a\" style=\"width:81.1%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>81.1%<\/span><\/div><\/div><\/div><div class=\"wlc-row\"><div class=\"wlc-lab wlc-num\"><span class=\"wlc-n\">12<\/span><span>Reranker v3, anti-overfitting recipe<\/span><\/div><div class=\"wlc-bars\"><div class=\"wlc-bar\"><span class=\"wlc-track\" aria-hidden=\"true\"><span class=\"wlc-fill wlc-b\" style=\"width:86.9%\"><\/span><\/span><span class=\"wlc-val\"><span class=\"wlc-sr\">Recall: <\/span>86.9%<\/span><\/div><\/div><\/div><div class=\"wlc-row wlc-axis\" aria-hidden=\"true\"><div class=\"wlc-lab\"><\/div><div class=\"wlc-bar\"><div class=\"wlc-ticks\"><span style=\"left:0\">0<\/span><span style=\"left:25%\">25<\/span><span style=\"left:50%\">50<\/span><span style=\"left:75%\">75<\/span><span style=\"right:0\">100%<\/span><\/div><\/div><\/div><\/div><figcaption class=\"wlc-src\">Source: WordLift, Content Analysis v3 benchmark log<\/figcaption><\/div><\/figure>\n\n\n\n<p>Other apparently clever changes were rejected. One reranking adjustment improved results dramatically against perfect gold entity types. Tested with the types actually produced by the live GLiNER pipeline, it increased the number of confidently wrong links. It did not ship.<\/p>\n\n\n\n<p>That is now another core principle: <strong>evaluate the system your users actually run.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"from-entity-extraction-to-the-context-engine\">From entity extraction to the Context Engine<\/h2>\n\n\n\n<p>Content Analysis v3 analyzes text and URLs and preserves the relationship between entities and the source HTML. Once a mention becomes a stable identity, it can be reused across pages, languages and datasets: in a Knowledge Graph, in Schema.org markup, for search and recommendations, for GraphRAG, for an agent&#8217;s context.<\/p>\n\n\n\n<p><strong>content \u2192 entity resolution \u2192 Knowledge Graph \u2192 retrieval and reasoning \u2192 content and actions<\/strong><\/p>\n\n\n\n<p>I increasingly think of Content Analysis as a semantic compiler. Human language is the source language. Entities, types, identifiers and evidence are the intermediate representation. The Knowledge Graph is the durable, machine-readable context that comes out of it.<\/p>\n\n\n\n<p>In 2009 we called this Semantic Content Management. Today we talk about Context Engines, GraphRAG and AI agents, and identity has become much more than an SEO concern. It is AI infrastructure. An Entity Graph can represent what an organization knows. A Lexical Graph can preserve the language and distinctions it recognizes. An Action Graph can describe what agents are allowed to do. All of these layers depend on something more primitive. Before an agent can reason about your company, product, store, destination, molecule, paper or customer, it has to answer a simpler question: <strong>which one?<\/strong><\/p>\n\n\n\n<p>That is the problem Content Analysis v3 is designed to solve.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"help-us-break-it\">Help us break it<\/h2>\n\n\n\n<p>Benchmarks are necessary. Your content is harder.<\/p>\n\n\n\n<p>So take something from your website. Try an obscure company, a local business, a product with an ambiguous name, a football club that shares its name with its city, a person known only by their surname, a sentence that requires domain knowledge. Try it in any of the eight languages. Then don&#8217;t just look at the highlighted words: inspect the entity. Did we find the right identity? Did we abstain when we should have? Where did we get it wrong?<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong><a href=\"https:\/\/wordlift.io\/entity-extraction\/\">Try Content Analysis v3 on the WordLift Entity Extraction page.<\/a><\/strong> <\/p>\n<\/blockquote>\n\n\n\n<p>That is the feedback we want.<\/p>\n\n\n\n<p>More than fifteen years have passed since IKS, and since Rupert, Olivier and the Apache Stanbol community taught us to think in terms of entities, reconciliation and open knowledge. Models have become vastly more powerful, but the Semantic Web did not disappear. Some of its most important ideas moved deeper into the stack, and they are resurfacing inside search engines, Knowledge Graphs, multimodal models and AI agents.<\/p>\n\n\n\n<p>The fundamental question has barely changed: what are we talking about? Getting that identity right is where reliable AI context begins.<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Fifteen years after IKS and Apache Stanbol, entity resolution is becoming core infrastructure for AI. Content Analysis v3 turns language into stable Wikidata identities across eight languages, and it abstains when the evidence is thin. On our evaluation sets it already scores higher than Google Cloud Natural Language in German, English and Spanish. Here is how it works, what we measured, and where it still fails.<\/p>\n","protected":false},"author":6,"featured_media":31673,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"wl_entities_gutenberg":"","_wlpage_enable":"","footnotes":""},"categories":[8],"tags":[],"wl_entity_type":[30],"coauthors":[4226],"class_list":["post-31643","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo","wl_entity_type-article"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Content Analysis v3: Entity Linking Benchmarked vs Google - WordLift Blog<\/title>\n<meta name=\"description\" content=\"How WordLift&#039;s Content Analysis v3 resolves entities across eight languages and 13.7M Wikidata items, and how it compares with Google Cloud NL.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Content Analysis v3: Entity Linking Benchmarked vs Google - WordLift Blog\" \/>\n<meta property=\"og:description\" content=\"How WordLift&#039;s Content Analysis v3 resolves entities across eight languages and 13.7M Wikidata items, and how it compares with Google Cloud NL.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/\" \/>\n<meta property=\"og:site_name\" content=\"WordLift Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-18T14:28:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-18T14:28:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andrea Volpini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrea Volpini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/\"},\"author\":{\"name\":\"Andrea Volpini\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#\/schema\/person\/574352082cc71dab8d164410f1cabe0a\"},\"headline\":\"Content Analysis v3: From the Semantic Web to the Entity Layer of AI\",\"datePublished\":\"2026-09-18T14:28:31+00:00\",\"dateModified\":\"2026-09-18T14:28:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/\"},\"wordCount\":3204,\"publisher\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png\",\"articleSection\":[\"seo\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/\",\"url\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/\",\"name\":\"Content Analysis v3: Entity Linking Benchmarked vs Google - WordLift Blog\",\"isPartOf\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png\",\"datePublished\":\"2026-09-18T14:28:31+00:00\",\"dateModified\":\"2026-09-18T14:28:38+00:00\",\"description\":\"How WordLift's Content Analysis v3 resolves entities across eight languages and 13.7M Wikidata items, and how it compares with Google Cloud NL.\",\"breadcrumb\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#primaryimage\",\"url\":\"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png\",\"contentUrl\":\"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png\",\"width\":960,\"height\":540,\"caption\":\"WordLift content analysis named entity recognition\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/wordlift.io\/blog\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Content Analysis v3: From the Semantic Web to the Entity Layer of AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#website\",\"url\":\"https:\/\/wordlift.io\/blog\/en\/\",\"name\":\"WordLift Blog\",\"description\":\"AI-Powered SEO\",\"publisher\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wordlift.io\/blog\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#organization\",\"name\":\"WordLift\",\"url\":\"https:\/\/wordlift.io\/blog\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/mk0wordliftblog7j5te.kinstacdn.com\/wp-content\/uploads\/sites\/3\/2017\/04\/logo-1.png\",\"contentUrl\":\"https:\/\/mk0wordliftblog7j5te.kinstacdn.com\/wp-content\/uploads\/sites\/3\/2017\/04\/logo-1.png\",\"width\":152,\"height\":40,\"caption\":\"WordLift\"},\"image\":{\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#\/schema\/person\/574352082cc71dab8d164410f1cabe0a\",\"name\":\"Andrea Volpini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/wordlift.io\/blog\/en\/#\/schema\/person\/image\/466a1652833e48ca11c81b363eba7c25\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6b9d3d311b50a8749201fe4b318907a8?s=96&d=mm&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6b9d3d311b50a8749201fe4b318907a8?s=96&d=mm&r=pg\",\"caption\":\"Andrea Volpini\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Content Analysis v3: Entity Linking Benchmarked vs Google - WordLift Blog","description":"How WordLift's Content Analysis v3 resolves entities across eight languages and 13.7M Wikidata items, and how it compares with Google Cloud NL.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/","og_locale":"en_US","og_type":"article","og_title":"Content Analysis v3: Entity Linking Benchmarked vs Google - WordLift Blog","og_description":"How WordLift's Content Analysis v3 resolves entities across eight languages and 13.7M Wikidata items, and how it compares with Google Cloud NL.","og_url":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/","og_site_name":"WordLift Blog","article_published_time":"2026-09-18T14:28:31+00:00","article_modified_time":"2026-09-18T14:28:38+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png","type":"image\/png"}],"author":"Andrea Volpini","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Andrea Volpini","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#article","isPartOf":{"@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/"},"author":{"name":"Andrea Volpini","@id":"https:\/\/wordlift.io\/blog\/en\/#\/schema\/person\/574352082cc71dab8d164410f1cabe0a"},"headline":"Content Analysis v3: From the Semantic Web to the Entity Layer of AI","datePublished":"2026-09-18T14:28:31+00:00","dateModified":"2026-09-18T14:28:38+00:00","mainEntityOfPage":{"@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/"},"wordCount":3204,"publisher":{"@id":"https:\/\/wordlift.io\/blog\/en\/#organization"},"image":{"@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png","articleSection":["seo"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/","url":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/","name":"Content Analysis v3: Entity Linking Benchmarked vs Google - WordLift Blog","isPartOf":{"@id":"https:\/\/wordlift.io\/blog\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#primaryimage"},"image":{"@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png","datePublished":"2026-09-18T14:28:31+00:00","dateModified":"2026-09-18T14:28:38+00:00","description":"How WordLift's Content Analysis v3 resolves entities across eight languages and 13.7M Wikidata items, and how it compares with Google Cloud NL.","breadcrumb":{"@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wordlift.io\/blog\/en\/content-analysis\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#primaryimage","url":"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png","contentUrl":"https:\/\/wordlift.io\/blog\/en\/wp-content\/uploads\/sites\/3\/2026\/09\/content-analysis-named-entity-recognition.png","width":960,"height":540,"caption":"WordLift content analysis named entity recognition"},{"@type":"BreadcrumbList","@id":"https:\/\/wordlift.io\/blog\/en\/content-analysis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/wordlift.io\/blog\/en\/"},{"@type":"ListItem","position":2,"name":"Content Analysis v3: From the Semantic Web to the Entity Layer of AI"}]},{"@type":"WebSite","@id":"https:\/\/wordlift.io\/blog\/en\/#website","url":"https:\/\/wordlift.io\/blog\/en\/","name":"WordLift Blog","description":"AI-Powered SEO","publisher":{"@id":"https:\/\/wordlift.io\/blog\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wordlift.io\/blog\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/wordlift.io\/blog\/en\/#organization","name":"WordLift","url":"https:\/\/wordlift.io\/blog\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wordlift.io\/blog\/en\/#\/schema\/logo\/image\/","url":"https:\/\/mk0wordliftblog7j5te.kinstacdn.com\/wp-content\/uploads\/sites\/3\/2017\/04\/logo-1.png","contentUrl":"https:\/\/mk0wordliftblog7j5te.kinstacdn.com\/wp-content\/uploads\/sites\/3\/2017\/04\/logo-1.png","width":152,"height":40,"caption":"WordLift"},"image":{"@id":"https:\/\/wordlift.io\/blog\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/wordlift.io\/blog\/en\/#\/schema\/person\/574352082cc71dab8d164410f1cabe0a","name":"Andrea Volpini","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wordlift.io\/blog\/en\/#\/schema\/person\/image\/466a1652833e48ca11c81b363eba7c25","url":"https:\/\/secure.gravatar.com\/avatar\/6b9d3d311b50a8749201fe4b318907a8?s=96&d=mm&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6b9d3d311b50a8749201fe4b318907a8?s=96&d=mm&r=pg","caption":"Andrea Volpini"}}]}},"_wl_alt_label":[],"wl:entity_url":"http:\/\/data.wordlift.io\/wl0216\/post\/content-analysis-v3-from-the-semantic-web-to-the-entity-layer-of-ai-31643","_links":{"self":[{"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/posts\/31643"}],"collection":[{"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/comments?post=31643"}],"version-history":[{"count":10,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/posts\/31643\/revisions"}],"predecessor-version":[{"id":31698,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/posts\/31643\/revisions\/31698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/media\/31673"}],"wp:attachment":[{"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/media?parent=31643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/categories?post=31643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/tags?post=31643"},{"taxonomy":"wl_entity_type","embeddable":true,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/wl_entity_type?post=31643"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/wordlift.io\/blog\/en\/wp-json\/wp\/v2\/coauthors?post=31643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}