Nous poursuivons avec un second algorithme utilisé en traitement automatique du langage naturel qui est un domaine à la frontière entre linguistique et informatique. En effet, les ordinateurs sont aujourd'hui capables d'identifier dans un grand corpus de textes, ceux dont le sujet porte sur un thème précis (on parle aussi de catégorie ou de classe). Il peut s'agir de classer des nouvelles dans des genres pour pouvoir les classer sur un site Web. Il peut s'agir de diriger automatiquement des mails de réclamation vers le bon service pour une entreprise. Il peut s'agir d'attribuer des textes à des auteurs, ce qui est une question considérée en stylistique. Il est intéressant de noter que, si on dispose de corpus de textes de différents auteurs, on peut écrire un programme qui apprenne à classer les textes et qu'un tel programme a des résultats étonnamment bons (du niveau d'un expert humain) même si, comme nous allons le voir, il ne fait pas une étude de style mais se base simplement sur des fréquences d'apparition de mots.
Explorons les idées permettant à un algorithme de classer des textes en considérant la question de trouver les textes parlant de politique. Une méthode naïve, voire idiote, est de dire qu'un texte est dans le thème "politique" si et seulement si le mot politique s'y trouve. On pourrait écrire un algorithme comme
1. **en entrée** : une suite de mots
2. lire le premier mot et le mémoriser comme mot courant
3. **tant que** ce n'est pas la fin du texte
4. **si** le mot courant est "politique" **alors**
6. mémoriser que j'ai vu le mot politique
7. **fin du si**
8. lire le mot suivant et le mémoriser comme mot courant
9. **fin du tant que**
10. **en sortie** : le texte est politique si j'ai mémorisé que j'ai vu
le mot politique
Cet algorithme naïf n'est pas satisfaisant car un texte peut être considéré comme politique sans contenir le mot politique et un texte contenant le mot politique ne parle pas forcément de politique ! On peut l'améliorer en constituant un dictionnaire des mots parlant de politique (droite, gauche, parlement, assemblée, ...) et s'inspirer de l'algorithme réalisant la correction orthographique. On peut poursuivre cette idée en constatant que la décision de l'appartenance à ce thème politique peut dépendre aussi bien de la présence que de l'absence de certains mots, ou mieux encore de combien de fois chaque mot est employé. Nous avons l'idée de base qui est que l'appartenance d'un texte à un thème va dépendre de la fréquence d'apparition de certains mots .
C'est cette idée qui est souvent employée. Pour cela, un dictionnaire ayant été choisi, on va représenter un texte par le nombre de fois où chaque mot du dictionnaire apparaît dans le texte. Au vu des algorithmes décrits dans ce module, vous êtes capables de comprendre qu'il est possible d'écrire un algorithme qui, avec un texte et un dictionnaire, construit une telle représentation. À partir de cette représentation, il faut trouver des seuils en dessous ou au delà desquels on dira que le texte parle d'un thème précis. Par exemple, un texte parle de politique si le mot politique apparaît au moins une fois, le mot gauche au moins deux fois, le mot droite au moins deux fois et le mot chat n'apparaît pas. Mais, comment trouver ces seuils ?
C'est ici qu'interviennent des développements récents autour de l'apprentissage artificiel ("Machine Learning") amplifiés par le phénomène des masses de données ("Big Data"). En effet, on dispose désormais de grands corpus de textes. Les textes peuvent être annotés par des experts comme parlant d'un thème. Avec ces corpus de textes, on peut représenter chacun d'eux par les fréquences des mots. On peut alors écrire un programme qui apprenne quels sont les seuils pour chacun des thèmes et, avec ces seuils, on peut maintenant classer un nouveau texte dans un thème. Les détails d'un tel algorithme d'apprentissage (ou de fouille de textes) sortent du contenu de ce cours. Nous espérons cependant vous avoir fait comprendre comment une machine pouvait classer des textes avec des résultats souvent comparables à celles d'un expert humain.