The strangest and least strange French words according to n-grams
English version
The (multi)set of (character-level) n-grams of a word consists of its sequences of n consecutive characters. For instance, the 2-grams of "gram" are "gr", "ra", and "am". Duplicates are counted, e.g., for "toto" the 2-grams are "to", "ot", "to". Given the dictionary of all words in a language, we can compute the multiset of all n-grams.
It turns out that this multiset is quite characteristic of the language. For instance, to identify the language of a piece of text, it is often enough to compute its n-grams, normalize it as a frequency distribution, and compare it to the distribution of known languages: usually the closest distribution is that of the language in which the text is written.
Here I explore a related idea: compute the n-grams of a French dictionary obtained from Lexique, and then take each word of the dictionary and compute the average, over its number of n-grams, of the number of times each n-gram was seen in the dictionary. The highest this number, the most common the n-grams of the word.
And indeed, it turns out this approach is quite good at identifying words that look strange or that look common. Let us first prepare a dictionary of French words that are not derived forms, removing those containing strange characters or consisting only of consonants:
cut -f1,14 lexique | sed 1d | grep '1$' | cut -f 1 | uniq | grep -v "['. -]" | grep -v '^[bcdfghjklmnpqrstvwxzç]*$' > words.txt
Now run the script ubac.py (originally written by Armavica). Here are the 100 weirdest words, for n = 1, 2, 3, 4, sorted by ascending score (following the definition above) and breaking ties by alphabetical order:
à fy acmé abbé çà où acné abcès ô éwé adp abyme jà jà bey acmé y çà cañon acné fy dû dey afghan dû aa deçà ailé by là doña aimé gy sûr dyke aixois déjà mûr déçu ajax khôl eh fez alcôve âgé yéyé fox alezan jazzy fût foëne alizé yéyé khôl guzla allô gym oh hâve almée fâché tôt ibm aloès jazz jèze khôl amibe bâché uht kiwi amok éwé by kohl ankh évêché gy lek apax buggy pèze new apex husky ok ovni area pêché rhô oïl arkose fêlé rôt più arum dès dès reçu arôme bombyx kohl rhô asdic là kiwi señor aulx hobby tweed tek awacs hé ça uht axel hâlé oïl wax azulejo bobby dyke wigwam azéri zébu kawa yue aède ès août yéyé aéré haïk têt zeb aïkido jubé ako zob aïoli chômé aïe âgé baht hugh vu éwé baie junky wax zemstvo banjo bé web muon baou bébé ghât noël barzoï jugé ès soja basé puff lès yeah beagle déçu yakuza foehn berk guppy oxo vodka besef bédé zozo abc beuh whisky zizi bof bezef époxy mât bye bief puy jazzy cèpe binz psy kazakh dao birbe fox oka djemââ bizou bouzy ski dès bled ghât bât faf blob ptyx axe grâce bobsleigh qu aïd jeûne bock funky rêvé kawa bodega body ska kif boer dé gym kot boghei zob skaï lez bohême lâché kiki nok bolge dévoyé skunks nèpe boskoop job zeb piu boxon bluff aï puzzle bozo pédégé lynx sikh bref câblé ah zicmu brize flux zoo zip brol wax bye âge brook fût jazz île bufo psyché kaki nikkei buggy bug je bézef bunraku zouk ajax taïga buée hypo yak trèpe bâté box bézef dîme bébé vu yoyo naevus bédé zéphyr ka ptyx béer zélé kayak râpé bénef pédé jojo york bésef décès zef abîme bévue boy jaja bezef bézef mêlé jeep shôgun bôme haïku hugh fax cajun yak junky geez canyon djemââ ptyx glèbe casoar dégât buggy gêné catgut goy funky ils cavum sulky aya lao caïd bât âgé laïus caïman haïkaï ya lès cañon jusqu excès moho ceci phylum lys nez cheap péché oye ouïe chez off râpé ouïr ciao jèze foehn paf ciré hadj psy puy city kazakh rugby puîné clac pépé zébu rez clef décédé bezef saké coati bégum skip soft cobra huppé puy sûr cohue baby yeah web coir humbug bé yin coke
And the 100 least strange, by decreasing score:
e ter ion mention erre enter que ration tee mer mention ossement errer on entement salement ire renter ente vilement terre tenter cent râlement reine inter menteur pâlement rire en lentement bêlement are intenter vent cation terrer tinter dent gisement renier entier lent nation enterrer conter gent entement terrier contenter mentalement mentalement retirer rentier enter cillement te entente mentir rationnement et ente entente virement rare enterrer mental vitement raie entrer mentez parement aire errer menton finement ente rentrer ossement ornement ne rente rationnement durement en lent cillement purement raire tente entablement bêtement terne terrer mentionner vêtement rente content mentor rarement entre anti virement âprement enter ponter dément âcrement retraire linter chiquement sûrement retenter lente sagement mûrement reinette monter enterrement vivement renne inti ciment uniquement tertre mener piment sagement ter sentier connement tique retreinte venter gisement lavement renter ante finement tellement entrer canter uniquement chiquement inerte retenter entassement pavement entier intention salement bellement area menterie menthe rudement enserrer entement jument fadement rentrer contrer ration logement serre rater moment jugement terrine tiser identiquement armement terrien contentement durement gaiement retenir contention purement paiement rentier tirer agent tapement inertie tintin parement mêmement tire lentement dûment sapement rite tentant vilement lapement relire mention vitement gréement relier dentier sentiment payement lierre miserere tellement fixement serrer hanter entichement cassement erreur seriner menterie passement rien interner gentiment bassement rein enterrement cation tassement nier senti entêtement mental trier conte pratiquement mentir tirer serrer bellement connement terri tintement stationnement nettement araire continent nation bonnement retraite pinter contentement mollement entente rentrant cassement follement ternaire entrant râlement oralement irriter sente pâlement avalement tertiaire remonter bêlement également entretien vanter passement nullement entretenir entre entendement stationnement ore attenter bassement étalement oie intimer logement noblement terrestre centrer éventrement mentez tette trente tassement roulement retenue orienter actionnement stablement tare montrer rarement logiquement rate reconter amendement utilement taie alerter entièrement seulement enterreur entourer serment isolement rater der sentimentalement feulement tirette rencontrer mollement amplement tiare renier âprement diablement taire ratier mens parlement verrerie menton bonnement vrillement tente patienter lamentablement ululement traire contenant ornement amusement ratier cantiner logiquement dément trente raconter follement raclement tenter fermenter entre versement teinte cranter alitement drôlement trentenaire merisier tente ciment teinter tin âcrement règlement retentir serin rente frôlement narrer teinter vivement hurlement aine terrier fadement piment arien errant tentation giclement rainer lier comiquement actionnement recette rentamer mûrement bâillement tienne ventiler sûrement menton interner riser lavement baisement interne te tintement tintement resserrer ralenti nullement mentor
Note how for 1-grams the least weird word is "e" consisting of the single most common letter in French; by contrast, for 4-grams, common words are those which contain common 4-letter sequences.
You can download the complete results with the scores, for n = 1 2 3 4. In case you wonder about why the script is called ubac.py: this is just because Armavica and I got started by stumbling on the word "ubac" and wondering how to quantify the fact that it looks weird. Indeed, it is around position 1500 out of around 40k words for n < 4, and it is a unique 4-gram.
Version française
Le (multi)ensemble des n-grammes d'un mot (au niveau des caractères) est formé de ses séquences de n caractères contigus. Par exemple, les 2-grammes de "gramme" sont "gr", "ra", "am", "mm", "me". Les doublons sont comptés : par exemple, pour "toto", les 2-grammes sont "to", "ot" et "to". Étant donné le dictionnaire de tous les mots d'une langue, on peut calculer facilement le multiensemble de tous les n-grammes.
En fait, ce multiensemble est assez caractéristique de la langue. Par exemple, pour identifier la langue dans laquelle un texte est écrit, il suffit généralement de calculer ses n-grammes, normaliser le résultat, et comparer la distribution ainsi obtenue à celle de langues connues : généralement, la distribution la plus proche est celle de la langue dans laquelle le texte est écrit.
Je m'intéresse ici à une idée voisine : calculer les n-grammes pour un dictionnaire de la langue française obtenu à partir de Lexique, puis prendre chaque mot du dictionnaire et calculer la moyenne, sur les n-grammes du mot, du nombre d'occurrences de chaque n-gramme dans le dictionnaire. Plus ce nombre est grand, plus les n-grammes du mot sont répandus.
De fait, cette approche fonctionne plutôt bien pour identifier des mots qui ont l'air bizarres ou qui ont l'air normaux. Préparons tout d'abord un dictionnaire des mots français qui ne sont pas des formes dérivées, en supprimant ceux qui contiennent des caractères bizarres et ceux qui ne contiennent que des consonnes :
cut -f1,14 lexique | sed 1d | grep '1$' | cut -f 1 | uniq | grep -v "['. -]" | grep -v '^[bcdfghjklmnpqrstvwxzç]*$' > words.txt
Passons à présent ce résultat au script ubac.py (dont la version initiale a été écrite par Armavica). Voici les 100 mots les plus bizarres, pour n allant de 1 à 4, triés par score croissant suivant la définition ci-dessus, puis par ordre alphabétique en cas d'égalité :
à fy acmé abbé çà où acné abcès ô éwé adp abyme jà jà bey acmé y çà cañon acné fy dû dey afghan dû aa deçà ailé by là doña aimé gy sûr dyke aixois déjà mûr déçu ajax khôl eh fez alcôve âgé yéyé fox alezan jazzy fût foëne alizé yéyé khôl guzla allô gym oh hâve almée fâché tôt ibm aloès jazz jèze khôl amibe bâché uht kiwi amok éwé by kohl ankh évêché gy lek apax buggy pèze new apex husky ok ovni area pêché rhô oïl arkose fêlé rôt più arum dès dès reçu arôme bombyx kohl rhô asdic là kiwi señor aulx hobby tweed tek awacs hé ça uht axel hâlé oïl wax azulejo bobby dyke wigwam azéri zébu kawa yue aède ès août yéyé aéré haïk têt zeb aïkido jubé ako zob aïoli chômé aïe âgé baht hugh vu éwé baie junky wax zemstvo banjo bé web muon baou bébé ghât noël barzoï jugé ès soja basé puff lès yeah beagle déçu yakuza foehn berk guppy oxo vodka besef bédé zozo abc beuh whisky zizi bof bezef époxy mât bye bief puy jazzy cèpe binz psy kazakh dao birbe fox oka djemââ bizou bouzy ski dès bled ghât bât faf blob ptyx axe grâce bobsleigh qu aïd jeûne bock funky rêvé kawa bodega body ska kif boer dé gym kot boghei zob skaï lez bohême lâché kiki nok bolge dévoyé skunks nèpe boskoop job zeb piu boxon bluff aï puzzle bozo pédégé lynx sikh bref câblé ah zicmu brize flux zoo zip brol wax bye âge brook fût jazz île bufo psyché kaki nikkei buggy bug je bézef bunraku zouk ajax taïga buée hypo yak trèpe bâté box bézef dîme bébé vu yoyo naevus bédé zéphyr ka ptyx béer zélé kayak râpé bénef pédé jojo york bésef décès zef abîme bévue boy jaja bezef bézef mêlé jeep shôgun bôme haïku hugh fax cajun yak junky geez canyon djemââ ptyx glèbe casoar dégât buggy gêné catgut goy funky ils cavum sulky aya lao caïd bât âgé laïus caïman haïkaï ya lès cañon jusqu excès moho ceci phylum lys nez cheap péché oye ouïe chez off râpé ouïr ciao jèze foehn paf ciré hadj psy puy city kazakh rugby puîné clac pépé zébu rez clef décédé bezef saké coati bégum skip soft cobra huppé puy sûr cohue baby yeah web coir humbug bé yin coke
Voici les 100 mots les moins étranges, par score décroissant :
e ter ion mention erre enter que ration tee mer mention ossement errer on entement salement ire renter ente vilement terre tenter cent râlement reine inter menteur pâlement rire en lentement bêlement are intenter vent cation terrer tinter dent gisement renier entier lent nation enterrer conter gent entement terrier contenter mentalement mentalement retirer rentier enter cillement te entente mentir rationnement et ente entente virement rare enterrer mental vitement raie entrer mentez parement aire errer menton finement ente rentrer ossement ornement ne rente rationnement durement en lent cillement purement raire tente entablement bêtement terne terrer mentionner vêtement rente content mentor rarement entre anti virement âprement enter ponter dément âcrement retraire linter chiquement sûrement retenter lente sagement mûrement reinette monter enterrement vivement renne inti ciment uniquement tertre mener piment sagement ter sentier connement tique retreinte venter gisement lavement renter ante finement tellement entrer canter uniquement chiquement inerte retenter entassement pavement entier intention salement bellement area menterie menthe rudement enserrer entement jument fadement rentrer contrer ration logement serre rater moment jugement terrine tiser identiquement armement terrien contentement durement gaiement retenir contention purement paiement rentier tirer agent tapement inertie tintin parement mêmement tire lentement dûment sapement rite tentant vilement lapement relire mention vitement gréement relier dentier sentiment payement lierre miserere tellement fixement serrer hanter entichement cassement erreur seriner menterie passement rien interner gentiment bassement rein enterrement cation tassement nier senti entêtement mental trier conte pratiquement mentir tirer serrer bellement connement terri tintement stationnement nettement araire continent nation bonnement retraite pinter contentement mollement entente rentrant cassement follement ternaire entrant râlement oralement irriter sente pâlement avalement tertiaire remonter bêlement également entretien vanter passement nullement entretenir entre entendement stationnement ore attenter bassement étalement oie intimer logement noblement terrestre centrer éventrement mentez tette trente tassement roulement retenue orienter actionnement stablement tare montrer rarement logiquement rate reconter amendement utilement taie alerter entièrement seulement enterreur entourer serment isolement rater der sentimentalement feulement tirette rencontrer mollement amplement tiare renier âprement diablement taire ratier mens parlement verrerie menton bonnement vrillement tente patienter lamentablement ululement traire contenant ornement amusement ratier cantiner logiquement dément trente raconter follement raclement tenter fermenter entre versement teinte cranter alitement drôlement trentenaire merisier tente ciment teinter tin âcrement règlement retentir serin rente frôlement narrer teinter vivement hurlement aine terrier fadement piment arien errant tentation giclement rainer lier comiquement actionnement recette rentamer mûrement bâillement tienne ventiler sûrement menton interner riser lavement baisement interne te tintement tintement resserrer ralenti nullement mentor
Remarquez comme le mot le moins étrange en termes de 1-grammes est "e", qui consiste de la seule lettre "e" qui est la plus courante en français. Pour les 4-grammes, en revanche, les mots les moins étranges sont ceux qui se composent de séquences de 4 caractères qui sont fréquentes.
Vous pouvez télécharger les résultats complets avec le score, pour n valant 1 2 3 4. Pour l'anecdote, le script s'appelle ubac.py pour la raison suivante : Armavica et moi étions tombés sur le mot "ubac" et nous demandions comment quantifier le fait qu'il a l'air bizarre. De fait, le mot se classe vers la position 1500 (sur 40000 mots environ) pour n < 4, et c'est un 4-gramme unique.