CoolFace
Datasetpublic

TigreGotico/portuguese-unified-pronunciation-lexicon

Portuguese Unified Pronunciation Lexicon A flat, single-row-per-pronunciation dataset merging Portuguese IPA transcriptions from three authoritative sources. Each row is a word × region × POS tuple with both broad phonemic (ipa_broad) and narrow phonetic (ipa_narrow) transcriptions normalized across sources. Source Words Convention Description Infopédia (Porto Editora) 102,685 Broad phonemic European Portuguese dictionary IPA Wiktionary (pt.wiktionary.org) 15,720… See the full description on the dataset page: https://huggingface.co/datasets/TigreGotico/portuguese-unified-pronunciation-lexicon.

sourceHugging Facecc-by-sa-4.0updated 3mo agoView on Hugging Face
1likes430downloads
Dataset Card

Portuguese Unified Pronunciation Lexicon

A flat, single-row-per-pronunciation dataset merging Portuguese IPA transcriptions from three authoritative sources. Each row is a word × region × POS tuple with both broad phonemic (ipa_broad) and narrow phonetic (ipa_narrow) transcriptions normalized across sources.

SourceWordsConventionDescription
Infopédia (Porto Editora)102,685Broad phonemicEuropean Portuguese dictionary IPA
Wiktionary (pt.wiktionary.org)15,720MixedMulti-region IPA + X-SAMPA
Portal da Língua Portuguesa53,349Narrow phonetic10-region phonetic lexicon, pipe-delimited phones

Lexicon entries can be searched at: https://www.portaldalinguaportuguesa.org/index.php?action=fonetica&act=list

Dataset Stats

  • —Total rows: 535,918
  • —Unique words: 121,938
  • —With POS: 375,935 rows (70%); empty pos means identical IPA across all POS
  • —With X-SAMPA: 1,672 rows (0.3%); 23 of those (22 words) have X-SAMPA but no IPA
  • —Broad ≠ narrow: 378,918 rows (71% — systematic convention mapping, not real disagreement)
  • —Sub-region rows: 367,149 (69%); all differ from their parent region — 572 redundant sub=parent rows collapsed
  • —`pt` (pan-Portuguese): 941 rows — words where the lexicon declares all regions identical (199) or Wiktionary provides no region qualifier (745)
  • —Regions: 16

Source Overlap (words)

Sources combinedWords
infopedia + lexicon + wiktionary10,570
infopedia + lexicon25,625
infopedia + wiktionary964
lexicon + wiktionary2,084
infopedia only65,526
lexicon only15,067
wiktionary only2,102

Words appearing in multiple sources have their URLs merged into the same row where the IPA is identical; where the IPA differs between sources (typically due to transcription conventions), they remain separate rows.

IPA Convention Differences

The three sources use different transcription conventions. On the 36,039 words shared between infopedia and lexicon, 76% differ in raw IPA — but this is systematic convention mapping:

PatternCountCause
ə → ɨ12,989Infopedia marks optional schwa (ə), lexicon writes explicit ɨ
r → ɾ/ʀ7,977Infopedia uses broad /r/, lexicon distinguishes /ɾ/ vs /ʀ/
a → ɐ7,875Both mark vowel reduction; infopedia uses /a/, lexicon uses /ɐ/
e → ɨ3,623Unstressed e — infopedia uses /e///ə/, lexicon uses /ɨ/

ipa_broad and ipa_narrow normalize across these conventions.

Schema (flat, one row per pronunciation)

json
{
  "word": "casa",
  "region": "pt-PT",
  "ipa_broad": "ˈkaza",
  "ipa_narrow": "ˈkazɐ",
  "x_sampa": "",
  "phones": "",
  "syllables": "ca.sa",
  "pos": "NOUN",
  "wiktionary_url": "",
  "infopedia_url": "https://www.infopedia.pt/dicionarios/lingua-portuguesa/casa"
}
ColumnTypeDescription
wordstringHeadword
regionstringBCP-47 tag
ipa_broadstringNormalized broad phonemic (a, e, r, l)
ipa_narrowstringNormalized narrow phonetic (ɐ, ɨ, ɾ, ʀ, ɫ)
x_sampastringX-SAMPA (wiktionary)
phonesstringPipe-delimited phone sequence (lexicon)
syllablesstringSyllable boundaries (dots from infopedia, pipes from lexicon)
posstringNormalized POS — NOUN, VERB, ADJ, ADV, PRON, NUM, DET, ADP, INTJ, CONJ, SCONJ, ABBR, SUFF, PREF, CONTR, EXPR, SYM; or empty when identical across all POS
wiktionary_urlstringWiktionary page URL
infopedia_urlstringInfopédia page URL

Source is encoded implicitly by the URL columns. Multi-source rows (where the same IPA appears in multiple sources) have both URLs populated.

Broad vs Narrow Normalization

Feature`ipa_narrow``ipa_broad`
Unstressed 'a'ɐa
Unstressed 'e'ɨe
Alveolar tapɾr
Uvular/trill rhoticʀ, ʁr
Velarized 'l'ɫl
Optional segments(removed)(removed)
Syllable markers(removed)(removed)

Region Tag Convention

BCP-47 extended with -x- for sub-regions.

RegionRows
pt-PT111,027
pt-MZ-x-maputo95,526
pt-BR-x-saopaulo91,909
pt-BR-x-riodejaneiro63,796
pt-PT-x-lisboa62,498
pt-TL-x-dili53,228
pt-AO53,225
pt-BR3,573
pt (all dialects identical)941
pt-BR-x-carioca113
pt-BR-x-caipira31
pt-BR-x-paulistano26
pt-BR-x-paulista21
Other4

Usage

python
from datasets import load_dataset

ds = load_dataset("TigreGotico/portuguese-unified-pronunciation-lexicon", split="train")

# European Portuguese nouns from infopedia
pt_nouns = ds.filter(
    lambda r: (r["pos"] == "NOUN")
    & (r["region"] == "pt-PT")
    & (r["infopedia_url"] != "")
)
print(f"pt-PT nouns: {len(pt_nouns)} rows")

# All variants for one word
casa = ds.filter(lambda r: r["word"] == "casa")
for row in casa:
    print(f"  {row['region']:22} {row['pos']:6} {row['ipa_broad']}")

# Brazilian Portuguese verbs from the lexicon (no URL columns populated)
br_verbs = ds.filter(
    lambda r: (r["pos"] == "VERB")
    & (r["region"].str.startswith("pt-BR"))
    & (r["phones"] != "")
)

Related Datasets