Skip to main content

PyPI - PyPi MIT license arXiv

ANTM

ANTM: An Aligned Neural Topic Model for Exploring Evolving Topics

alt text

Dynamic topic models are effective methods that primarily focus on studying the evolution of topics present in a collection of documents. These models are widely used for understanding trends, exploring public opinion in social networks, or tracking research progress and discoveries in scientific archives. Since topics are defined as clusters of semantically similar documents, it is necessary to observe the changes in the content or themes of these clusters in order to understand how topics evolve as new knowledge is discovered over time. Here, we introduce a dynamic neural topic model called ANTM, which uses document embeddings (data2vec) to compute clusters of semantically similar documents at different periods, and aligns document clusters to represent their evolution. This alignment procedure preserves the temporal similarity of document clusters over time and captures the semantic change of words characterized by their context within different periods. Experiments on four different datasets show that ANTM outperforms probabilistic dynamic topic models (e.g. DTM, DETM) and significantly improves topic coherence and diversity over other existing dynamic neural topic models (e.g. BERTopic).

Installation

Installation can be done using:

pip install antm

Quick Start

As implemented in the notebook, we can quickly start extracting evolving topics from DBLP dataset containing computer science articles.

To Fit and Save a Model

from antm import ANTM
import pandas as pd

# load data
df=pd.read_parquet("./data/dblpFullSchema_2000_2020_extract_big_data_2K.parquet")
df=df[["abstract","year"]].rename(columns={"abstract":"content","year":"time"})
df=df.dropna().sort_values("time").reset_index(drop=True).reset_index()

# choosing the windows size and overlapping length for time frames
window_size = 6
overlap = 2

#initialize model
model=ANTM(df,overlap,window_size,umap_n_neighbors=10, partioned_clusttering_size=5,mode="data2vec",num_words=10,path="./saved_data")

#learn the model and save it
topics_per_period=model.fit(save=True)
#output is a list of timeframes including all the topics associated with that period

To Load a Model

from antm import ANTM
import pandas as pd

# load data
df=pd.read_parquet("./data/dblpFullSchema_2000_2020_extract_big_data_2K.parquet")
df=df[["abstract","year"]].rename(columns={"abstract":"content","year":"time"})
df=df.dropna().sort_values("time").reset_index(drop=True).reset_index()

# choosing the windows size and overlapping length for time frames
window_size = 6
overlap = 2
#initialize model
model=ANTM(df,overlap,window_size,mode="data2vec",num_words=10,path="./saved_data")
topics_per_period=model.load()

Plug-and-Play Functions

#find all the evolving topics
model.save_evolution_topics_plots(display=False)

#plots a random evolving topic with 2-dimensional document representations
model.random_evolution_topic()

#plots partioned clusters for each time frame
model.plot_clusters_over_time()

#plots all the evolving topics
model.plot_evolving_topics()

Topic Quality Metrics

#returns pairwise jaccard diversity for each period
model.get_periodwise_pairwise_jaccard_diversity()

#returns proportion unique words diversity for each period
model.get_periodwise_puw_diversity()

#returns topic coherence for each period
model.get_periodwise_topic_coherence(model="c_v") 

Datasets

Arxiv articles

DBLP articles

Elon Musk's Tweets

New York Times News

Experiments

You can use the notebooks provided in "./experiments" in order to run ANTM on other sequential datasets.

Citation

To cite ANTM, please use the following bibtex reference:

@misc{rahimi2023antm,
      title={ANTM: An Aligned Neural Topic Model for Exploring Evolving Topics}, 
      author={Hamed Rahimi and Hubert Naacke and Camelia Constantin and Bernd Amann},
      year={2023},
      eprint={2302.01501},
      archivePrefix={arXiv},
      primaryClass={cs.IR}
}

Release files for antm 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for antm 0.1.7
File Size Uploaded
antm-0.1.7.tar.gz 14.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for antm 0.1.7
File Interpreter ABI Platform
antm-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 28.9 kB

Release files / antm-0.1.7.tar.gz

Download URL antm-0.1.7.tar.gz
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
dd58c670243849ae25bbb3091774deec02b330578c3114fbc58a5d2da21f9d3f
BLAKE2b-256 checksum
How to use checksums
b002ad6124bab88652dbc13ec3e4d3569a1289ea6b15a05f7c6379c15bb51bed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.9

Release files / antm-0.1.7-py3-none-any.whl

Download URL antm-0.1.7-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c9394b044d29634df45e4aaa4db796d6c54fe3ea1596f68dbe512d2822775a84
BLAKE2b-256 checksum
How to use checksums
f0610d29bc0617b11dabde12b68d275db26f3f5770eab9ae94945cf602eafc54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.9

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.14

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page