Created
January 6, 2019 17:23
-
-
Save antoine-briand/4c713892108fcecfe30b767eb3f61d05 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
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