Tri-grammen kunnen voor verschillende doeleinden worden gebruikt. Al eerder schreef ik over het gebruiken van Trigrammen bij het ontdubbelen van een relatiebestand. Tri-grammen kunnen ook worden gebruikt bij het bepalen van de taal van een stuk tekst.

Hieronder geef ik een voorbeeld hoe dit te doen.
 

Bepalen identificerende trigrammen per taal
Allereerst moeten de Trigrammen worden bepaald die het meest identificerend zijn voor een bepaalde taal. Ik heb dat in onderstaand voorbeeld gedaan door een aantal webpagina’s als basis te nemen waarvan ik de taal uiteraard weet.

Bepalen nederlandstalige basisset
Ik heb de tekst van een vijftal nederlandstalige webpagina’s in trigrammen opgedeeld (top 14). Hieruit kwamen de volgende sets met trigrammen + aantallen:

en  121 en  60 en  77 en  78 en  74
de  110 de  35 de  76 de  42 de  69
er  43 et  24 gen  25 he  27 in  36
et  32 n d  19 in  25 et  26 te  30
an  31 he  19 n d  24 ik  25 ge  23
op  30 is  19 te  23 in  23 er  21
he  29 an  16 an  20 an  22 is  20
in  28 er  16 va  16 da  21 n d  18
n d  27 der  15 ge  16 er  21 ers  17
een  26 at  15 van  14 een  21 ite  16
ee  24 een  15 cht  14 al  20 op  15
ge  24 het  14 een  14 ee  20 e i  15
het  23 da  14 et  14 aar  18 nte  14
ns  22 ond  13 ten  13 at  17 sit  14

 

Bepalen engelstalige basisset
Ik heb ook de tekst van een drietal engelstalige webpagina’s in trigrammen opgedeeld (top 14). Hieruit kwamen de volgende sets met trigrammen + aantallen:

he  22 th  81 he  52
th  18 he  57 th  32
to  18 the  51 in  23
in  18 to  45 sa  22
ion  14 of  38 er  20
on  13 re  38 of  19
an  12 ed  36 an  19
be  11 i  34 the  19
al  11 in  33 as  18
the  11 an  32 sh  17
re  10 nd  29 to  16
co  9 as  28 she  16
la  9 on  28 ng  15
se  9 and  28 i  15

 

Bepalen franstalige basisset
Ik heb tot slot de tekst van een viertal franstalige webpagina’s in trigrammen opgedeeld (top 14). Hieruit kwamen de volgende sets met trigrammen + aantallen:

de  53 de  136 de  89 de  239
es  42 le  93 le  72 es  223
le  39 es  91 es  66 la  205
re  26 la  67 la  49 le  166
la  25 on  44 et  33 et  158
et  20 re  44 nt  31 e l  85
ire  18 nt  43 ent  27 en  79
ion  17 et  41 e l  26 ce  74
e d  16 e l  40 s d  24 e d  73
ron  15 ion  39 en  23 re  72
e l  15 un  36 te  23 ran  72
les  15 s d  35 ce  22 du  71
que  14 e d  35 re  22 fr  67
ier  14 ce  33 ur  22 e e  66

 

Vervolgens heb ik per taal de overeenkomstige trigrammen in de bovenstaande voorbeelden gezocht. Dit zijn:

Resultaat basissets
Nederlandstalig: EN, DE, ER, ET, AN, IN, N_D, EEN
Engelstalig: HE, TH, TO, IN, AN, THE
Franstalig: DE, LE, ES, LA, RE, ET, E_L

In het rood heb ik de trigrammen aangegeven die in meerdere talen voorkomen en dus minder identificerend zijn.


Toepassen basissets
Nu we de basissets hebben bepaald kunnen we ‘onbekende’ teksten tegen deze basissets houden.

Voorbeeld 1
Ik heb de inhoud van deze ‘onbekende’ pagina geanaliseerd en tegen de basissets met trigrammen gehouden. De uitkomst is als volgt:

  NL EN FR
en  837 X    
de  529 X   X
et  203 X   X
we  202      
er  198 X    
an  197 X X  
he  187   X  
n d  181 X    
je  162      
in  161 X X  
aar  158      
een  157 X    
ee  147      
te  144      

 

De gehele basisset van nederlandstalige trigrammen wordt teruggevonden in de top 14. Maar enkele trigrammen uit de franstalige en engelstalige basisset. Deze tekst is op basis van deze analyse dus nederlandstalig.

Voorbeeld 2
Ik heb de inhoud van deze ‘onbekende’ pagina geanaliseerd en tegen de basissets met trigrammen gehouden. De uitkomst is als volgt:

  NL EN FR
de  290 X   X
le  185     X
es  174     X
la  114     X
et  108 X   X
re  96     X
en  95 X    
ce  86      
ent  84      
e d  81      
ion  79      
ne  78      
nt  78      
se  72      

 

6  van de 7 trigrammen uit de basisset van franstalige trigrammen worden teruggevonden in de top 14. Maar enkele trigrammen uit de nederlandstalige basisset en geen enkele uit de engelstalige basisset. Deze tekst is op basis van deze analyse dus franstalig.

Voorbeeld 3
Ik heb de inhoud van deze ‘onbekende’ pagina geanaliseerd en tegen de basissets met trigrammen gehouden. De uitkomst is als volgt:

  NL EN FR
th  101   X  
the  56   X  
he  56   X  
is  52      
to  46   X  
an  41 X X  
and  40      
in  40 X X  
nd  32      
on  32      
al  30      
st  29      
ed  28      
re  27     X

 

Alle trigrammen uit de basisset van engelstalige trigrammen worden teruggevonden in de top 14. Slechts twee trigrammen uit de nederlandstalige basisset en een enkele uit de franstalige basisset wordt teruggevonden. Deze tekst is op basis van deze analyse dus engelstalig.

Toepassing
Er zijn veel redenen te bedenken waarom taalherkenning belangrijk is. Ik zelf gebruik dit algorithme bijvoorbeeld om de bezoekers op enkele van mijn websites naar de juiste content te leiden, maar ook om de zoekmachines (Google, Bing) te tippen over de gebruikte hoofdtaal op een webpagina. Hierbij hoop ik natuurlijk op een hogere ranking in de zoekmachines (SEO)

Conclusie
Op vrij eenvoudige wijze is de taal van een stuk tekst te achterhalen door een trigrammen analyse te doen. Wel zijn er vele mitsen en maaren. Hier volgen er een paar:
- Naarmate de hoeveelheid te analyseren tekst toeneemt neemt de kans op fouten in de analyse af.
- De nauwkeurigheid van de basisset voor een taal wordt voor een groot deel bepaald door de hoeveelheid tekst die wordt gebruikt bij het bepalen van de basisset
- Narmate het aantal te ondersteunen talen toeneemt, neemt de hoeveelheid identificerende trigrammen af.