Un lexique genre ODS7 en txt…

Cet article est obsolète, vous pouvez lire l’ Article mis à jour pour l’ODS8

L’Officiel du Scrabble® est le dictionnaire officiel du jeu de Scrabble® francophone depuis le 1er janvier 1990. Il est édité par Larousse et est couramment appelé « ODS » par les scrabbleurs.

2016 voit l’entrée en vigueur de l’ODS7…

Sur le site de la fédération on peut lire :

Qui contacter pour distribuer/vendre un ouvrage ou autre produit utilisant la base de mots de l’Officiel du Scrabble® ?

Tout auteur souhaitant distribuer/vendre un ouvrage ou autre produit (hors application pour Smartphone), utilisant une base de mots conforme à l’Officiel du Scrabble®, doit remplir un contrat de partenariat qui lui sera envoyé sur demande faite auprès de la FISF, à l’adresse suivante : contact@fisf.net

Toute société souhaitant distribuer/vendre un produit numérique privé/grand public sécurisé du type application pour Smartphone, utilisant une base de mots conforme à l’ODS, doit contacter Jean-François Richez, responsable des licences numériques chez Larousse, à l’adresse suivante : JFRICHEZ@larousse.fr

Voilà, mais pour des besoins pédagogiques (formation algorithme au cycle 4) j’avais besoin d’une liste de mots en .txt

Remarque : Je dis bien liste de mots (et non dictionnaire). Et les mots sont à tout le monde…

En effet j’envisage de faire travailler des élèves de 4ème, 3ème sur le développement d’algorithmes divers ayant pour base des jeux de lettres :

  • Boggle
  • Scabble
  • Pendu
  • etc…

Après quelques recherches sur la toile, je me suis aperçu que le fichier txt que je cherchais n’existait pas. Mais que quelques sites proposaient des listes (en html multi-pages. )

Ainsi le très bon listesdemots.net vous propose de nombreuses liste de mots. (898 pages)

Il était donc possible mais fastidieux de créer un fichier txt en copiant collant toutes ces listes !

Pas si fastidieux si on a Python sous le coude !

#wouf 2018 (py3.6.4)
#http://site2wouf.fr
#Pour créer dico.txt
#Qui contient un lexique basé sur
#ODS7
#En scollant le site : listesdemots.net
#requis :l beautifulsoup4
#(cmd : pip install beautifulsoup4)

import requests
from bs4 import BeautifulSoup
fichier = open("dico.txt", "w")

#	Initialisation:
url="https://www.listesdemots.net/touslesmots"
requete = requests.get(str(url+".htm")) #page1
print(requete.url)
page = requete.content

soup = BeautifulSoup(page,features="html5lib")
span = soup.find("span", {"class": "mot"})
mots=span.string.strip()
lesmots=mots.split(" ")
for l in lesmots:
    fichier.write(l+"\n")
    print("|",end="")
print()
print("page 1 : OK ("+str(len(lesmots))+")")
totalmot=len(lesmots)
fichier.close()
#page 2 à 8998:
for i in range(2,899):
    fichier = open("dico.txt", "a")
    lurl=url+"page"+str(i)+".htm"
    ok=False
    while not ok:
        try:
            requete = requests.get(lurl,timeout=1)
            ok=True
        except:
            print("Problème de connexion. Je recommence !")
    print(requete.url)
    page = requete.content
    soup = BeautifulSoup(page,features="html5lib")
    span = soup.find("span", {"class": "mot"})
    mots=span.string.strip()
    lesmots=mots.split(" ")
    for l in lesmots:
        fichier.write(l+"\n")
        print("|",end="")
    totalmot+=len(lesmots)
    print()
    print("page "+str(i)+" : OK ("+str(len(lesmots))+"/"+str(totalmot)+")")
    fichier.close()
#fin du scipt:
 

print("mots :",totalmot)
    


Ce script produit en quelques minutes un fichier txt (avec un mot par ligne) contenant les 402 503 mots du site !

En cas de mauvaise connexion, pas de souci, le script gère ! Le temps de génération du fichier txt sera sensiblement plus long !

Enjoy !


Commentaires

11 réponses à “Un lexique genre ODS7 en txt…”

  1. Un tout grand merci pour ce précieux tuto, je cherchais justement l’ODS en txt.

    Je vous relaie mes observations :
    Il manque chez moi un
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    en tête de fichier avant import pour que ça marche,

    et j’ai ensuite une erreur
    File « lexique.py », line 20
    print(« | »,end= » »)
    ^
    SyntaxError: invalid syntax

    Comme je ne fais pas de Python, aucune idée de comment résoudre ce petit souci de syntaxe… Pouvez-vous me donner un ultime coup de pouce, svp? 🙂

    1. snaileater

      Problème ce n’est manifestement pas l’ODS7 puisqu’il contient plus de mots …

  2. J’ai trouvé ! Ca marche mieux quand on exécute en python3 !
    Merci 😉

    1. Il est vrai que j’aurais dû le mentionner !

  3. Simon

    Un grand merci !!

  4. Merci! Sont inclus dans la liste des mots de plus de 15 lettres (pluriels etc), mais il s’agit bien de l’Ods7.

  5. Bonjour,
    Je viens de lancer votre script.
    Je n’y connais rien en Python. Il semblerait qu’il construise un fichier dico.txt non ?
    Où ce fichier sera-t-il enregistré ?
    Merci de m’aider.
    Cordialement.

    1. bonjour. le fichier sera dans le même repertoire que le script !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Quitter la version mobile