ypolatog/perfume-occasion-texts
Perfume Occasion Texts Dataset Summary This dataset has 100 short texts I wrote about perfumes from my collection and my wish list. Each text is about 200 characters and describes a perfume's notes, how it performs, and the season or situation it suits. Each text is labelled with the occasion I would most reach for that perfume: everyday, going out, formal or casual-relaxed. The task is 4-class text classification. It has two splits: Split Texts everyday… See the full description on the dataset page: https://huggingface.co/datasets/ypolatog/perfume-occasion-texts.
Perfume Occasion Texts
Dataset Summary
This dataset has 100 short texts I wrote about perfumes from my collection and my wish list. Each text is about 200 characters and describes a perfume's notes, how it performs, and the season or situation it suits. Each text is labelled with the occasion I would most reach for that perfume: everyday, going out, formal or casual-relaxed. The task is 4-class text classification.
It has two splits:
I built this dataset for a CMU 24-679 homework assignment to practice collecting data, publishing it on Hugging Face, and augmenting it.
Dataset Structure
Columns
Label definitions
- everyday (0): safe and versatile, for class, the office or errands. If I would wear it anywhere, it is labelled
everyday. - going out (1): evenings, dates, bars and parties
- formal (2): weddings, nice dinners, interviews and events
- casual-relaxed (3): weekends, outdoors, lounging and hot days
Reading sample_id in the augmented split
The part before the first underscore is always the parent text. Some copy numbers are missing because duplicate outputs were removed.
Dataset Creation
Writing the texts
I wrote one text per perfume in my own words, following the same guidelines for all 100:
- about 200 characters (the sheet flagged anything under 150 or over 260)
- describe the notes or smell, and the situations or seasons the perfume suits
- avoid the label words themselves (everyday, going out, formal, casual, relaxed)
After writing, I reviewed the texts once. Spelling and punctuation were corrected, a short season sentence (for example "Great for hot weather." or "Best for fall and winter.") was added to texts that had no season or situation cue, and 12 labels were changed after rereading the texts. The texts often mention brands, and many compare a perfume with the more expensive fragrance it imitates ("a dupe of …").
Augmentation (augmented split)
I used the four text augmentation methods from class. Each method starts from the original text (methods are not stacked), and every synthetic text keeps its parent's label and perfume name.
Protected words: the synonym method never replaces pronouns, negations, perfume notes (vanilla, oud, bergamot…), season and weather words, or the label words, and it skips capitalized brand and perfume names. This keeps the cues that carry the label.
Balancing: formal has only 13 original texts, so smaller classes got more copies per method, each copy with a new random seed:
This generated 1,336 texts. Repeated outputs were then removed (4 word swaps and 89 synonym replacements), leaving 1,243. A fixed random seed (24679) makes the split reproducible. I checked that every synthetic text differs from its parent, from every original text and from every other synthetic text, keeps its parent's label, and does not introduce a label word.
Uses
Suitable for
- Practicing small-data text classification, for example TF-IDF with logistic regression, or fine-tuning a small transformer
- Comparing training on real texts (
original) with training on real + synthetic texts (augmented) - Teaching examples of simple text augmentation and its side effects
Not suitable for
- Predicting how perfumes are generally worn. The labels are one person's opinion.
- Recommending perfumes or judging their quality
- Evaluating a model on the
augmentedsplit alone. Synthetic texts are variations of the same 100 texts, so testing on them overstates accuracy. Useoriginaltexts for evaluation.
Bias, Risks and Limitations
- One writer, subjective labels: all texts and labels come from me. Someone else could label the same perfume differently, and many perfumes could fit two occasions.
- Small classes: only 13 real
formaltexts and 20casual-relaxedtexts. The balancedaugmentedsplit contains more copies of these texts, not more real examples. - Shortcut cues: season sentences correlate with the labels (30 of the 40 texts that mention cold weather, winter or fall are
going out), and about half of the texts start with the same phrase ("Prominent notes …"). A model may learn these patterns instead of the occasion. - Noisy synthetic texts: character edits add typos on purpose. Word swaps can make a sentence ungrammatical. WordNet's first sense sometimes gives an odd or wrong synonym (for example "forward" → "forrard", "skin" → "sputter", "designer" → "decorator").
- Data leakage: if you randomly split the
augmentedtexts into train and test sets, copies of the same text can end up on both sides. Split by the parent ID insample_idinstead.
Personal and Sensitive Information
The texts contain only my opinions about commercial perfumes. Brand and perfume names are public product names. There is no personal information about me or anyone else.
Dataset Card Author
Hugging Face user ypolatog, for a CMU 24-679 homework assignment.
