<jupyter_start><jupyter_text><jupyter_code>!apt-get install -y libenchant1c2a
!apt-get install -y aspell 
!apt-get install -y hunspell
# !apt search aspell-
# !apt-get install -y aspell-dictionary
!apt-get install -y aspell-uz
!apt-get install -y aspell-uk 
!apt-get install -y aspell-tl 
!apt-get install -y aspell-sv
!apt-get install -y aspell-sl 
!apt-get install -y aspell-sk 
!apt-get install -y aspell-ru 
!apt-get install -y aspell-ro 
!apt-get install -y aspell-pt-pt 
!apt-get install -y aspell-pt-br
!apt-get install -y aspell-pl
!apt-get install -y aspell-nl 
!apt-get install -y aspell-lv
!apt-get install -y aspell-lt
!apt-get install -y aspell-ku
!apt-get install -y aspell-kk
!apt-get install -y aspell-it
!apt-get install -y aspell-is 
!apt-get install -y aspell-id 
!apt-get install -y aspell-hy 
!apt-get install -y aspell-hu 
!apt-get install -y aspell-hsb 
!apt-get install -y aspell-hr 
!apt-get install -y aspell-he 
!apt-get install -y aspell-gl-minimos
!apt-get install -y aspell-ga 
!apt-get install -y aspell-fr 
!apt-get install -y aspell-fo 
!apt-get install -y aspell-fa 
!apt-get install -y aspell-eu 
!apt-get install -y aspell-et 
!apt-get install -y aspell-es 
!apt-get install -y aspell-eo-cx7 
!apt-get install -y aspell-eo 
!apt-get install -y aspell-el 
!apt-get install -y aspell-de-1901 
!apt-get install -y aspell-de 
!apt-get install -y aspell-da 
!apt-get install -y aspell-cy 
!apt-get install -y aspell-cs 
!apt-get install -y aspell-ca 
!apt-get install -y aspell-br 
!apt-get install -y aspell-bg 
!apt-get install -y aspell-ar-large 
!apt-get install -y aspell-ar 
!apt-get install -y aspell-am 
!apt-get install -y aspell-en 
# !apt-get install -y hunspell-dictionary
!apt-get install -y myspell-tl  
!apt-get install -y myspell-fr 
!apt-get install -y myspell-es 
!apt-get install -y hunspell-fr-revised 
!apt-get install -y hunspell-fr-modern 
!apt-get install -y hunspell-fr-comprehensive 
!apt-get install -y myspell-fo 
!apt-get install -y myspell-et 
!apt-get install -y myspell-eo 
!apt-get install -y hunspell-vi 
!apt-get install -y hunspell-uz 
!apt-get install -y hunspell-uk 
!apt-get install -y hunspell-tr 
!apt-get install -y hunspell-th 
!apt-get install -y hunspell-te 
!apt-get install -y hunspell-sw 
!apt-get install -y hunspell-sv 
!apt-get install -y hunspell-sr 
!apt-get install -y hunspell-sl 
!apt-get install -y hunspell-sk 
!apt-get install -y hunspell-si 
!apt-get install -y hunspell-se 
!apt-get install -y hunspell-ru 
!apt-get install -y hunspell-ro 
!apt-get install -y hunspell-pt-pt 
!apt-get install -y hunspell-pt-br 
!apt-get install -y hunspell-pl 
!apt-get install -y hunspell-oc 
!apt-get install -y hunspell-no 
!apt-get install -y hunspell-nl 
!apt-get install -y hunspell-ne 
!apt-get install -y hunspell-lv 
!apt-get install -y hunspell-lt 
!apt-get install -y hunspell-lo 
!apt-get install -y hunspell-ko 
!apt-get install -y hunspell-kmr 
!apt-get install -y hunspell-kk 
!apt-get install -y hunspell-it 
!apt-get install -y hunspell-is 
!apt-get install -y hunspell-id 
!apt-get install -y hunspell-hu 
!apt-get install -y hunspell-hr 
!apt-get install -y hunspell-hi 
!apt-get install -y hunspell-he 
!apt-get install -y hunspell-gug 
!apt-get install -y hunspell-gu 
!apt-get install -y hunspell-gl 
!apt-get install -y hunspell-gd 
!apt-get install -y hunspell-fr-classical 
!apt-get install -y hunspell-eu 
!apt-get install -y hunspell-es 
!apt-get install -y hunspell-en-za 
!apt-get install -y hunspell-en-us 
!apt-get install -y hunspell-en-gb 
!apt-get install -y hunspell-en-ca 
!apt-get install -y hunspell-en-au 
!apt-get install -y hunspell-el 
!apt-get install -y hunspell-dz 
!apt-get install -y hunspell-de-de-frami 
!apt-get install -y hunspell-de-de 
!apt-get install -y hunspell-de-ch-frami 
!apt-get install -y hunspell-de-ch 
!apt-get install -y hunspell-de-at-frami 
!apt-get install -y hunspell-de-at 
!apt-get install -y hunspell-da 
!apt-get install -y hunspell-cs 
!apt-get install -y hunspell-ca 
!apt-get install -y hunspell-bs 
!apt-get install -y hunspell-br 
!apt-get install -y hunspell-bo 
!apt-get install -y hunspell-bn 
!apt-get install -y hunspell-bg 
!apt-get install -y hunspell-be 
!apt-get install -y hunspell-ar 
!apt-get install -y hunspell-an 
!apt-get install -y hunspell-af 
!pip install autocorrect
!pip install pyspellchecker
!pip install pyenchant
!apt-get install swig3.0
!pip install jamspell<jupyter_output>Suggested packages:
  swig3.0-examples swig3.0-doc
