DOI: 10.5281/zenodo.15724168
title: CrimeDataBR: Um Dataset de Crimes Reportados em Tweets no Brasil

description: This dataset contains 61.715 tweets related to possible crime reports, labeled with categories such as "Assalto", "Roubo", "Furto", "Assédio", "Segurança Pública", "Homicídio, and "Outros", along with sentiment analysis, toxicity analysis, and location identification.

A particular feature in the Portuguese language is that many words potentially related to crimes are used in non-criminal contexts, such as "O árbitro assaltou meu time ontem" (which translates to "The referee attacked my team yesterday" but in this case refers to something like a sports context, not an actual crime). Therefore, the dataset includes a KEYWORD column: if the keyword column is marked as 1 and the CRIME column is 0, this suggests the phrase may be ambiguous.

The dataset contains 5.000 tweets with actual crime reports, 5.000 with ambiguous expressions, and the remaining tweets are unrelated.



Sentiment Analysis 🙂: The sentiment analysis was performed using PYsentimiento, which categorizes sentiments as Negative, Neutral, or Positive. More information can be found here: Pysentimiento

Toxicity Analysis ☠️: The toxicity analysis covers categories such as toxicity, severe toxicity, insult, profanity, threat, and identity attack, performed using the Perspective API.

Local ⛱️: The entity recognition model is focused on identifying named entities, specifically locations mentioned in the tweets. The approach used for this can be found here: Named Entity Recognition for Legal Domain.


All tweets were preprocessed by removing special characters, converting to lowercase, and eliminating links.

About this file

This dataset contains 61.715 tweets, organized into 21 columns:





id: A unique identifier for each tweet, ranging from 1 to 61.715.




text: The preprocessed text of the tweet.




Perspective API Columns:





INSULT: A score from 0 to 1 indicating how insulting the tweet is.

IDENTITY_ATTACK: A score from 0 to 1 indicating the presence of identity attacks.

SEVERE_TOXICITY: A score from 0 to 1 indicating the severity of toxicity in the tweet.

THREAT: A score from 0 to 1 indicating the presence of threats in the tweet.

PROFANITY: A score from 0 to 1 indicating the presence of profanity in the tweet.

TOXICITY: A score from 0 to 1 indicating the overall toxicity of the tweet.


4.Sentiment Analysis Columns:



POSITIVE: A score from 0 to 1 indicating how positive the tweet is.

NEUTRAL: A score from 0 to 1 indicating how neutral the tweet is.

NEGATIVE: A score from 0 to 1 indicating how negative the tweet is.




Crime Labels (1 or 0, indicating whether the tweet relates to a specific crime):




ASSALTO (Assault)

ROUBO (Robbery)

FURTO (Theft)

ASSEDIO (Harassment)

SPUBLICA (Public Security)

HOMICIDIO (Homicide)

OUTRO (Other)






CRIME: A binary value (1 or 0) indicating whether the tweet contains a reference to a crime.




KEYWORD: A binary value (1 or 0) indicating the presence of a keyword potentially related to a crime.




LOCAL: A binary value (1 or 0) indicating whether a location is mentioned in the tweet.



Sources

NTSScraper, Twitter API, Kaggle public dataset

Collection Methodology



5000 tweets from NTSScraper: crime-related keywords (robbery, assault, etc.) and locations (streets, squares, etc);

5000 tweets from Twitter API: crime-related keywords (when it was freely available for academic research);

51715 tweets from Portuguese Tweets for Sentiment Analysis: crime-related keywords and other tweets without context