CoolFace
Datasetpublic

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.

sourceHugging Facecc-by-4.0updated 10d agoView on Hugging Face
0likes54downloads
Dataset Card

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:

SplitTextseverydaygoing outformalcasual-relaxedContents
original10029381320My own writing
augmented1,243330296320297Synthetic texts only, made from original with four text augmentations

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

ColumnTypeDescription
sample_idstringP001P100 for my texts; synthetic texts record their origin (see below)
perfume_namestringName of the perfume the text describes (synthetic texts keep their parent's name)
textstringThe description, 150–258 characters in original (mean 198)
labelclass label0 = everyday, 1 = going out, 2 = formal, 3 = casual-relaxed

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

ExampleMeaning
P057_charswap_022nd character-swap copy of text P057
P002_chardelete_011st character-deletion copy of P002
P009_wordswap_044th word-swap copy of P009
P066_synonym_066th synonym copy of P066

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.

MethodWhat it doesKept
charswapswaps two neighbouring interior letters in 30% of words with 4+ letters (at most 3 words); first and last letters stay334
chardeletedeletes one interior letter in 30% of words with 4+ letters (at most 3 words)334
wordswapswaps two words within one sentence330
synonymreplaces one word with a WordNet synonym (NLTK, first sense, same part of speech)245

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:

LabelOriginal textsCopies per methodGenerated
going out382304
everyday293348
casual-relaxed204320
formal137364

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 augmented split alone. Synthetic texts are variations of the same 100 texts, so testing on them overstates accuracy. Use original texts 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 formal texts and 20 casual-relaxed texts. The balanced augmented split 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 augmented texts into train and test sets, copies of the same text can end up on both sides. Split by the parent ID in sample_id instead.

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.