Taal van een tekst bepalen m.b.v. trigrammen
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.

mei 11th, 2011 at %H:%M
Bedankt voor de interessante informatie