Skip to content

Instantly share code, notes, and snippets.

@antoine-briand
Created January 6, 2019 17:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save antoine-briand/4c713892108fcecfe30b767eb3f61d05 to your computer and use it in GitHub Desktop.
Save antoine-briand/4c713892108fcecfe30b767eb3f61d05 to your computer and use it in GitHub Desktop.
'''
Nous avons deux textes en entrée, texte_a et texte_b qui parlent tous les deux de Labrador (l'un étant une région du Canada et l'autre étant une race de chien).
'''
import re
from tabulate import tabulate
texte_a = '''Le Labrador est la région continentale de la province canadienne de Terre-Neuve-et-Labrador. A ne pas confondre avec la race de chien labrador.'''
texte_b = '''Le retriever du Labrador, plus communément appelé labrador retriever ou plus simplement labrador, est une race de chiens originaire du Royaume-Uni. C'est un chien de taille moyenne, à l'allure ronde et robuste, de couleur entièrement sable, chocolat ou noir. Issu du chien de Saint-John, la race a été importée puis développée au Royaume-Uni et au Canada. Le labrador est actuellement l'une des races les plus répandues dans le monde.'''
# Suppression de la ponctuation.
texte_a = re.sub(r'[^\w\s!-]', '', texte_a)
texte_b = re.sub(r'[^\w\s!-]', '', texte_b)
# Supression des mots vides
mots_vides = ["a", "abord", "absolument", "afin", "ah", "ai", "aie", "aient", "aies", "ailleurs", "ainsi", "ait",
"allaient", "allo", "allons", "allô", "alors", "anterieur", "anterieure", "anterieures", "apres", "après",
"as", "assez", "attendu", "au", "aucun", "aucune", "aucuns", "aujourd", "aujourd'hui", "aupres", "auquel",
"aura", "aurai", "auraient", "aurais", "aurait", "auras", "aurez", "auriez", "aurions", "aurons",
"auront", "aussi", "autre", "autrefois", "autrement", "autres", "autrui", "aux", "auxquelles", "auxquels",
"avaient", "avais", "avait", "avant", "avec", "avez", "aviez", "avions", "avoir", "avons", "ayant",
"ayez", "ayons", "b", "bah", "bas", "basee", "bat", "beau", "beaucoup", "bien", "bigre", "bon", "boum",
"bravo", "brrr", "c", "car", "ce", "ceci", "cela", "celle", "celle-ci", "celle-là", "celles", "celles-ci",
"celles-là", "celui", "celui-ci", "celui-là", "celà", "cent", "cependant", "certain", "certaine",
"certaines", "certains", "certes", "ces", "cet", "cette", "ceux", "ceux-ci", "ceux-là", "chacun",
"chacune", "chaque", "cher", "chers", "chez", "chiche", "chut", "chère", "chères", "ci", "cinq",
"cinquantaine", "cinquante", "cinquantième", "cinquième", "clac", "clic", "combien", "comme", "comment",
"comparable", "comparables", "compris", "concernant", "contre", "couic", "crac", "d", "da", "dans", "de",
"debout", "dedans", "dehors", "deja", "delà", "depuis", "dernier", "derniere", "derriere", "derrière",
"des", "desormais", "desquelles", "desquels", "dessous", "dessus", "deux", "deuxième", "deuxièmement",
"devant", "devers", "devra", "devrait", "different", "differentes", "differents", "différent",
"différente", "différentes", "différents", "dire", "directe", "directement", "dit", "dite", "dits",
"divers", "diverse", "diverses", "dix", "dix-huit", "dix-neuf", "dix-sept", "dixième", "doit", "doivent",
"donc", "dont", "dos", "douze", "douzième", "dring", "droite", "du", "duquel", "durant", "dès", "début",
"désormais", "e", "effet", "egale", "egalement", "egales", "eh", "elle", "elle-même", "elles",
"elles-mêmes", "en", "encore", "enfin", "entre", "envers", "environ", "es", "essai", "est", "et", "etant",
"etc", "etre", "eu", "eue", "eues", "euh", "eurent", "eus", "eusse", "eussent", "eusses", "eussiez",
"eussions", "eut", "eux", "eux-mêmes", "exactement", "excepté", "extenso", "exterieur", "eûmes", "eût",
"eûtes", "f", "fais", "faisaient", "faisant", "fait", "faites", "façon", "feront", "fi", "flac", "floc",
"fois", "font", "force", "furent", "fus", "fusse", "fussent", "fusses", "fussiez", "fussions", "fut",
"fûmes", "fût", "fûtes", "g", "gens", "h", "ha", "haut", "hein", "hem", "hep", "hi", "ho", "holà", "hop",
"hormis", "hors", "hou", "houp", "hue", "hui", "huit", "huitième", "hum", "hurrah", "hé", "hélas", "i",
"ici", "il", "ils", "importe", "j", "je", "jusqu", "jusque", "juste", "k", "l", "la", "laisser",
"laquelle", "las", "le", "lequel", "les", "lesquelles", "lesquels", "leur", "leurs", "longtemps", "lors",
"lorsque", "lui", "lui-meme", "lui-même", "là", "lès", "m", "ma", "maint", "maintenant", "mais", "malgre",
"malgré", "maximale", "me", "meme", "memes", "merci", "mes", "mien", "mienne", "miennes", "miens",
"mille", "mince", "mine", "minimale", "moi", "moi-meme", "moi-même", "moindres", "moins", "mon", "mot",
"moyennant", "multiple", "multiples", "même", "mêmes", "n", "na", "naturel", "naturelle", "naturelles",
"ne", "neanmoins", "necessaire", "necessairement", "neuf", "neuvième", "ni", "nombreuses", "nombreux",
"nommés", "non", "nos", "notamment", "notre", "nous", "nous-mêmes", "nouveau", "nouveaux", "nul",
"néanmoins", "nôtre", "nôtres", "o", "oh", "ohé", "ollé", "olé", "on", "ont", "onze", "onzième", "ore",
"ou", "ouf", "ouias", "oust", "ouste", "outre", "ouvert", "ouverte", "ouverts", "o|", "où", "p", "paf",
"pan", "par", "parce", "parfois", "parle", "parlent", "parler", "parmi", "parole", "parseme", "partant",
"particulier", "particulière", "particulièrement", "pas", "passé", "pendant", "pense", "permet",
"personne", "personnes", "peu", "peut", "peuvent", "peux", "pff", "pfft", "pfut", "pif", "pire", "pièce",
"plein", "plouf", "plupart", "plus", "plusieurs", "plutôt", "possessif", "possessifs", "possible",
"possibles", "pouah", "pour", "pourquoi", "pourrais", "pourrait", "pouvait", "prealable", "precisement",
"premier", "première", "premièrement", "pres", "probable", "probante", "procedant", "proche", "près",
"psitt", "pu", "puis", "puisque", "pur", "pure", "q", "qu", "quand", "quant", "quant-à-soi", "quanta",
"quarante", "quatorze", "quatre", "quatre-vingt", "quatrième", "quatrièmement", "que", "quel",
"quelconque", "quelle", "quelles", "quelqu'un", "quelque", "quelques", "quels", "qui", "quiconque",
"quinze", "quoi", "quoique", "r", "rare", "rarement", "rares", "relative", "relativement", "remarquable",
"rend", "rendre", "restant", "reste", "restent", "restrictif", "retour", "revoici", "revoilà", "rien",
"s", "sa", "sacrebleu", "sait", "sans", "sapristi", "sauf", "se", "sein", "seize", "selon", "semblable",
"semblaient", "semble", "semblent", "sent", "sept", "septième", "sera", "serai", "seraient", "serais",
"serait", "seras", "serez", "seriez", "serions", "serons", "seront", "ses", "seul", "seule", "seulement",
"si", "sien", "sienne", "siennes", "siens", "sinon", "six", "sixième", "soi", "soi-même", "soient",
"sois", "soit", "soixante", "sommes", "son", "sont", "sous", "souvent", "soyez", "soyons", "specifique",
"specifiques", "speculatif", "stop", "strictement", "subtiles", "suffisant", "suffisante", "suffit",
"suis", "suit", "suivant", "suivante", "suivantes", "suivants", "suivre", "sujet", "superpose", "sur",
"surtout", "t", "ta", "tac", "tandis", "tant", "tardive", "te", "tel", "telle", "tellement", "telles",
"tels", "tenant", "tend", "tenir", "tente", "tes", "tic", "tien", "tienne", "tiennes", "tiens", "toc",
"toi", "toi-même", "ton", "touchant", "toujours", "tous", "tout", "toute", "toutefois", "toutes",
"treize", "trente", "tres", "trois", "troisième", "troisièmement", "trop", "très", "tsoin", "tsouin",
"tu", "té", "u", "un", "une", "unes", "uniformement", "unique", "uniques", "uns", "v", "va", "vais",
"valeur", "vas", "vers", "via", "vif", "vifs", "vingt", "vivat", "vive", "vives", "vlan", "voici", "voie",
"voient", "voilà", "vont", "vos", "votre", "vous", "vous-mêmes", "vu", "vé", "vôtre", "vôtres", "w", "x",
"y", "z", "zut", "à", "â", "ça", "ès", "étaient", "étais", "était", "étant", "état", "étiez", "étions",
"été", "étée", "étées", "étés", "êtes", "être", "ô"]
def remove_stopwords(texte):
return list((filter(lambda mot: mot.lower() not in mots_vides, texte.split())))
def all_lower(splitted_text):
return [word.lower() for word in splitted_text]
def get_index(splitted_text, text_identifier):
local_index = {}
for word in splitted_text:
local_index[word] = [text_identifier]
return local_index
if __name__ == "__main__":
# Le résultat de ce script est une table de hachage inversée de termes-documents. En python, les dictionnaires sont des tables de hachage par défaut.
index = {}
indexA = get_index(all_lower(remove_stopwords(texte_a)), 'Texte A')
indexB = get_index(all_lower(remove_stopwords(texte_b)), 'Texte B')
index = indexA
for key, value in indexB.items():
if key in index.keys():
index[key].append(value[0])
else:
index[key] = value
headers = ['mot', 'documents']
data = sorted([(k, v) for k, v in index.items()])
print(tabulate(data, headers=headers))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment