fr3on/egyptian-songs
Egyptian Arabic Songs Dataset ๐ต Dataset Description This dataset contains 3,063 lines of Egyptian Arabic song lyrics with English translations, spanning 280 songs from 1983-2021. The dataset features natural Egyptian Arabic dialect (ุงูุนุงู ูุฉ ุงูู ุตุฑูุฉ) as used in popular music, with automatic genre classification and line-type detection. Languages Source: Egyptian Arabic (ar_EG) - Colloquial dialect in music Target: English (en) Datasetโฆ See the full description on the dataset page: https://huggingface.co/datasets/fr3on/egyptian-songs.
Egyptian Arabic Songs Dataset ๐ต
Dataset Description
This dataset contains 3,063 lines of Egyptian Arabic song lyrics with English translations, spanning 280 songs from 1983-2021. The dataset features natural Egyptian Arabic dialect (ุงูุนุงู ูุฉ ุงูู ุตุฑูุฉ) as used in popular music, with automatic genre classification and line-type detection.
Languages
- Source: Egyptian Arabic (ar_EG) - Colloquial dialect in music
- Target: English (en)
Dataset Summary
Egyptian Arabic music represents a rich cultural tradition and is one of the most influential Arabic music styles globally. This dataset provides:
- Authentic Egyptian Arabic lyrics from popular songs
- Poetic and colloquial expressions
- Genre-classified content for theme-aware training
- Temporal context (release years)
- Song and album metadata for context
Dataset Structure
Data Format
Each entry contains:
{
"id": "song0001_line0042",
"arabic": "ุงูู
ุฏููุฉ ููุจูุง ุฒุญู
ุฉ ุจุงููู
ูู
",
"english": "The heart of the city teems with sorrow.",
"song_name": "ุงูู
ุฏููุฉ",
"album_name": "ูุง ุทุฑูู",
"year": 1983,
"song_id": 1,
"dialect": "egyptian",
"language": "ar",
"language_variant": "ar_EG",
"content_type": "song_lyrics",
"line_type": "verse",
"genre": "sadness"
}Data Fields
Dataset Statistics
Overview
- Total Lines: 3,063
- Unique Songs: 280
- Unique Albums: 35
- Year Range: 1983-2021
- Unique Genres: 9
- Average Arabic Length: 28.6 characters
- Average English Length: 49.2 characters
Genre Distribution
Line Type Distribution
- verse: 2,458 (80.2%)
- chorus: 605 (19.8%)
Temporal Distribution
Top Songs by Line Count
Genres Explained
This dataset includes automatic genre/theme classification using keyword-based detection:
- romance - Love songs, relationships, affection
- sadness - Melancholic themes, heartbreak, sorrow
- nostalgia - Memories, past times, longing
- hope - Optimistic themes, dreams, aspirations
- social - Social commentary, life observations
- patriotic - National pride, homeland themes
- spiritual - Religious or spiritual content
- celebration - Joyful occasions, festivities
- general - General themes without specific classification
Use Cases
โ Recommended Use Cases
- Egyptian Arabic Translation: Train translation models for colloquial Egyptian
- Lyric Generation: Generate Egyptian Arabic song lyrics
- Genre-Aware Models: Train models that understand musical themes
- Cultural NLP: Study Egyptian culture through music
- Dialect Research: Research Egyptian Arabic characteristics in artistic contexts
- Music Information Retrieval: Lyrics-based music analysis
- Cross-lingual Understanding: Arabic-English semantic alignment
โ ๏ธ Limitations
- Domain Scope: Limited to song lyrics (poetic/artistic language)
- Size: 3,063 lines (moderate size for specialized tasks)
- Time Period: 1983-2021 (may not reflect modern slang)
- Artist Coverage: Limited to specific artists/albums
- Line Context: Individual lines may lack full song context
- Genre Accuracy: Automatic genre detection may have errors
Loading the Dataset
Using Hugging Face Datasets
from datasets import load_dataset
# Load the dataset
dataset = load_dataset("fr3on/egyptian-songs")
# Access the data
print(dataset['train'][0])
# Filter by genre
romance_songs = dataset['train'].filter(lambda x: x['genre'] == 'romance')
# Filter by year
songs_80s = dataset['train'].filter(lambda x: 1980 <= x['year'] < 1990)
# Filter by song
specific_song = dataset['train'].filter(lambda x: x['song_id'] == 1)Using Pandas
import pandas as pd
# Load Parquet file directly
df = pd.read_parquet("data/train-00000-of-00001.parquet")
# Analyze genres
print(df['genre'].value_counts())
# Get all lines from a specific song
song_lines = df[df['song_name'] == 'ุงูู
ุฏููุฉ'].sort_values('id')
# Filter by year range
df_90s = df[(df['year'] >= 1990) & (df['year'] < 2000)]Training Examples
Translation Model (Lyric-Aware)
from datasets import load_dataset
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, Seq2SeqTrainer
# Load dataset
dataset = load_dataset("fr3on/egyptian-songs")
# Load model for Arabic-English translation
model_name = "Helsinki-NLP/opus-mt-ar-en"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
# Tokenize
def preprocess(examples):
inputs = tokenizer(examples['arabic'], truncation=True, max_length=128)
targets = tokenizer(examples['english'], truncation=True, max_length=128)
inputs['labels'] = targets['input_ids']
return inputs
tokenized = dataset.map(preprocess, batched=True)
# Train
trainer = Seq2SeqTrainer(
model=model,
train_dataset=tokenized['train'],
eval_dataset=tokenized['test']
)
trainer.train()Genre-Aware Text Generation
from datasets import load_dataset
from transformers import GPT2LMHeadModel, GPT2Tokenizer
dataset = load_dataset("fr3on/egyptian-songs")
# Train separate models per genre
for genre in ['romance', 'sadness', 'hope']:
genre_data = dataset['train'].filter(lambda x: x['genre'] == genre)
print(f"Training {genre} model with {len(genre_data)} examples")
# Train genre-specific modelLyric Generation
from datasets import load_dataset
dataset = load_dataset("fr3on/egyptian-songs")
# Prepare for language modeling
def prepare_for_lm(example):
return {'text': f"<|song|>{example['song_name']}<|genre|>{example['genre']}<|lyrics|>{example['arabic']}<|endoftext|>"}
lm_dataset = dataset.map(prepare_for_lm)
# Train GPT-style model for lyric generationData Collection & Processing
Source
- Origin: Egyptian song lyrics with professional translations
- Quality: Human-curated translations
- Cultural Context: Authentic Egyptian musical heritage
Processing Pipeline
- Extraction: Load from Excel with metadata
- Cleaning: Remove empty/short lines, whitespace normalization
- Deduplication: Hash-based duplicate removal
- Genre Detection: Automatic classification using keyword matching
- Line Type Detection: Classify verses, chorus, instrumental sections
- Validation: Quality checks and statistics generation
- Format Conversion: Export to JSONL and Parquet
Data Quality
- โ Deduplicated using MD5 hash matching
- โ Filtered lines < 3 characters
- โ Removed rows with missing translations
- โ Normalized whitespace
- โ Validated Arabic-English text pairs
- โ Preserved song/album context
Considerations for Using the Data
Egyptian Arabic in Music
Egyptian Arabic in songs has unique characteristics:
- Poetic Language: More metaphorical and artistic than everyday speech
- Rhyme Schemes: Traditional Arabic poetry patterns (ูุงููุฉ)
- Colloquialisms: Mix of formal and informal expressions
- Cultural References: Egyptian-specific idioms and references
- Emotional Intensity: Heightened expressive language
Recommended Training Approaches
- Fine-tune on this dataset after pre-training on general Egyptian Arabic
- Combine with speech data for richer dialect representation
- Use genre filtering for domain-specific applications
- Preserve song context when possible for narrative understanding
- Consider temporal aspects - language evolves over decades
- Balance genres if training general-purpose models
Ethical Considerations
- Copyright: Original songs are copyrighted; dataset for research purposes
- Cultural Sensitivity: Respect Egyptian cultural and musical heritage
- Attribution: Credit original artists and composers
- Representation: One slice of Egyptian musical culture
- Usage: For educational, research, and non-commercial purposes
License
This dataset is released under the CC-BY-4.0 License.
โ ๏ธ Note: Original songs are copyrighted. This dataset is intended for research, education, and non-commercial use only.
Citation
If you use this dataset in your research, please cite:
@dataset{egyptian_songs_2025,
title={Egyptian Arabic Songs Dataset},
author={fr3on},
year={2025},
publisher={Hugging Face},
url={https://huggingface.co/datasets/fr3on/egyptian-songs}
}Acknowledgments
- Source: Egyptian song lyrics with translations
- Processing: Automatic genre and line-type detection
- Cultural Heritage: Egyptian musical tradition
Version History
- v1.0.0 (2025-12-18): Initial release
- 3,063 lyric lines
- 280 songs from 35 albums
- 1983-2021 temporal coverage
- 9 genre categories
- Automatic genre and line-type detection
Keywords: Egyptian Arabic, ar_EG, dialect, colloquial, music, lyrics, songs, translation, NLP, Egyptian culture, Arabic poetry, song generation
Dataset Size: 3,063 lines | Format: Parquet | License: CC-BY-4.0
