Bonjour !
Cela doit bien faire plusieurs mois que je n’ai pas proposé de solutions overkill au problèmes techniques du site posté ici, cela me manquait ! Mais ça m’a entre-autre, aussi permis de développer ce que je vais vous présenter aujourd’hui.
Il se trouve que je m’amuse beaucoup avec les chaînes de Markov, ou encore à m’essayer aux compétitions Kaggle (sans aucune prétention de victoire). Traiter le texte est vraiment intéressant et je pense plus "alchimique" que d’autres formats. C’est donc dans cette optique que j’ai créé Kadot !
L’objectif de cette librairie est d’implémenter simplement tout ce qu’on serait susceptible d’avoir besoin dans un projet en rapport avec le traitement du langage naturel. Mais contrairement à de nombreuses librairies du genre, je ne souhaite pas "hardcoder" les règles de grammaire du langage, Kadot fonctionne donc avec la plupart des langages (j’ai un doute pour les langues telles que le chinois).
Voici quelques exemples tirés du GitHub :
1 2 3 4 5 6 7 8 9 | >>> from kadot import Text >>> example_text = Text("This is an example text !") >>> example_text.words ['This', 'is', 'an', 'example', 'text'] >>> example_text.ngrams(n=2) [('This', 'is'), ('is', 'an'), ('an', 'example'), ('example', 'text')] |
Ou encore un algorithme de vectorisation des mots, qui "comprend" leurs relations :
1 2 3 4 5 6 7 | >>> large_corpus = """Enter a large text, in preference about history.""" >>> history_book = Text(large_corpus) >>> vectors = history_book.vectorize(window=20, reduce_rate=300) >>> vectors.apply_vector(vectors['man'], vectors['woman'], vectors['king'], best=1) # 'man' is to 'woman' what 'king' is to... [('queen', 0.86899999)] |
Je travaille aussi sur d’autres fonctionnalités comme la classification de texte ou l’extraction de mots clés.
Je m’excuse de cette présentation un peu décousue, je vous laisse juste quelque liens si ça vous intéresse.
Il est possible qu’il y est des erreurs d’anglais, n’hésitez pas à me les signaler.