Type: | Package |
Version: | 1.0.0 |
Title: | Disaster Alert and Sentiment Analysis |
Description: | By systematically aggregating and processing textual reports from earthquakes, floods, storms, wildfires, and other natural disasters, the framework enables a holistic assessment of crisis narratives. Intelligent cleaning and normalization techniques transform raw commentary into structured data, ensuring precise extraction of disaster-specific insights. Collective sentiments of affected communities are quantitatively scored and qualitatively categorized, providing a multifaceted view of societal responses under duress. Interactive geographic maps and temporal charts illustrate the evolution and spatial dispersion of emotional reactions and impact indicators. |
License: | GPL-3 |
Depends: | R (≥ 4.1.0) |
Imports: | methods, tidyverse, ggplot2, leaflet, wordcloud, textdata,tidytext, quanteda, tidyr, plotly, htmlwidgets, RColorBrewer, dplyr, stringr, scales,DT |
Suggests: | rmarkdown, testthat (≥ 3.0.0) |
Maintainer: | Leila Marvian Mashhad <Leila.marveian@gmail.com> |
NeedsCompilation: | no |
Packaged: | 2025-07-18 10:10:24 UTC; HAMIAN |
Author: | Hossein Hassani [aut], Nadejda Komendantova [aut], Leila Marvian Mashhad [aut, cre] |
Encoding: | UTF-8 |
Repository: | CRAN |
Date/Publication: | 2025-07-21 09:01:56 UTC |
Analyze Disaster Sentiment
Description
It performs sentiment analysis on disaster-related text data using multiple methods.
Usage
analyze_disaster_sentiment(data, text_column = "User_Comment", method = "afinn")
Arguments
data |
A data frame containing disaster data |
text_column |
Name of the column containing text to analyze (default: "User_Comment") |
method |
Sentiment analysis method: "afinn", "bing", "nrc", or "syuzhet" (default: "afinn") |
Value
Data frame with added sentiment scores and categories.
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
tweets_df <- data.frame(
User_Comment = c(
"The earthquake was terrible and scary",
"Rescue teams are doing a wonderful job, I feel hopeful",
"No damage here, everything feels normal"
),
stringsAsFactors = FALSE
)
result_df <- analyze_disaster_sentiment(tweets_df, text_column = "User_Comment", method = "afinn")
print(result_df)
Calculate Sentiment Statistics
Description
This function calculates comprehensive statistics for sentiment analysis.
Usage
calculate_sentiment_stats(data)
Arguments
data |
A data.frame with sentiment analysis results. |
Value
List of statistical summaries.
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
result_df <- data.frame(
User_Comment = c(
"The earthquake was terrible and scary",
"Rescue teams are doing a wonderful job, I feel hopeful",
"No damage here, everything feels normal"
),
sentiment_score = c(-2.5, 3.0, -0.5),
sentiment_category = c("Negative", "Positive", "Neutral"),
stringsAsFactors = FALSE
)
stats <- calculate_sentiment_stats(result_df)
str(stats)
print("=== Overall Sentiment ===")
print(stats$overall_sentiment)
print("=== Extreme Comments ===")
print(stats$extreme_comments)
print("=== Summary Counts ===")
print(stats$summary)
Clean Disaster Text
Description
It cleans and preprocesses text data for analysis.
Usage
clean_disaster_text(text)
Arguments
text |
Vector of text strings to clean |
Value
Vector of cleaned text strings.
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
raw_comments <- c(
"The earthquake!!! happened @ midnight...",
NA,
"Floods in 2025 were terrible? Really scary.",
"Support & rescue teams: amazing work!"
)
cleaned_comments <- clean_disaster_text(raw_comments)
print(cleaned_comments)
Create Interactive Plots
Description
This function creates interactive plots using plotly for better user experience.
Usage
create_interactive_plots(data, plot_type = "scatter")
Arguments
data |
A data.frame with sentiment analysis results |
plot_type |
Type of interactive plot: "scatter", "bar", "timeline" |
Value
Plotly object.
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
sample_data <- data.frame(
City = c("CityA", "CityB", "CityA", "CityC", "CityB"),
Longitude = c(10.0, 11.5, 10.0, 12.2, 11.5),
Latitude = c(50.1, 49.9, 50.1, 50.5, 49.9),
sentiment_score = c( 2.5, -1.0, 0.0, 3.0, -2.0),
sentiment_category= c("Positive","Negative","Neutral","Positive","Negative"),
User_Comment = c(
"Amazing rescue efforts!",
"Terrible flooding last night.",
"All calm here.",
"Hope everyone is safe.",
"Worst disaster ever."
),
Timestamp = as.POSIXct(c(
"2025-07-10 14:00", "2025-07-10 15:30",
"2025-07-11 10:00", "2025-07-11 12:45",
"2025-07-12 09:20"
))
)
scatter_plot <- create_interactive_plots(sample_data, plot_type = "scatter")
bar_plot <- create_interactive_plots(sample_data, plot_type = "bar")
bar_plot
timeline_plot <- create_interactive_plots(sample_data, plot_type = "timeline")
timeline_plot
Create Interactive Sentiment Map
Description
This function creates an interactive Leaflet map showing disaster locations colored by sentiment.
Usage
create_sentiment_map(data, lat_col = "Latitude", lon_col = "Longitude")
Arguments
data |
A data.frame with sentiment analysis results |
lat_col |
Name of latitude column (default: "Latitude") |
lon_col |
Name of longitude column (default: "Longitude") |
Value
Leaflet map object
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
sample_data <- data.frame(
City = c("CityA", "CityB", "CityC"),
Longitude = c(10.0, 11.5, 12.2),
Latitude = c(50.1, 49.9, 50.5),
sentiment_score = c( 2.5, -1.0, 0.0),
sentiment_category = c("Positive", "Negative", "Neutral"),
User_Comment = c(
"Amazing rescue efforts!",
"Terrible flooding last night.",
"All calm here."
),
stringsAsFactors = FALSE
)
sentiment_map <- create_sentiment_map(sample_data,
lat_col = "Latitude",
lon_col = "Longitude")
sentiment_map
Generate Random Tweets
Description
This function Generates synthetic tweets with weather conditions and sentiment.
Usage
generate_tweets(n)
Arguments
n |
The number of tweets to generate |
Value
A data.frame containing two columns: Date: The date of the tweet T1: The text of the tweet
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
tweets <- generate_tweets(100)
head(tweets)
Generate Word Clouds from Tweets
Description
This function Creates and plots a word cloud based on the cleaned and stemmed words extracted from one or more tweets.
Usage
generate_word_clouds(tweet)
Arguments
tweet |
A character vector of tweet texts, or a data frame/tibble whose first column contains tweet texts. |
Value
The main side effect is the word cloud drawing.
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
# Generate word cloud from a single tweet
tweet_text <- "This is a sample tweet for word cloud generation!"
generate_word_clouds(tweet_text)
## This will generate a word cloud image where the most frequent words
## in the tweet will be displayed larger.
Plot Sentiment Distribution
Description
This function Creates various plots showing sentiment distribution.
Usage
plot_sentiment_distribution(data, plot_type = "bar")
Arguments
data |
A data frame with sentiment analysis results |
plot_type |
Type of plot: "pie", "bar", "histogram", or "geographic" |
Value
ggplot object or plot.
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
sample_data <- data.frame(
sentiment_score = c( 2.5, -1.0, 0.0, 3.0, -2.0, 1.5, -0.7),
sentiment_category = c("Positive", "Negative", "Neutral", "Positive",
"Negative", "Positive", "Neutral"),
Longitude = c(10.0, 11.5, 10.0, 12.2, 11.5, 10.8, 12.0),
Latitude = c(50.1, 49.9, 50.1, 50.5, 49.9, 50.3, 50.4),
stringsAsFactors = FALSE
)
bar_plot <- plot_sentiment_distribution(sample_data, plot_type = "bar")
print(bar_plot)
hist_plot <- plot_sentiment_distribution(sample_data, plot_type = "histogram")
print(hist_plot)
plot_sentiment_distribution(sample_data, plot_type = "pie")
geo_plot <- plot_sentiment_distribution(sample_data, plot_type = "geographic")
print(geo_plot)
Preprocess Tweets for Sentiment Analysis
Description
This function takes a list of tweets as input and performs various preprocessing steps to prepare the data for sentiment analysis.
Usage
process_tweet(tweet)
Arguments
tweet |
A vector of tweets |
Value
A list including:
A vector containing preprocessed tweets.
A vector containing tokens of tweets.
Author(s)
Hossein Hassani and Leila Marvian Mashhad and Nadejda Komendantova.
Examples
tweets_data <- "I'm feeling really happy today! #goodvibes"
preprocessed_tweets <- process_tweet(tweets_data)
print(preprocessed_tweets)