This report uses a reproducible, rule-based approach to assess the coherence of adaptation information in Biennial Transparency Reports (BTRs) by detecting explicit linkages between climate hazards and systems within specific elements of each document.
Each row is tagged by Element (e.g., System at risk, Adaptation priorities, Action, Result) and enriched with HazardType and SystemType labels. When tags are empty, we use regex fallbacks to capture direct mentions in the ElementText.
For every document (Country × Document × Year of Submission), we compute seven binary variables by scanning the appropriate target element for the required mentions:
For transparency, the per-document summary stores the first triggering snippet (EntryID • Element • excerpt) when a linkage equals 1. Row-level data keep the original ElementText and receive the document-level flags for convenience:
We report: 1.which countries accumulate the most linkages across their documents and 2. which linkage types are most frequent globally. This supports rapid quality checks and iterative refinement of keyword dictionaries where needed.
## Warning: package 'tidyr' was built under R version 4.4.3
Detector | Regex patterns used |
---|---|
Hazard terms | \bheat( wave|wave)?\b , excessive heat ,
high temperature , extreme (temperature|heat) ,
cold (wave|spell|snap) , \bsnow\b ,
\bice\b , \bfrost\b , freeze ,
severe winter storm ,
tropical storm , cyclone , typhoon ,
hail , lightning , thunderstorm ,
heavy rain , windstorm ,
sand storm dust storm ,
tornado , torrential ,
strong winds? , droughts? ,
dry (spell|days?) , aridity ,
wild ?fire(s)? , forest fire(s)? ,
bush ?fire(s)? landslides? ,
flood(s|ing)? , inundation ,
temperature (rise|increase|change|warming|drop) ,
rising temperatures? , change in precipitation ,
rainfall (variability|patterns?|distribution|intensity|frequency) salin(i[sz]ation|ity) ,
erosion , desertification ,
sea[ -]?level (rise|increase) ,
coastal (flooding|erosion|submersion|retreat|beach loss) ,
sea (surface )?temperature , ocean temperature ,
ocean acidification , acidification ,
pest(s)? , vector-borne ,
disease(s)? , infestation ,
invasive species |
System terms | \bcrop(s|ping)?\b ,
agri(culture|cultural)? , yield ,
rain[- ]?fed , irrigat , farming ,
livestock , pasture ,
pastoral(ist)? , grazing ,
herder fish(ery|eries)? ,
aquaculture , fishing ,
marine harvest , forest(ry)? ,
tree(s)? , non[- ]timber ,
terrestrial , drylands? ,
ecosystem(s)? , ecosystem services? ,
ecological system desertification ,
land degradation ,
soil (degradation|erosion) , |
datatable(
small_df,
escape = FALSE,
class = "compact stripe hover",
options = list(
pageLength = 15,
scrollX = TRUE,
dom = "tip"
),
caption = "📄 Full linkages data (hover ElementText to see full text)"
)
## Warning in instance$preRenderHook(instance): It seems your data is too big for
## client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html
# (optional) push evidence columns to the end
# sum_df <- dplyr::relocate(sum_df, dplyr::any_of(ev_cols), .after = dplyr::last_col())
datatable(
sum_df,
escape = FALSE, # render HTML for tooltips
class = "compact stripe hover", # tighter rows
options = list(
pageLength = 15,
scrollX = TRUE,
dom = "tip"
),
caption = "🏆 Linkages summary (hover Ev_* cells to see full evidence)"
)
DT::datatable(
by_country_links,
options = list(pageLength = 15, autoWidth = TRUE, dom = 'tip'),
caption = "🏆 Countries with Most Linkages (sum across documents)"
)
DT::datatable(
by_type_links,
options = list(pageLength = 10, autoWidth = TRUE, dom = 'tip'),
caption = "📊 Linkage Types by Frequency Across All Documents"
)
We currently lack robust, curated keywords to infer semantic links between Adaptation priorities, Action, and Result elements. There are two defensible ways to operationalize these linkages:
Treat linkages as present if the two elements both appear anywhere in the same document.
Pros: Easiest to explain; stable across languages;
low risk of over-engineering.
Cons: Overestimates linkage strength when sections are
listed but not actually connected.
Require alignment cues between the two elements before flagging a linkage:
Pros: Reduces false positives; closer to the spirit
of “coherence.”
Cons: Sensitive to tagging gaps and language
variations; may undercount true links.
# Overall comparison
DT::datatable(
overall_cmp,
class = "compact stripe hover",
options = list(pageLength = 10, dom = "tip"),
caption = "📊 Q11–Q13: Co-presence vs STRICT — overall comparison"
)
This table compares two ways of detecting linkages among Adaptation priorities → Actions → Results across documents:
Columns
DocsWithLink_Co − DocsWithLink_Strict
.Share_Co_pct − Share_Strict_pct
.Interpreting gaps
This table aggregates linkage detection by country across documents (distinct combinations of Country × Document × Year of Submission).
Columns
Co − Strict
(how many
documents lose the linkage when stricter evidence is required).Interpreting the counts
This table lists only the documents where the two linkage modes disagree for Q11–Q13:
Columns
"[EntryID • Element] excerpt…"
Interpreting rows