The following NEW packages will be installed:
  swig3.0
0 upgraded, 1 newly installed, 0 to remove and 42 not upgraded.
Need to get 1109 kB of archives.
After this operation, 5555 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 swig3.0 amd64 3.0.12-2.2ubuntu1 [1109 kB]
Fetched 1109 kB in 0s (5229 kB/s)
Selecting previously unselected package swig3.0.
(Reading database ... 104850 files and directories currently installed.)
Preparing to unpack .../swig3.0_3.0.12-2.2ubuntu1_amd64.deb ...
Unpacking swig3.0 (3.0.12-2.2ubuntu1) ...
Setting up swig3.0 (3.0.12-2.2ubuntu1) ...
Processing triggers for man-db (2.9.1-1) ...
Collecting jamspell
  Downloading jamspell-0.0.12.tar.gz (174 kB)
     |████████████████████████████████| 174 kB 536 kB/s            
[?25h  Preparing metadata (setup.py) ... [?25l- done
[?25hBuilding wheels for collected packages: jamspell
  B[...]<jupyter_text>**Langues ou dictionnaires disponibles**<jupyter_code>X = ['autocorrect', 'pyspellchecker', 'textblob', 'enchant']
langs = []<jupyter_output><empty_output><jupyter_text>**Autocorrect**<jupyter_code>import autocorrect
print(autocorrect.constants.alphabets)
langs.append(len(autocorrect.constants.alphabets))<jupyter_output>{'en': 'abcdefghijklmnopqrstuvwxyz', 'pl': 'abcdefghijklmnopqrstuvwxyzęóąśłżźćń', 'ru': 'шиюынжсяплзухтвкйеобмцьёгдщэарчфъ', 'uk': 'фагксщроємшплуьцнжхїйювязтибґідеч', 'tr': 'abcçdefgğhıijklmnoöprsştuüvyzqwxÇĞİÜÖ', 'es': 'abcdefghijklmnopqrstuvwxyzáéíóúüñ', 'pt': 'abcdefghijklmnopqrstuvwxyzãáàâçéêíõóôúü', 'cs': 'aábcčdďeéěfgh(ch)iíjklmnňoópqrřsštťuúůvwxyýzž', 'el': 'αβγδεζηθικλμνξοπρςτυφχψωίϊΐόάέύϋΰήώ', 'it': 'abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü', 'fr': 'abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü', 'vi': 'aàảãáạăằẳẵắặâầẩẫấậbcdđeèẻẽéẹêềểễếệfghiìỉĩíịjklmnoòỏõóọôồổỗốộơờởỡớợpqrstuùủũúụưừửữứựvwxyỳỷỹýỵz'}<jupyter_text>**PySpellchecker**<jupyter_code>import spellchecker
print(spellchecker.SpellChecker().languages())
langs.append(len(spellchecker.SpellChecker().languages()))<jupyter_output>['de', 'en', 'es', 'fr', 'pt', 'ru']<jupyter_text>**TextBlob**<jupyter_code>langs.append(1)<jupyter_output><empty_output><jupyter_text>**PyEnchant**<jupyter_code>import enchant
print(enchant.list_languages())
print(enchant.list_dicts())
langs.append(len(enchant.list_languages()))<jupyter_output>['am', 'ar', 'bg', 'br', 'ca', 'cs', 'cy', 'da', 'de', 'de_AT', 'de_CH', 'de_DE', 'el', 'en', 'en_AU', 'en_CA', 'en_GB', 'en_US', 'eo', 'es', 'et', 'eu', 'fa', 'fo', 'fr', 'fr_CH', 'fr_FR', 'ga', 'gl', 'he', 'hr', 'hsb', 'hu', 'hy', 'id', 'is', 'it', 'kk', 'ku', 'lt', 'lv', 'nl', 'pl', 'pt_BR', 'pt_PT', 'ro', 'ru', 'sk', 'sk_SK', 'sl', 'sv', 'tl', 'tl_PH', 'uk', 'uz', 'kk_KZ', 'fr_MC', 'fr_BE', 'fr_CA', 'ko_KR', 'fr_LU', 'ko', 'ckb_IQ', 'he_IL', 'es_ES', 'pl_PL', 'sw_KE', 'ar_MA', 'cs_CZ', 'ar_EG', 'bo', 'eo_XX', 'nl_SR', 'ar_OM', 'es_DO', 'es_SV', 'gl_ES', 'ru_RU', 'et_EE', 'be_BY', 'en_ZA', 'ne_NP', 'ca_ES', 'ar_IQ', 'hu_HU', 'eu_FR', 'es_NI', 'es_CR', 'uk_UA', 'sv_FI', 'ku_TR', 'ar_YE', 'nl_AN', 'nn_NO', 'se', 'es_PE', 'sr_RS', 'ar_KW', 'gu_IN', 'nl_BE', 'it_CH', 'de_LI', 'eu_ES', 'gug_PY', 'gd_GB', 'ar_BH', 'es_GT', 'bg_BG', 'sr_Latn_RS', 'se_FI', 'br_FR', 'nl_NL', 'af_ZA', 'bn_IN', 'lv_LV', 'es_CL', 'es_PR', 'ar_SD', 'es_CU', 'dz_BT', 'bn_BD', 'is_IS', 'es_PY', 'dz', 'uz_UZ', 'fo_[...]<jupyter_text>**Visualisation**<jupyter_code>import matplotlib.pyplot as plt
import pandas as pd
plt.style.use('fivethirtyeight')
fig = plt.figure(figsize = (15, 8))

model_comparison = pd.DataFrame({'model': X,'langs': langs})
model_comparison.sort_values('langs', ascending = False).plot(x = 'model', y = 'langs', kind = 'barh', color = 'orange', edgecolor = 'black')

plt.ylabel('')
plt.yticks(size = 10)
plt.xlabel('Langs')
plt.xticks(size = 10)
plt.title('Comparaison des solutions sur le nombre de dictionnaires utilisés', size=20)<jupyter_output><empty_output><jupyter_text>**Qualité de la correction**<jupyter_code>X = ['normal', 'autocorrect', 'pyspellchecker', 'textblob', 'enchant']
errors = []
!apt-get install tesseract-ocr
!apt-get install -y tesseract-ocr-all
import pytesseract
from PIL import Image
import re
texte = pytesseract.image_to_string(Image.open('../input/texte-numrique/largepreview.png'), lang = 'fra')
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",texte)
text = (" ".join(str))
    
print(text)
from spellchecker import SpellChecker
spell = SpellChecker('fr')
misspelled = spell.unknown(str)
print(misspelled)
print(len(misspelled))
errors.append(len(misspelled))<jupyter_output>{'puis,', 'ngueneau,', 'nement', 'sémantique,', 'interfaces,', 'renouv', 'hypertexte', 'lement,', 'numérique,', 'premi', 'montréal,', 'pisodique', 'hypermédia', 'portables,', 'gréco', 'tablettes,', 'al,', 'typologies', 'muflittératies,', 'littératie', 'scholars', 'ainsi,', 'smedt,', 'vandendorpe,', 'éisodique', 'diférentes', 'texte,', 'intelligents,', 'fois,', 'juxtaposent', 'québec', 'collaboratif', 'parall', 'kalantzis', 'hicks,', 'penloup,', 'rement', 'logiciels,', 'êre', 'hayles,', 'askehave,', 'bonhomme,', 'particuli', 'linéarité', 'juxtapositions', 'savoirs,', 'abletés', 'hyperliens', 'lebrun', 'anasse', 'boutin,', 'typologie', 'multimodale', 'pleau,', 'entremêlent,', 'apprenants', 'instrumentale,', 'informatif,', 'gervais', 'plateformes,', 'fastrez', 'miller,', 'lebrun,', 'prine', 'phénom', 'textuel', 'applications,', 'occasionnées', 'sémiotiques', 'épisodique', 'joannie', 'ruptures,', 'a,', 'cependant,', 'gonçalves,', 'év', 'cope,', 'argumentatif', 'digtal', 'chercheures', 'ada[...]<jupyter_text>**Autocorrect**<jupyter_code>from autocorrect import Speller
import autocorrect
import re
from spellchecker import SpellChecker
spell = Speller('fr')
correct = ""
for word in text.split():
    add = spell.autocorrect_sentence(word)
    correct = correct + add + ' '
    
print(correct)
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",correct)

spell = SpellChecker('fr')
misspelled = spell.unknown(str)
print(misspelled)
print(len(misspelled))
import re
from spellchecker import SpellChecker
spell = Speller('fr')
correct1 = ""

for line in text.splitlines():
    add = spell.autocorrect_sentence(line)
    correct1 = correct1 + add + ' '
    
print(correct1)
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",correct1)

spell = SpellChecker('fr')
misspelled = spell.unknown(str)
print(misspelled)
print(len(misspelled))
spell = Speller('fr')
correct2 = ""

for line in correct1.splitlines():
    add = spell.autocorrect_sentence(line)
    correct2 = correct2 + add + ' '
    
print(correct2)
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",correct2)

spell = SpellChecker('fr')
misspelled = spell.unknown(str)
print(misspelled)
print(len(misspelled))
errors.append(len(misspelled))<jupyter_output>Canadian Journal for New Scholars in Education Volume , Issue Revue canadienne des jeunes chercheurs et chercheurs en éducation prise Printemps Le texte à l re du numérique Analyse du concept de genre numérique <NAME>, Université du Québec à Montréal, Canada Résumé l re du numérique, la lecture et l écriture se transforment tant à l école qu en dehors de celle ci <NAME>, Lebrun, <NAME>, Penloup, Or, l apparition d interfaces d édition comme Wikipédia renouv e la notion de genre textuel ex hypertexte informatif Hicks , Cela exige du lecteur une connaissance des caractéristiques des genres traditionnel à laquelle s ajoute une maitrise d achetés de navigation et de lecture non linéaire <NAME>, Gonçalves, Vandendorpe, et multimodale Lebrun et al, Le genre numérique digital genre , lin d être une simple traduction numérique des genres traditionnels es un concept d importance dans le développement d une didactique des muflittératies, Considérant la diversité des[...]<jupyter_text>**PySpellChecker**<jupyter_code>from spellchecker import SpellChecker
import re
spell = SpellChecker(language='fr', distance=1)
correct1 = ""

for word in text.split():
    add = spell.correction(word)
    correct1 = correct1 + add + ' '
    
print(correct1)
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",correct1)

spell = SpellChecker('fr')
misspelled = spell.unknown(str)
print(misspelled)
print(len(misspelled))
errors.append(len(misspelled))
spell = SpellChecker(language='fr', distance=2)
correct1 = ""

for word in text.split():
    add = spell.correction(word)
    correct1 = correct1 + add + ' '
    
print(correct1)
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",correct1)

spell = SpellChecker('fr')
misspelled = spell.unknown(str)
print(misspelled)
print(len(misspelled))<jupyter_output>Canadian Journal for New schlass in Education Volume , Issue Revue canadienne des jeunes chercheurs et chercheurs en éducation peine Printemps Le texte à l re du numérique Analyse du concept de genre numérique jeannie peau Université du Québec à montréal Canada Résumé l re du numérique la lecture et l écriture se transforment tant à l école qu en dehors de celle ci Kalantzis cope Lebrun, nacelle bouton Penloup, or l apparition d interfaces d édition comme Wikipédia renoué e la notion de genre sexuel ex hypertexte informatif Hicks , Cela exige du lecteur une connaissance des caractéristiques des genres traditionnel à laquelle s ajoute une maitrise d saletés de navigation et de lecture non linéaire servais Saemmers, Gonçalves, Vandendorpe, et multimodale brun et all Le genre numérique digital genre , lin d être une simple traduction numérique des genres traditionnels es un concept d importance dans le développement d une didactique des muflittératies, Considérant la diversité des points [...]<jupyter_text>**TextBlob**<jupyter_code>from spellchecker import SpellChecker
import re
!pip install -U textblob-fr
from textblob import TextBlob
spell = TextBlob(text)
correct = spell.correct().string
print(correct)
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",correct)

spell = SpellChecker('fr')
misspelled = spell.unknown(str)
print(misspelled)
print(len(misspelled))
errors.append(len(misspelled))<jupyter_output>Canadian Journal for New Scholars in Education Volume , Issue Eve canadienne des jeune chercheures et chercheurs en education prince Printemps He text à l re du numérique Analyse du concept de gene numérique <NAME>, University du Quebec à Montreal, Canada Résumé l re du numérique, la lecture et l scripture se transformed want à l come qu en doors de cells i <NAME>, Lebrun, <NAME>, Penloup, Or, l apparition d interface d edition comme Wikipédia venous e la notion de gene textile ex hypertext information Licks , Cela exile du letter une reconnaissance des caractéristiques des genius traditional à quelle s about une maitresse d tablets de navigation et de lecture non linéaire <NAME>, Gonçalves, Vandendorpe, et multimodale Lebrun et al, He gene numérique distal gene , in d etre une simple production numérique des genius traditionnels es un concept d importance dans le développement d une didactique des muflittératies, Considérant la diversity des points de [...]<jupyter_text>**Enchant**<jupyter_code>import enchant
from spellchecker import SpellChecker
import re
spell = enchant.Dict('fr')
correct1 = ''
for word in text.split():
    add = spell.suggest(word)
    if len(add)!=0 :
        correct1 = correct1 + add[0] + ' '
    else :
        correct1 = correct1 + word + ' '

print(correct1)
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",correct1)

spell = SpellChecker('fr')
misspelled = spell.unknown(str)
print(misspelled)
print(len(misspelled))
errors.append(len(misspelled))<jupyter_output>Canadien Journal for New Schofars in Éducation Volume e Issue Revue canadienne des jeunes chercheurs eth chercheurs en éducations peine Printemps Le texte a k ré du numérique Analyse du concept de genre numérique <NAME>au Université du Québec a Montréal Canada Résume k ré du numérique l’a lecture eth k écriture se transforment tant a k école c en dehors de quelle qui Galantins Copeau Lebrun Nacelle Inabouti Entourloupe Or k apparition s interfaces s édition comme Wikipédia renoue z l’a notion de genre textuel ex hypertexte informatif Kicks e Cela exige du lecteur une connaissance des caractéristiques des genres traditionnel a laquelle q ajoute une maîtrise s ablatés de navigation eth de lecture non linéaire Servais Sage-femme Provençale Endorphine eth multimodale Lebrun eth al Le genre numérique digital genre e lin s être une simple traduction numérique des genres traditionnels es un concept s importance d’ans le développement s une didactique des multilatéralisme Considérant l’a[...]<jupyter_text>**Visualisation**<jupyter_code>import matplotlib.pyplot as plt
import pandas as pd
plt.style.use('fivethirtyeight')
fig = plt.figure(figsize = (15, 8))

model_comparison = pd.DataFrame({'model': X,'errors': errors})
model_comparison.sort_values('errors', ascending = True).plot(x = 'model', y = 'errors', kind = 'barh', color = 'yellow', edgecolor = 'black')

plt.ylabel('')
plt.yticks(size = 10)
plt.xlabel('Errors')
plt.xticks(size = 10)
plt.title('Comparaison des solutions sur le nombre de fautes restantes', size=20)<jupyter_output><empty_output><jupyter_text>**Temps d'éxécution, RAM, CPU**<jupyter_code>X = ['autocorrect', 'pyspellchecker', 'textblob', 'enchant']
times = []
cpu = []
memory = []
import pytesseract
from PIL import Image
import re
texte = pytesseract.image_to_string(Image.open('../input/texte-numrique/largepreview.png'), lang='fra')
str = re.findall("[abcdefghijklmnopqrstuvwxzyãáàâçéêíõóôúü,A-Z]+",texte)
text = (" ".join(str))
    
print(text)
from __future__ import print_function
import time
import psutil
import os<jupyter_output><empty_output><jupyter_text>**Autocorrect**<jupyter_code>from autocorrect import Speller
import autocorrect
spell = Speller('fr')
correct = ""
start = time.time()

for line in text.splitlines():
    add = spell.autocorrect_sentence(line)
    correct = correct + add + ' '    
print(correct)

end = time.time()
times.append(end-start)
cpu.append(psutil.cpu_percent())
pid = os.getpid()
py = psutil.Process(pid)
memory.append(py.memory_info()[0]/2.**30) #  physical memory usage<jupyter_output>Canadian Journal for New Scholars in Education Volume , Issue Revue canadienne des jeunes chercheurs et chercheurs en éducation prise Printemps Le texte à l re du numérique Analyse du concept de genre numérique Joanne Peau, Université du Québec à Montréal, Canada Résumé l re du numérique, la lecture et l écriture se transforment tant à l école qu en dehors de celle ci Galanthis Cope, Lebrun, Lacelle Boutin, Penloup, Or, l apparition d interfaces d édition comme Wikipédia renouv e la notion de genre textuel ex hypertexte informatif Hicks , Cela exige du lecteur une connaissance des caractéristiques des genres traditionnel à laquelle s ajoute une maitrise d achetés de navigation et de lecture non linéaire <NAME>, Gonçalves, Vandendorpe, et multimodale Lebrun et al, Le genre numérique digital genre , lin d être une simple traduction numérique des genres traditionnels es un concept d importance dans le développement d une didactique des muflittératies, Considérant la diversité des[...]<jupyter_text>**PySpellChecker**<jupyter_code>from spellchecker import SpellChecker
spell = SpellChecker(language='fr', distance=2)
correct = ""
start = time.time()

for word in text.split():
    add = spell.correction(word)
    correct = correct + add + ' '    
print(correct)

end = time.time()
times.append(end-start)
cpu.append(psutil.cpu_percent())
pid = os.getpid()
py = psutil.Process(pid)
memory.append(py.memory_info()[0]/2.**30) #  physical memory usage<jupyter_output>Canadian Journal for New schlass in Education Volume , Issue Revue canadienne des jeunes chercheurs et chercheurs en éducation peine Printemps Le texte à l re du numérique Analyse du concept de genre numérique jeannie peau Université du Québec à montréal Canada Résumé l re du numérique la lecture et l écriture se transforment tant à l école qu en dehors de celle ci Kalantzis cope Lebrun, nacelle bouton Penloup, or l apparition d interfaces d édition comme Wikipédia renoué e la notion de genre sexuel ex hypertexte informatif Hicks , Cela exige du lecteur une connaissance des caractéristiques des genres traditionnel à laquelle s ajoute une maitrise d saletés de navigation et de lecture non linéaire servais Saemmers, Gonçalves, Vandendorpe, et multimodale brun et all Le genre numérique digital genre , lin d être une simple traduction numérique des genres traditionnels es un concept d importance dans le développement d une didactique des muflittératies, Considérant la diversité des points [...]<jupyter_text>**TextBlob**<jupyter_code>from textblob import TextBlob
spell = TextBlob(text)
start = time.time()

correct = spell.correct().string
print(correct)

end = time.time()
times.append(end-start)
cpu.append(psutil.cpu_percent())
pid = os.getpid()
py = psutil.Process(pid)
memory.append(py.memory_info()[0]/2.**30) #  physical memory usage<jupyter_output>Canadian Journal for New Scholars in Education Volume , Issue Eve canadienne des jeune chercheures et chercheurs en education prince Printemps He text à l re du numérique Analyse du concept de gene numérique <NAME>, University du Quebec à Montreal, Canada Résumé l re du numérique, la lecture et l scripture se transformed want à l come qu en doors de cells i Kalantzis Hope, Lebrun, L<NAME>, Penloup, Or, l apparition d interface d edition comme Wikipédia venous e la notion de gene textile ex hypertext information Licks , Cela exile du letter une reconnaissance des caractéristiques des genius traditional à quelle s about une maitresse d tablets de navigation et de lecture non linéaire <NAME>, Gonçalves, Vandendorpe, et multimodale Lebrun et al, He gene numérique distal gene , in d etre une simple production numérique des genius traditionnels es un concept d importance dans le développement d une didactique des muflittératies, Considérant la diversity des points de [...]<jupyter_text>**Enchant**<jupyter_code>import enchant
spell = enchant.Dict('fr')
correct = ''
start = time.time()

for word in text.split():
    add = spell.suggest(word)
    if len(add)!=0 :
        correct = correct + add[0] + ' '
    else :
        correct = correct + word + ' '
print(correct)

end = time.time()
times.append(end-start)
cpu.append(psutil.cpu_percent())
pid = os.getpid()
py = psutil.Process(pid)
memory.append(py.memory_info()[0]/2.**30) #  physical memory usage<jupyter_output>Canadien Journal for New Schofars in Éducation Volume e Issue Revue canadienne des jeunes chercheurs eth chercheurs en éducations peine Printemps Le texte a k ré du numérique Analyse du concept de genre numérique <NAME>au Université du Québec a Montréal Canada Résume k ré du numérique l’a lecture eth k écriture se transforment tant a k école c en dehors de quelle qui <NAME> Lebrun Nacelle Inabouti Entourloupe Or k apparition s interfaces s édition comme Wikipédia renoue z l’a notion de genre textuel ex hypertexte informatif Kicks e Cela exige du lecteur une connaissance des caractéristiques des genres traditionnel a laquelle q ajoute une maîtrise s ablatés de navigation eth de lecture non linéaire Servais Sage-femme Provençale Endorphine eth multimodale Lebrun eth al Le genre numérique digital genre e lin s être une simple traduction numérique des genres traditionnels es un concept s importance d’ans le développement s une didactique des multilatéralisme Considérant l’a[...]<jupyter_text>**Visualisation**<jupyter_code>import matplotlib.pyplot as plt
import pandas as pd
plt.style.use('fivethirtyeight')
fig = plt.figure(figsize = (15, 8))

model_comparison = pd.DataFrame({'model': X,'time': times, 'cpu': cpu, 'memory': memory})
model_comparison.sort_values('time', ascending = False).plot(x = 'model', y = ['time', 'cpu', 'memory'], kind = 'barh', color = 'rgb', edgecolor = 'black')

plt.ylabel('')
plt.yticks(size = 10)
plt.xlabel('')
plt.xticks(size = 10)
plt.title('Comparaison des solutions', size=20)
print(X)
print(times)
print(cpu)
print(memory)
plt.style.use('fivethirtyeight')
fig = plt.figure(figsize = (15, 8))

model_comparison = pd.DataFrame({'model': X,'time': times})
model_comparison.sort_values('time', ascending = False).plot(x = 'model', y ='time', kind = 'barh', color = 'blue', edgecolor = 'black')

plt.ylabel('')
plt.yticks(size = 10)
plt.xlabel('Time')
plt.xticks(size = 10)
plt.title('Comparaison des solutions sur le temps', size=20) 
print(X)
print(times)
plt.style.use('fivethirtyeight')
fig = plt.figure(figsize = (15, 8))

model_comparison = pd.DataFrame({'model': X,'cpu': cpu})
model_comparison.sort_values('cpu', ascending = False).plot(x = 'model', y ='cpu', kind = 'barh', color = 'red', edgecolor = 'black')

plt.ylabel('')
plt.yticks(size = 10)
plt.xlabel('CPU')
plt.xticks(size = 10)
plt.title('Comparaison des solutions sur le processeur', size=20)  
print(X)
print(cpu)
plt.style.use('fivethirtyeight')
fig = plt.figure(figsize = (15, 8))

model_comparison = pd.DataFrame({'model': X,'memory': memory})
model_comparison.sort_values('memory', ascending = False).plot(x = 'model', y ='memory', kind = 'barh', color = 'green', edgecolor = 'black')

plt.ylabel('')
plt.yticks(size = 10)
plt.xlabel('Memory')
plt.xticks(size = 10)
plt.title('Comparaison des solutions sur la mémoire', size=20)  
print(X)
print(memory)<jupyter_output>['autocorrect', 'pyspellchecker', 'textblob', 'enchant']
[0.4614143371582031, 0.2987632751464844, 0.2926902770996094, 0.2926902770996094]
{'fraction_non_alphanumeric': 0.12340001532919445, 'fraction_numerical': 0.011075342990725837, 'mean_word_length': 5.33373786407767, 'pattern_counts': {'":': 0, '<': 78, '<?xml version=': 0, '>': 78, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '19', 'dir': 'jupyter-structured-clean-dedup', 'id': '376944', 'license': 'Apache-2.0', 'n_tokens_mistral': 9880, 'n_tokens_neox': 9756, 'n_words': 2773, 'path': 'matrice-de-d-cision-correcteur-orthographique.ipynb', 'repo_name': 'ebongoa/PI17', 'size': '26212'}