Provides a unified set of methods to detect scientific emergence
and technological trajectories in academic papers and patents. The package
combines citation network analysis with community detection and attribute
extraction, also applying natural language processing (NLP) and structural
topic modeling (STM) to uncover the contents of research communities. It
implements metrics and visualizations of community trajectories, including
novelty indicators, citation cycle time, and main path analysis, allowing
researchers to map and interpret the dynamics of emerging knowledge fields.
Applications of the method include: Souza et al. (2022)

The goal of birddog is sniffing out emergence and trajectories in
scientific and patent literature.
Install the stable version from CRAN:
install.packages("birddog")
library(birddog)
Or the development version from GitHub:
# install.packages("remotes")
remotes::install_github("roneyfraga/birddog")
library(birddog)
read_openalex() – OpenAlex API or CSV exportsread_wos() – Web of Science BibTeX, RIS, plain-text, tab-delimitedsniff_network() – direct citation or bibliographic coupling networkssniff_components() – identify connected componentssniff_groups() – community detection (fast greedy, Louvain, Leiden,
walktrap, edge betweenness)sniff_groups_attributes() – group-level summary statistics and
horizon plotssniff_groups_keywords() – keyword frequency per groupsniff_groups_terms() – NLP-based phrase extractionsniff_groups_hubs() – hub classification (Zi-Pi, Guimera and Amaral
2005)sniff_groups_cumulative_citations() – per-document citation growthsniff_citations_cycle_time() – measures the pace of change (Kayal
1999)sniff_entropy() – normalized Shannon entropy for keyword diversity
(Shannon 1948; Pielou 1966)sniff_groups_cumulative() – cumulative clusterization over timesniff_groups_trajectories() – Jaccard similarity DAG across yearsplot_group_trajectories_2d() / plot_group_trajectories_3d() –
node-based trajectory plotsdetect_main_trajectories() – top-N disjoint paths via dynamic
programmingfilter_trajectories() – filter and rank detected trajectoriesplot_group_trajectories_lines_2d() /
plot_group_trajectories_lines_3d() – variable-width line plotssniff_key_route() – key-route search (Liu and Lu 2012) with SPC
weightssniff_groups_stm_prepare() / sniff_groups_stm_run() – structural
topic modeling within groupsThe vignettes are available online here: