Skip to content
Snippets Groups Projects
Commit d7f2c9d6 authored by Ludovic Moncla's avatar Ludovic Moncla
Browse files

Create Preprocessing.ipynb

parent 0a61e7e4
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id:metallic-shelf tags:
# Préparation du corpus EDdA pour la classification en domaine
%% Cell type:markdown id:designing-advice tags:
## Preparing data
%% Cell type:markdown id:floppy-fleet tags:
### Import des librairies
%% Cell type:code id:appreciated-victim tags:
``` python
import os
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import urllib, json
from urllib.request import urlopen
```
%% Cell type:markdown id:c7fc80b7 tags:
%% Cell type:markdown id:framed-fossil tags:
### Parsing des articles TEI
%% Cell type:code id:suburban-honduras tags:
``` python
input_path = "/Users/lmoncla/Documents/Data/Corpus/EDDA/Alice/EDdA/"
```
%% Cell type:code id:scenic-vermont tags:
``` python
# récupération dans une liste des métadonnées (volume, numéro, nom de l'article, classe et auteur) à partir des fichiers TEI
data = []
for tome in os.listdir(input_path):
volume = tome[1:]
print("Volume : ", volume)
for article in os.listdir(input_path + tome +"/"):
#print("Article : ", article[7:-4])
numero = article[7:-4]
extension = article[-4:]
if extension == '.tei':
try:
soup = BeautifulSoup(open(input_path+tome+"/"+article))
head = soup.find(type="head")
author = soup.find(type="author")
normclass = soup.find(type="normclass")
classEDdA = soup.find(type="class")
#print(volume, numero, head.get('value'), normclass.get('value'), author.get('value'))
data.append([int(volume), int(numero), head.get('value').strip(), normclass.get('value').strip(), classEDdA.get('value').strip(), author.get('value').strip()])
except AttributeError as e:
#print('Volume : ', volume, ' Numéro : ', numero)
#print('Error : ' + str(e))
pass
```
%% Output
Volume : 11
Volume : 16
Volume : 17
Volume : 10
Volume : 5
Volume : 2
Volume : 3
Volume : 4
Volume : 15
Volume : 12
Volume : 13
Volume : 14
Volume : 1
Volume : 6
Volume : 8
Volume : 9
Volume : 7
%% Cell type:code id:excess-waterproof tags:
``` python
# transformation de la liste en dataframe
df = pd.DataFrame(data, columns=['volume', 'numero', 'head', 'normClass', 'classEDdA', 'author'])
df = df.sort_values(['volume', 'numero']).reset_index(drop = True)
```
%% Cell type:code id:blocked-reading tags:
``` python
# affichage aléatoire de 50 lignes du dataframe
df.sample(10)
```
%% Output
volume numero head normClass \
41327 10 2211 MILIAIRE fievre Médecine
69509 16 3317 TRIMONTIUM Géographie ancienne
32448 8 1600 HRADSCHIN Géographie
60365 14 4069 Sauveur Art numismatique
15763 3 3846 CONFORMISTES, (non-) unclassified
33076 8 2228 Jardin Fauconnerie
6245 2 985 Bassin Boulangerie
1967 1 1969 ALTIN Commerce
11512 2 6252 CAVER Escrime
23387 5 2106 EMPANNON Charpenterie
classEDdA author
41327 Medecine. Jaucourt
69509 Géog. anc. unsigned
32448 Géog. unsigned
60365 Art numismat. Jaucourt
15763 unclassified unsigned
33076 Fauconnerie. unsigned
6245 terme de Boulanger unsigned
1967 Commerce. unsigned
11512 en Escrime. unsigned
23387 Charpent. unsigned
%% Cell type:code id:expired-click tags:
``` python
# nombre d'articles dans le dataframe
len(df)
```
%% Output
74190
%% Cell type:code id:considered-adjustment tags:
``` python
# On regroupe les lignes du dataframe en fonction du normclass
classes = df.groupby(['normClass']).count()
classes.head()
```
%% Output
volume numero head classEDdA author
normClass
44 44 44 44 44
0 17 17 17 17 17
Abus des langues 1 1 1 1 1
Accord de sons 1 1 1 1 1
Acoustique 6 6 6 6 6
%% Cell type:code id:instructional-variation tags:
``` python
# Nombre de classes
len(classes)
```
%% Output
2908
%% Cell type:code id:handmade-contest tags:
``` python
# nombre d'articles 'unclassified'
len(df.loc[df['normClass']=="unclassified",:])
```
%% Output
12685
%% Cell type:code id:crude-olympus tags:
``` python
# nombre de classes avec un seul article
len(classes.loc[classes['volume']==1])
```
%% Output
1614
%% Cell type:code id:sized-barrier tags:
``` python
# nombre de classes avec moins de 20 articles
len(classes.loc[classes['volume']<20])
```
%% Output
2656
%% Cell type:code id:indian-selection tags:
``` python
```
%% Cell type:markdown id:weighted-hanging tags:
### Enregistrement
%% Cell type:code id:stainless-stewart tags:
``` python
# enregistrement du résultat du groupby
#classes['volume'].to_csv('classesEDdA.tsv',sep='\t',header=False)
```
%% Cell type:code id:hearing-olive tags:
``` python
# enregistrement du dataframe (permet de ne pas reparser tous les fichiers TEI pour recharger ce dataframe)
df.to_csv('../../../Data/EDdA-Classification/EDdA_dataframe_orginal.tsv',sep='\t', index=False)
```
%% Cell type:markdown id:stuck-courage tags:
### Lecture
%% Cell type:code id:thick-destiny tags:
``` python
df = pd.read_csv('../../../Data/EDdA-Classification/EDdA_dataframe_orginal.tsv', sep='\t')
```
%% Cell type:code id:typical-munich tags:
``` python
df.head()
```
%% Output
volume numero head normClass \
0 1 1 Title Page unclassified
1 1 2 A MONSEIGNEUR LE COMTE D'ARGENSON unclassified
2 1 3 DISCOURS PRÉLIMINAIRE DES EDITEURS unclassified
3 1 5 A, a & a Grammaire
4 1 6 A unclassified
classEDdA author
0 unclassified unsigned
1 unclassified Diderot & d'Alembert
2 unclassified d'Alembert
3 ordre Encyclopéd. Entend. Science de l'homme, ... Dumarsais5
4 unclassified Dumarsais5
%% Cell type:code id:individual-protection tags:
``` python
# ensembles de domaines et domaines ENCCRE
domaines_regroupes = {}
domaines_regroupes['Agriculture - Economie rustique'] = ['Agriculture', 'Economie rustique', 'Fontainier', 'Graines', 'Jardinage', 'Moulin', 'Sucre', 'Tabac', 'Vigne', 'Vin']
domaines_regroupes['Anatomie'] = ['Anatomie', 'Economie animale']
domaines_regroupes['Antiquité'] = ['Antiquité', 'Iconologie', 'Mythologie']
domaines_regroupes['Architecture'] = ['Architecture', 'Carreleur', 'Carrier', 'Coupe des pierres', 'Couvreur', 'Décoration', 'Maçonnerie']
domaines_regroupes['Arts et métiers'] = ['Arts et métiers', 'Arts mécaniques', 'Manufacture']
domaines_regroupes['Beaux-arts'] = ['Beaux-arts', 'Dessin', 'Gravue', 'Peinture', 'Sculpture']
domaines_regroupes['Belles-lettres - Poésie'] = ['Belles-lettres', 'Eloquence', 'Littérature', 'Poésie', 'Rhétorique']
domaines_regroupes['Blason'] = ['Blason']
domaines_regroupes['Caractères'] = ['Caractères', 'Ecriture']
domaines_regroupes['Chasse'] = ['Chasse', 'Fauconnerie', 'Oisellerie', 'Vénerie']
domaines_regroupes['Chimie'] = ['Alchimie', 'Chimie', 'Docimasie']
domaines_regroupes['Commerce'] = ['Commerce', 'Marchand', 'Voiturier']
domaines_regroupes['Droit - Jurisprudence'] = ['Chancellerie', 'Corporation', 'Douane', 'Droit', 'Eaux et Forêts', 'Finance', 'Jurisprudence', 'Palais']
domaines_regroupes['Economie domestique'] = ['Cuisine','Economie domestique']
#domaines_regroupes['Géographie'] = ['Géographie', 'Géographie Histoire naturelle', 'Géographie ancienne', 'Géographie des Arabes', 'Géographie du moyen âge',
# 'Géographie ecclésiastique', 'Géographie historique', 'Géographie maritime ancienne', 'Géographie des Romains', 'Géographie morderne',
# 'Géographie naturelle', 'Géographie physique', 'Géographie sacrée', 'Géographie sainte', 'Géographie transcendante', 'Géographie transcendantee']
domaines_regroupes['Géographie'] = ['Géographie', 'Topographie']
domaines_regroupes['Grammaire'] = ['Grammaire', 'Langues', 'Synonymes']
domaines_regroupes['Histoire'] = ['Calendrier','Chevalerie','Chronologie','Coutumes','Généalogie','Histoire','Inscriptions','Inventions', 'Voyage']
domaines_regroupes['Histoire naturelle'] = ['Botanique','Conchyliologie','Fossiles','Histoire naturelle', 'Ichtyologie','Insectologie','Ophiologie','Ornithologie','Zoologie']
domaines_regroupes['Jeu'] = ['Jeu']
domaines_regroupes['Maréchage - Manège'] = ['Maréchage', 'Manège']
domaines_regroupes['Marine'] = ['Galère','Marine', 'Navigation', 'Rivière']
domaines_regroupes['Mathématiques'] = ['Algèbre','Analyse des hasards', 'Arithmétique', 'Arpentage','Géométrie', 'Mathématiques', 'Trigonométrie']
domaines_regroupes['Médailles'] = ['Médailles','Numismatique']
domaines_regroupes['Médecine - Chirurgie'] = ['Chirurgie', 'Diète', 'Gymnastique', 'Maladie', 'Matière médicale', 'Médecine', 'Pathologie', 'Physiologie', 'Séméiotique', 'Thérapeutique']
domaines_regroupes['Mesure'] = ['Balancier', 'Jaugeage', 'Mesure', 'Poids']
domaines_regroupes["Métiers"] = ['Boucherie', 'Boulangerie', 'Brasserie', 'Charcuterie', 'Confiserie', 'Distillation', 'Epicerie', 'Pâtisserie', 'Rôtisserie', 'Vinaigrier']
domaines_regroupes["Métiers"] += ['Bois', 'Boissellerie', 'Charpenterie', 'Charronnage', 'Coffretier', 'Ebénisterie', 'Formier', 'Layeterie', 'Menuiserie', 'Tonnelier', 'Vannerie']
domaines_regroupes["Métiers"] += ['Bourrelier', 'Boyaudier', 'Cardier', 'Chamoiseur', 'Corroierie', 'Cuir', 'Gainier', 'Hongroyeur', 'Maroquinier', 'Mégisserie', 'Parcheminerie', 'Peausserie', 'Pelleterie', 'Sellier', 'Tannerie']
domaines_regroupes["Métiers"] += ['Aiguilletier-Epinglier', 'Ardoiserie', 'Argent', "Batteur d'or", 'Bijouterie', 'Bimblotier', 'Chaînetier', 'Chaudronnerie', 'Ciselure', 'Cloche', 'Cloutier', 'Coutellerie', 'Cuivre', 'Diamantaire', 'Dorure', 'Eperonnier', 'Fer']
domaines_regroupes["Métiers"] += ['Ferblanterie', 'Fonderie', 'Forge', 'Fourbisseur', 'Glaces', 'Joaillier', 'Lapidaire', 'Lunetier', 'Marbrier', 'Maréchal-grossier', 'Métal', 'Metteur en oeuvre', 'Miroiterie', 'Or', 'Orfèvrerie']
domaines_regroupes["Métiers"] += ['Pierres', 'Plomberie', "Potier d'étain", 'Serrurerie', 'Taillanderie', "Tireur d'or", 'Verrerie', 'Vitrerie']
domaines_regroupes["Métiers"] += ['Cartier', 'Cartonnier', 'Imprimerie', 'Librairie', 'Marbreur de papier', 'Papeterie', 'Reliure']
domaines_regroupes["Métiers"] += ['Bas au métier', 'Blanchissage des toiles', 'Blondier', 'Bonneterie', 'Bottier', 'Bourserie', 'Boutonnier', 'Broderie', 'Cardeur', 'Ceinturier', 'Chapellerie', 'Cordonnerie','Coton', 'Couture', 'Découpeur', 'Dentelle', 'Draperie']
domaines_regroupes["Métiers"] += ['Etoffe', 'Fil', 'Friseur', 'Ganterie', 'Gazier', 'Laine', 'Lingerie', 'Mode', 'Ourdissage', 'Passementerie', 'Perruquier', 'Plumasserie', 'Rubanerie', 'Soierie', 'Tailleur', 'Tapisserie', 'Teinturerie', 'Tisserand', 'Toilerie', 'Tonderie de drap']
domaines_regroupes["Métiers"] += ['Amidonnier', 'Blanchisserie de cire', 'Chandelier', 'Cirerie', 'Corderie', 'Emailleur', 'Eventailliste', 'Faïencier', 'Filassier', 'Fleuriste', 'Horlogerie', 'Marqueterie', 'Métiers peu attestés', 'Parfumeur', 'Paumier', 'Poterie']
domaines_regroupes["Métiers"] += ['Salpêtrerie', 'Savonnerie', 'Sel', 'Tabatière', 'Tabletier-Cornetier', 'Tourneur', 'Vergetier', 'Vernisseur']
domaines_regroupes['Militaire (Art) - Guerre - Arme'] = ['Armurerie', 'Artificier', 'Artillerie', 'Canon','Escrime','Fortification','Guerre','Milice','Militaire']
domaines_regroupes['Minéralogie'] = ['Lithologie','Métallurgie','Minéralogie']
domaines_regroupes['Monnaie'] = ['Monnaie']
domaines_regroupes['Musique'] = ['Danse', 'Lutherie','Musique','Orgue', 'Voix']
domaines_regroupes['Pêche'] = ['Pêche']
domaines_regroupes['Pharmacie'] = ['Drogues', 'Pharmacie']
domaines_regroupes['Philosophie'] = ['Education', 'Logique', 'Métaphysique', 'Morale', 'Philologie','Philosophie', 'Sciences']
domaines_regroupes['Physique - [Sciences physico-mathématiques]'] = ['Acoustique', 'Astrologie', 'Astronomie', 'Cosmographie-Cosmologie', 'Gnomonique', 'Hydraulique', 'Mécanique', 'Optique', 'Perspective', 'Physique', 'Science microscopique']
domaines_regroupes['Politique'] = ['Economie', 'Gouvernement', 'Police', 'Politique']
domaines_regroupes['Religion'] = ['Critique sacrée', 'Culte', 'Eglise', 'Histoire ecclésiastique', 'Idolâtrie', 'Religion', 'Théologie']
domaines_regroupes['Spectacle'] = ['Opéra','Spectacle', 'Théâtre']
domaines_regroupes['Superstition'] = ['Divination', 'Magie', 'Superstition']
```
%% Cell type:markdown id:variable-instrument tags:
### Récupération correspondance EDdA / ENCCRE
%% Cell type:code id:south-equation tags:
``` python
df_correspondances = pd.read_csv("/Users/lmoncla/Nextcloud-LIRIS/GEODE/GEODE - Partage consortium/Classification domaines EDdA/correspondances_ARTFL-ENCCRE.csv")
```
%% Cell type:code id:protecting-incentive tags:
``` python
df_correspondances.head()
```
%% Output
path entreeid tome article adresse entree
0 T1/article5 v1-1-0 1 5 1 0
1 T1/article6 v1-1-1 1 6 1 1
2 T1/article7 v1-1-2 1 7 1 2
3 T1/article8 v1-1-3 1 8 1 3
4 T1/article9 v1-1-4 1 9 1 4
%% Cell type:markdown id:continuous-feedback tags:
### Test récupération données ENCCRE
%% Cell type:code id:7820200b tags:
``` python
import urllib, json
from urllib.request import urlopen
```
%% Cell type:code id:spread-feature tags:
``` python
json_url = urlopen("http://enccre.academie-sciences.fr/icefront/api/article/v1-544-0")
data = json.loads(json_url.read())
```
%% Cell type:code id:facial-syndicate tags:
``` python
data['annotations']['constit'][0]['domgen'][0]
```
%% Output
'géographie'
%% Cell type:code id:removed-nickel tags:
``` python
def get_key(val):
for key, value in domaines_regroupes.items():
for v in value:
v = v.replace(" ", "")
if val == v.lower():
return key
return None
```
%% Cell type:code id:nuclear-murder tags:
``` python
print(get_key("histoirenaturelle"))
```
%% Output
Histoire naturelle
%% Cell type:code id:placed-homework tags:
``` python
!pip install git+https://github.com/ClaudeCoulombe/FrenchLefffLemmatizer.git &> /dev/null
!pip install spacy
!python -m spacy download fr_core_news_sm
```
%% Cell type:markdown id:extraordinary-settlement tags:
### Ajout des colonnes domaines, texte, etc.
%% Cell type:code id:0c378939 tags:
``` python
import string
import nltk
from french_lefff_lemmatizer.french_lefff_lemmatizer import FrenchLefffLemmatizer
import spacy
nlp = spacy.load("fr_core_news_sm")
nltk.download('stopwords')
nltk.download('wordnet')
```
%% Output
[nltk_data] Downloading package stopwords to
[nltk_data] /Users/lmoncla/nltk_data...
[nltk_data] Package stopwords is already up-to-date!
[nltk_data] Downloading package wordnet to /Users/lmoncla/nltk_data...
[nltk_data] Package wordnet is already up-to-date!
True
%% Cell type:code id:96448195 tags:
``` python
lst_stopwords = nltk.corpus.stopwords.words("french")
lst_stopwords += ['plus', 'dun', 'deux', 'autre', 'cette', 'quelque', 'étoit', 'avoit', 'si', 'dont', 'quon', 'voyez', 'lautre', 'comme', 'fait', 'aussi', 'leurs', 'tous', 'toute', 'autres', 'dit', 'selon', 'tout']
lst_stopwords += ['étoient', 'faire', 'lon', 'celle', 'ainsi', 'quelle', 'être', 'faut', 'peut', 'entre', 'elles', 'ceux', 'donc', 'celui', 'nest', 'dautre', 'doit', 'cet', ]
lst_stopwords += ["un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "très", "plus", "ni", "fit", "parce", "dire"]
lst_stopwords += ["douze", "toutes", "après"]
lst_stopwords += ["l\'", "qu'", "s'", "c'", "d'", "n'", "j'", "m'", "t'", "jusqu'", "lorsqu'", "puisqu'", "quoiqu'"]
lem = FrenchLefffLemmatizer()
def utils_preprocess_text(content_str):
#text = re.sub(r'[^\w\s]', '', str(text).lower().strip())
#text = nltk.tokenize.word_tokenize(text, language = "french")
#text = unescape(mt.tokenize(text, return_str=True))
text = nlp(content_str) # spacy
return len(text), " ".join([lem.lemmatize(word.text.lower()) for word in text if word.text.lower() not in lst_stopwords and word.text not in string.punctuation])
```
%% Cell type:code id:de693cc7 tags:
``` python
a, b = utils_preprocess_text("L'indication qu'il faut donner aujourd'hui ...")
print(a, b)
```
%% Output
8 indication donner aujourd'hui ...
%% Cell type:code id:cf7bb9ca tags:
``` python
## cellule de test
volume = 1
numero = 7
txt_file = "/Users/lmoncla/Documents/Data/Corpus/EDDA/all_txt/volume0"+str(volume)+"-"+str(numero)+".txt"
txtContent = open(txt_file, "r").read()
txtContent
```
%% Output
"A, préposition vient du latin à, à dextris, à sinistris, à droite, à gauche. Plus souvent encore notre\nà vient de la préposition latine ad, loqui ad, parler\nà. On trouve aussi dicere ad. Cic. It lucrum ad me,\n(Plaute) le profit en vient à moi. Sinite parvulos venire ad me, laissez venir ces enfans à moi.\nObservez que a mot, n'est jamais que ou la troisieme \npersonne du présent de l'indicatis du verbe\navoir, ou une simple préposition. Ainsi à n'est jamais\nadverbe, comme quelques Grammairiens l'ont cru,\nquoiqu il entre dans plusieurs façons de parler adverbiales.\nCar l'adverbe n'a pas besoin d'être suivi d'un\nautre mot qui le détermine, ou, comme disent communément \nles Grammairiens, l'adverbe n'a jamais\nde régime ; parce que l'adverbe renferme en soi la\npréposition & le nom : prudemment, avec prudence.\n(V. Adverbe) au lieu que la préposition a toûjours\nun régime, c'est-à-dire, qu'elle est toujours suivie\nd'un autre mot, qui détermine la relation ou l'espece\nde rapport que la préposition indique. Ainsi la préposition \nà peut bien entrer, comme toutes les autres\nprépositions, dans des façons de parler adverbiales:\nmais comme elle est toûjours suivie de son complément,\nou, comme on dit, de son régime, elle ne peut\njamais être adverbe.\nA n'est pas non plus une simple particule qui marque\n\n le datif ; parce qu'en françois nous n'avons ni\ndéclinaison, ni cas, ni par conséquent de datif. V.\nCas. Le rapport que les Latins marquoient par la\nterminaison du datif, nous l'indiquons par la préposition \nà. C'est ainsi que les Latins mêmes se sont servis\nde la préposition ad, quod attinet ad me. Cic. Accedit\nad, referre ad aliquem, & alicui. Ils disoient aussi également loqui ad aliquem, & loqui alicui, parler à quelqu'un, &c.\nA l'égard des différens usages de la préposition à,\nil faut observer 1. que toute préposition est entre\ndeux termes, qu'elle lie & qu'elle met en rapport.\n2. Que ce rapport est souvent marqué par la signification \npropre de la préposition même, comme\navec, dans, sur, &c.\n3. Mais que souvent aussi les prépositions, surtout\nà, de ou du, outre le rapport qu'elles indiquent quand\nelles sont prises dans leur sens primitif & propre, ne\nsont ensuite par figure & par extension, que de simples \nprépositions unitives ou indicatives, qui ne font\nque mettre deux mots en rapport ; ensorte qu'alors\nc'est à l'esprit même à remarquer la sorte de rapport\nqu'il y a entre les deux termes de la relation unis entre-eux par la préposition : par exemple, approchez-vous du feu : du, lie feu avec approchez-vous, & l'esprit \nobserve ensuite un rapport d'approximation,\nque du ne marque pas. Eloignez-vous du feu ; du, lie\nfeu avec éloignez-vous, & l'esprit observe-là un rapport \nd'éloignement. Vous voyez que la même préposition \nsert à marquer des rapports opposés. On dit\nde même donner à & ôter à. Ainsi ces sortes de rapports\ndifferent autant que les mots different entre-eux.\nJe crois donc que lorsque les prépositions ne sont,\nou ne paroissent pas prises dans le sens propre de leur\npremiere destination, & que par conséquent elles\nn'indiquent pas par elles-mêmes la sorte de rapport\nparticulier que celui qui parle veut faire entendre ;\nalors c'est à celui qui écoute ou qui lit, à reconnoître\nla sorte de rapport qui se trouve entre les mots liés\npar la préposition simplement unitive & indicative.\nCependant quelques Grammairiens ont mieux aimé \népuiser la Métaphysique la plus recherchée, &\nsi je l'ose dire, la plus inutile & la plus vaine, que\nd'abandonner le Lecteur au discernement que lui donne \nla connoissance & l'usage de sa propre Langue.\nRapport de cause, rapport d'effet, d'instrument, de situation,\nd'époque, table à pieds de biche, c'est-là un rapport \nde forme, dit M. l'Abbé Girard, tom. II. p. 199.\nBassin à barbe, rapport de service, (id. ib.) Pierre à feu,\nrapport de propriété productive, (id. ib.) &c. La préposition \nà n'est point destinée à marquer par elle-même un rapport de propriété productive, ou de service,\nou de forme, &c. quoique ces rapports se trouvent\nentre les mots liés par la préposition à. D'ailleurs,\nles mêmes rapports sont souvent indiqués par des\nprépositions différentes, & souvent des rapports opposés \nsont indiqués par la même préposition.\nIl me paroit donc que l'on doit d'abord observer la\npremiere & principale destination d'une préposition.\nPar exemple : la principale destination de la préposition \nà, est de marquer la relation d'une chose à une\nautre, comme, le terme où l'on va, ou à quoi ce\nqu'on fait se termine, le but, la sin, l'attribution,\nle pourquoi. Aller à Rome, préter de l'argent à usure,\nà gros intérét. Donner quelque chose à quelqu'un, &c.\nLes autres usages de cette préposition reviennent ensuite \nà ceux-là par catachrese, abus, extension, ou\nimitation : mais il est bon de remarquer quelques-uns\nde ces usages, afin d'avoir des exemples qui puissent\nservir de regle, & aider à décider les doutes par analogie \n& par imitation. On dit donc:\n\nAprès un nom substantif.\nAir à chanter. Billet à ordre, c'est-à-dire, payable\n\n\nà ordre. Chaise à deux. Doute à éclaircir. Entreprise à\nexécuter. Femme à la hotte? (au vocatif). Grenier à\nsel. Habit à la mode. Instrument à vent. Lettre de change\nà vûe, à dix jours de vûe. Matiere à procès. Nez à lunette.\nOEufs à la coque. Plaine à perte de vûe. Question\nà juger. Route à gauche. Vache à lait.\n\nA après un adjectif\nAgréable à la vûe. Bon à prendre & à laisser. Contraire à la santé. Délicieux à manger. Facile à faire.\nObservez qu'on dit : Il est facile de faire cela.\n\nQuand on le veut il est facile\nDe s'assûrer un repos plein d'appas. Quinault.\nLa raison de cette différence est que dans le dernier \nexemple de n'a pas rapport à facile, mais à il ; il,\nhoc, cela, à savoir de faire, &c. est facile, est une\nchose facile. Ainsi, il, de s'assûrer un repos plein d'appas, est le sujet de la proposition, & est facile en est\nl'attribut.\n\nQu'il est doux de trouver dans un amant qu'on aime\nUn époux que l'on doit aimer! (Idem.)\nIl, à savoir, de trouver un époux dans un amant,\n&c. est doux, est une chose douce. (V. Proposition).\nIl est gauche à tout ce qu'il fait. Heureux à la guerre.\nHabile à dessiner, à écrire. Payable a ordre. Pareil à,\n&c. Propre à, &c. Semblable à, &c. Utile à la santé.\n\nAprès un verbe.\nS'abandonner à ses passions. S'amuser à des bagatelles.\nApplaudir à quelqu'un. Aimer à boire, à faire du bien.\nLes hommes n'aiment point à admirer les autres ; ils\ncherchent eux-mêmes à être goûtés & à être applaudis.\nLa Bruyere. Aller à cheval, à califourchon, c'est-à-dire, jambe deçà, jambe delà. S'appliquer à, &c. S'attacher à, &c. Blesser a, il a été blessé à la jambe. Crier\nà l'aide, au feu, au secours. Conseiller quelque chose à\nquelqu'un. Donner à boire à quelqu'un. Demander à\nboire. Etre à. Il est à écrire, à jouer. Il est à jeun. Il\nest à Rome. Il est à cent lieues. Il est long-tems à venir.\nCela est à faire, à taire, à publier, à payer. C'est à vous\nà mettre le prix à votre marchandise. J'ai fait cela à votre\nconsidération, à votre intention. Il faut des livres à votre\nfils. Joüer à Colin Maillard, joüer à l'ombre, aux échecs.\nGarder à vûe. La dépense se monte à cent écus, & la recette \nà, &c. Monter à cheval. Payer à quelqu'un. Payer\nà vûe, à jour marqué. Persuader à. Préter à. Puiser à\nla source. Prendre garde à soi. Prendre à gauche. Ils\nvont un à un, deux à deux, trois à trois. Voyons à qui\nl'aura, c'est-à-dire, voyons à ceci, (attendamus ad\nhoc nempe) à savoir qui l'aura.\n\nA avant une autre Préposition.\nA se trouve quelquefois avant la préposition de\ncomme en ces exemples.\n\nPeut-on ne pas céder à de si puissans charmes?\nEt peut-on refuser son coeur\nA de beaux yeux qui le demandent?\nJe crois qu'en ces occasions il y a une ellipse synthétique.\nL'esprit est occupé des charmes particuliers\nqui l'ont frappé; & il met ces charmes au rang des\ncharmes puissans, dont on ne sauroit se garantir.\nPeut-on ne pas céder à ces charmes qui sont du nombre \ndes charmes si puissans, &c. Peut-on ne pas céder\nà l'attrait, au pouvoir de si puissans charmes? Peut-on\nrefuser son coeur à ces yeux, qui sont de la classe\ndes beaux yeux. L'usage abrege ensuite l'expression,\n& introduit des façons de parler particulieres auxquelles \non doit se conformer, & qui ne détruisent\npas les regles.\nAinsi, je crois que de ou des sont toûjours des prépositions \nextractives, & que quand on dit des Savans\nsoûtiennent, des hommes m'ont dit, &c. des Savans, des\nhommes, ne sont pas au nominatif. Et de même quand\non dit, j'ai vû des hommes, j'ai vû des femmes, &c. des\n\nhommes, des femmes, ne sont pas à l'accusatif ; car,\nsi l'on veut bien y prendre garde, on reconnoîtra\nque ex hominibus, ex mulieribus, &c. ne peuvent\nêtre ni le sujet de la proposition, ni le terme de l'action \ndu verbe ; & que celui qui parle veut dire, que\nquelques-uns des Savans soûtiennent, &c. quelques-uns des hommes, quelques-unes des femmes, disent, &c.\n\nA après des adverbes.\nOn ne se sert de la préposition à après un adverbe,\nque lorsque l'adverbe marque relation. Alors l'adverbe \nexprime la sorte de relation, & la préposition\nindique le corrélatif. Ainsi, on dit conformément à.\nOn a jugé conformément à l'Ordonnance de 1667. On\ndit aussi relativement à.\nD'ailleurs l'adverbe ne marquant qu'une circonstance \nabsolue & déterminée de l'action, n'est pas\nsuivi de la préposition à.\n\nA en des façons de parler adverbiales, & en celles qui\nsont équivalentes à des prépositions Latines, ou de\nquelqu'autre Langue.\nA jamais, à toûjours. A l'encontre. Tour à tour.\nPas à pas. Vis-à-vis. A pleines mains. A fur & à mesure.\nA la fin, tandem, aliquando, C'est-à-dire, nempe,\nscilicet. Suivre à la piste. Faire le diable à quatre.\nSe faire tenir à quatre. A cause, qu'on rend en latin par\nla proposition propter. A raison de. Jusqu'à, ou jusques\nà. Au-delà. Au-dessus. Au-dessous. A quoi bon, quorsùm.\nA la vûe, à la présence, ou en présence, coram.\nTelles sont les principales occasions où l'usage a\nconsacré la préposition à. Les exemples que nous venons \nde rapporter, serviront a décider par analogie\nles difficultés que l'on pourroit avoir sur cette préposition.\nAu reste la préposition au est la même que la préposition \nà. La seule différence qu'il y a entre l'une\n& l'autre, c'est que à est un mot simple, & que au\nest un mot composé.\nAinsi il faut considérer la préposition à en deux\nétats différens.\nI. Dans son état simple : 1°. Rendez à César ce\nqui appartient à Céfar ; 2°. se prêter à l'exemple ;\n3°. se rendre à la raison. Dans le premier exemple\nà est devant un nom sans article. Dans le second\nexemple à est suivi de l'article masculin, parce que\nle mot commence par une voyelle : à l'exemple, à\nl'esprit, à l'amour. Enfin dans le dernier, la préposition \nà précede l'article féminin, à la raison, à l'autorité.\nII. Hors de ces trois cas, la préposition à devient\nun mot composé par sa jonction avec l'article le ou\navec l'article pluriel les. L'article le à cause du son\nsourd de l'e muet a amené au, de sorte qu'au lieu\nde dire à le nous disons au, si le nom ne commence\npas par une voyelle. S'adonner au bien ; & au pluriel\nau lieu de dire à les, nous changeons l en u, ce qui\narrive souvent dans notre Langue, & nous disons\naux, soit que le nom commence par une voyelle ou\npar une consonne : aux hommes, aux femmes, &c.\nainsi au est autant que à le, & aux que à les.\nA est aussi une préposition inséparable qui entre\ndans la composition des mots ; donner, s'adonner,\nporter, apporter, mener, amener, &c. ce qui sert ou à\nl'énergie, ou à marquer d'autres points de vûe ajoûtés \nà la premiere signification du mot.\nIl faut encore observer qu'en Grec à marque\n1. Privation, & alors on l'appelle alpha privatif,\nce que les Latins ont quelquefois imité, comme dans\namens qui est compose de mens, entendement, intelligence,\n& de l'alpha privatif. Nous avons conservé\nplusieurs mots où se trouve l'alpha privatif, comme\namazone, asyle, abysme, &c. l'alpha privatif vient\nde la préposition ἄτερ, sine, sans.\n2. A en composition marque augmentation, & alors\nil vient de ἄγαν, beaucoup.\n3. A avec un accent circonflexe & un esprit doux\nἆ marque admiration, desir, surprise, comme notre\nah! ou ha! vox quiritantis, optantis, admirantis, dit\nRobertson. Ces divers usages de l'a en Grec ont\ndonné lieu à ce vers des Racines Greques\n\nA fait un, prive, augmente, admire.\nEn terme de Grammaire, & sur-tout de Grammaire Greque, on appelle a pur un a qui seul fait\nune syllabe comme en φιλία, amicitia. (F)"
%% Cell type:code id:pursuant-camel tags:
``` python
def getDomaineEnccre(volume, numero, classEDDA):
#print(volume, ' ', numero)
domaine = ""
ensemble_domaine = ""
entreeid = ""
try :
#entreeid = df_correspondances.loc[(df_correspondances['tome']==volume) & (df_correspondances['article']==numero)]['entreeid'][0]
d = df_correspondances.loc[(df_correspondances['tome']==volume) & (df_correspondances['article']==numero)].reset_index(drop=True)
entreeid = d['entreeid'][0]
json_url = urlopen("http://enccre.academie-sciences.fr/icefront/api/article/" + entreeid)
data = json.loads(json_url.read())
#print(data['annotations']['constit'][0]['domgen'][0])
try :
domaine = data['annotations']['constit'][0]['domgen'][0]
ensemble_domaine = get_key(domaine)
'''
for constit in data['annotations']['constit']:
domaine = constit['domgen'][0]
print(domaine)
for domgen in constit['domgen']:
domaine_multi += domgen + ";"
ensemble = get_key(domgen)
if ensemble:
ensemble_domaine_multi.append(ensemble)
#print(domaine)
'''
except KeyError:
pass
except KeyError:
pass
try :
if volume < 10:
txt_file = "/Users/lmoncla/Documents/Data/Corpus/EDDA/all_txt/volume0"+str(volume)+"-"+str(numero)+".txt"
else :
txt_file = "/Users/lmoncla/Documents/Data/Corpus/EDDA/all_txt/volume"+str(volume)+"-"+str(numero)+".txt"
txtContent = open(txt_file, "r").read()
classEDDA = str(classEDDA)
#supprime le désignant du texte
classEDDA_with_brcts = '('+ classEDDA +')'
txtContentWithoutClass = txtContent.replace(classEDDA_with_brcts, "")
txtContentWithoutClass = txtContentWithoutClass.replace(classEDDA, "")
firstParagraph = txtContentWithoutClass.split('\n \n')[0] ## ne fonctionne pas !
nbWords, txtContentWithoutClass = utils_preprocess_text(txtContentWithoutClass)
nbWords1stPara, firstParagraph = utils_preprocess_text(firstParagraph)
except FileNotFoundError:
txtContent = ""
txtContentWithoutClass = ""
firstParagraph = ""
nbWords = 0
nbWords1stPara = 0
#ensemble_domaine_multi = ';'.join(list(set(ensemble_domaine)))
#print(entreeid, domaine, ensemble_domaine, txtContent, txtContentWithoutClass, firstParagraph)
return pd.Series([entreeid, domaine, ensemble_domaine, txtContent, txtContentWithoutClass, firstParagraph, nbWords, nbWords1stPara])
```
%% Cell type:code id:36ae000f tags:
``` python
df.sample(5)
```
%% Output
volume numero head \
21735 5 454 Doyen des Avocats
28995 7 1532 GARBIN
5415 2 155 BAGUE
53231 13 1375 Prevôt des Bandes ou des Bandes françoises
27878 7 415 FOSSET
normClass classEDdA \
21735 unclassified unclassified
28995 Marine Marine.
5415 Histoire ancienne | Histoire moderne Hist. anc. & mod.
53231 unclassified unclassified
27878 Tonnelier | Economie rustique Econom. rustiq. ou Tonnelier.
author
21735 Boucher d'Argis
28995 Bellin
5415 Diderot
53231 Boucher d'Argis
27878 Diderot
%% Cell type:code id:christian-advice tags:
``` python
df['id_enccre'], df['domaine_enccre'], df['ensemble_domaine_enccre'], df['content'], df['contentWithoutClass'], df['firstParagraph'], df['nb_words'], df['nb_words_1stPara'] = df.apply(lambda row: getDomaineEnccre(row.volume, row.numero, row.classEDdA), axis=1).T.values
```
%% Cell type:code id:9ea62866 tags:
``` python
df.sample(5)
```
%% Output
volume numero head normClass classEDdA \
34467 8 3619 JOUBARBE Botanique Botan.
67530 16 1338 THYONÉ Mythologie Mytholog.
25346 6 408 Evêque de la cour unclassified unclassified
22927 5 1646 EGRATIGNÉE (Maniere) Peinture Peint.
66518 16 326 Tenaille Docimastique Docimastique.
author id_enccre domaine_enccre ensemble_domaine_enccre \
34467 Jaucourt v8-2770-0 botanique Histoire naturelle
67530 unsigned v16-815-0 mythologie Antiquité
25346 unsigned v6-181-7 histoireecclésiastique Religion
22927 Jaucourt v5-775-0 peinture Beaux-arts
66518 Jaucourt v16-170-1 docimasie Chimie
content \
34467 JOUBARBE, s. f. (Botan.) Sedum, genre de plant...
67530 THYONÉ, (Mytholog.) c'est, selon Ovide, le\nno...
25346 Evêque de la cour ; on donne quelquetois ce\nt...
22927 EGRATIGNÉE, (Maniere) Peint. espece de\npeintu...
66518 Tenaille, s. f. (Docimastique.) entre les uste...
contentWithoutClass \
34467 joubarbe s. f. sedum genre plante \n fleur r...
67530 thyoné ovide \n nom sou lequel sémélé mise j...
25346 evêque cour donne quelquetois \n titre grand a...
22927 egratignée maniere espece \n peinture fresqu...
66518 tenaille s. f. ustensile \n art essai rend i...
firstParagraph nb_words
34467 joubarbe s. f. sedum genre plante \n fleur r... 854
67530 thyoné ovide \n nom sou lequel sémélé mise j... 47
25346 evêque cour donne quelquetois \n titre grand a... 20
22927 egratignée maniere espece \n peinture fresqu... 256
66518 tenaille s. f. ustensile \n art essai rend i... 753
%% Cell type:code id:daily-office tags:
``` python
# nombre d'articles non classés par ENCCRE (à partir de la correspondance automatique)
len(df.loc[(df['domaine_enccre']=="")])
```
%% Output
11640
%% Cell type:code id:suited-methodology tags:
``` python
# nombre d'article non classés par ARTFL
len(df.loc[(df['normClass']=="unclassified")])
```
%% Output
12685
%% Cell type:code id:special-investigation tags:
``` python
# nombre de classe ENCCRE
classes_enccre = df.groupby(['domaine_enccre']).count()
classes_enccre.head()
```
%% Output
volume numero head normClass classEDdA author \
domaine_enccre
11640 11640 11640 11636 11637 11640
acoustique 12 12 12 12 12 12
agriculture 112 112 112 112 112 112
aiguilletierepinglier 114 114 114 114 114 114
alchimie 24 24 24 24 24 24
id_enccre ensemble_domaine_enccre content \
domaine_enccre
11640 11640 11640
acoustique 12 12 12
agriculture 112 112 112
aiguilletierepinglier 114 0 114
alchimie 24 24 24
contentWithoutClass firstParagraph nb_words
domaine_enccre
11640 11640 11640
acoustique 12 12 12
agriculture 112 112 112
aiguilletierepinglier 114 114 114
alchimie 24 24 24
%% Cell type:code id:legendary-independence tags:
``` python
len(classes_enccre)
```
%% Output
312
%% Cell type:code id:fourth-involvement tags:
``` python
# enregistrement du dataframe dans un fichier tsv
df.to_csv('../../../Data/EDdA-Classification/EDdA_dataframe_withContent.tsv', sep='\t', index=False)
```
%% Cell type:code id:framed-sodium tags:
``` python
df = pd.read_csv('../../../Data/EDdA-Classification/EDdA_dataframe_withContent.tsv', sep='\t')
```
%% Cell type:code id:tutorial-savannah tags:
``` python
len(df)
```
%% Output
74190
%% Cell type:code id:minus-waterproof tags:
``` python
df.dropna(subset = ['content', 'contentWithoutClass', 'firstParagraph', 'ensemble_domaine_enccre'], inplace= True)
```
%% Cell type:code id:scenic-sugar tags:
``` python
len(df)
```
%% Output
61362
%% Cell type:code id:seasonal-suspect tags:
``` python
# enregistrement du dataframe dans un fichier tsv
#df.to_csv('../../../Data/EDdA-Classification/EDdA_dataframe_withContent.tsv',sep='\t',index=False)
```
%% Cell type:code id:opposed-binding tags:
``` python
######
#df = pd.read_csv('../../../Data/EDdA-Classification/EDdA_dataframe_withContent.tsv', sep='\t')
```
%% Cell type:code id:endless-cathedral tags:
``` python
df.shape
```
%% Output
(61362, 13)
%% Cell type:code id:4062b7f5 tags:
``` python
df.head()
```
%% Output
volume numero head normClass \
3 1 5 A, a & a Grammaire
4 1 6 A unclassified
5 1 7 A unclassified
8 1 10 A, numismatique ou monétaire unclassified
9 1 11 A, lapidaire unclassified
classEDdA author id_enccre \
3 ordre Encyclopéd. Entend. Science de l'homme, ... Dumarsais5 v1-1-0
4 unclassified Dumarsais5 v1-1-1
5 unclassified Dumarsais v1-1-2
8 unclassified Mallet v1-1-5
9 unclassified Mallet v1-1-6
domaine_enccre ensemble_domaine_enccre \
3 grammaire Grammaire
4 grammaire Grammaire
5 grammaire Grammaire
8 numismatique Médailles
9 inscriptions Histoire
content \
3 A, a & a s.m. (ordre Encyclopéd.\nEntend. Scie...
4 A, mot, est 1. la troisieme personne du présen...
5 A, préposition vient du latin à, à dextris, à ...
8 A, numismatique ou monétaire, sur le revers de...
9 A, lapidaire, dans les anciennes inscriptions ...
contentWithoutClass \
3 a a a s.m ordre encyclopéd \n entend science h...
4 a mot 1 troisieme personne présent \n indicati...
5 a préposition vient latin dextris sinistris dr...
8 a numismatique monétaire revers \n ancien méda...
9 a lapidaire ancien inscription \n marbre c. si...
firstParagraph nb_words
3 a a a s.m ordre encyclopéd \n entend science h... 1092
4 a mot 1 troisieme personne présent \n indicati... 381
5 a préposition vient latin dextris sinistris dr... 3067
8 a numismatique monétaire revers \n ancien méda... 156
9 a lapidaire ancien inscription \n marbre c. si... 122
%% Cell type:code id:corrected-batman tags:
``` python
df = df.loc[(df['nb_words']>=15)]
```
%% Cell type:code id:documentary-prince tags:
``` python
df.shape
```
%% Output
(58509, 13)
%% Cell type:code id:opened-november tags:
``` python
from sklearn.model_selection import train_test_split
train_x, validation_x, train_y, validation_y = train_test_split(df, df["ensemble_domaine_enccre"], test_size=0.2, random_state=42, stratify = df["ensemble_domaine_enccre"] )
```
%% Cell type:code id:noticed-evanescence tags:
``` python
train_x.shape
```
%% Output
(46807, 13)
%% Cell type:code id:welcome-homework tags:
``` python
validation_x.shape
```
%% Output
(11702, 13)
%% Cell type:code id:hearing-moses tags:
``` python
train_x.to_csv('../../../Data/EDdA-Classification/training_set.tsv',sep='\t',index=False)
validation_x.to_csv('../../../Data/EDdA-Classification/test_set.tsv',sep='\t',index=False)
```
%% Cell type:code id:exterior-praise tags:
``` python
df.groupby(['ensemble_domaine_enccre']).size().reset_index(name='counts')
```
%% Output
ensemble_domaine_enccre counts
0 Agriculture - Economie rustique 1163
1 Anatomie 1073
2 Antiquité 1362
3 Architecture 1389
4 Arts et métiers 563
5 Beaux-arts 429
6 Belles-lettres - Poésie 1031
7 Blason 539
8 Caractères 114
9 Chasse 581
10 Chimie 520
11 Commerce 1879
12 Droit - Jurisprudence 6419
13 Economie domestique 135
14 Grammaire 2258
15 Géographie 13104
16 Histoire 3080
17 Histoire naturelle 4814
18 Jeu 282
19 Marine 2076
20 Maréchage - Manège 524
21 Mathématiques 698
22 Mesure 184
23 Militaire (Art) - Guerre - Arme 1289
24 Minéralogie 111
25 Monnaie 317
26 Musique 685
27 Médailles 117
28 Médecine - Chirurgie 2275
29 Métiers 5254
30 Pharmacie 326
31 Philosophie 470
32 Physique - [Sciences physico-mathématiques] 1324
33 Politique 116
34 Pêche 210
35 Religion 1641
36 Spectacle 48
37 Superstition 109
%% Cell type:code id:unable-agenda tags:
``` python
train_x.groupby(['ensemble_domaine_enccre']).size().reset_index(name='counts')
```
%% Output
ensemble_domaine_enccre counts
0 Agriculture - Economie rustique 930
1 Anatomie 858
2 Antiquité 1090
3 Architecture 1111
4 Arts et métiers 451
5 Beaux-arts 343
6 Belles-lettres - Poésie 825
7 Blason 431
8 Caractères 91
9 Chasse 465
10 Chimie 416
11 Commerce 1503
12 Droit - Jurisprudence 5135
13 Economie domestique 108
14 Grammaire 1806
15 Géographie 10483
16 Histoire 2464
17 Histoire naturelle 3851
18 Jeu 226
19 Marine 1661
20 Maréchage - Manège 419
21 Mathématiques 558
22 Mesure 147
23 Militaire (Art) - Guerre - Arme 1031
24 Minéralogie 89
25 Monnaie 254
26 Musique 548
27 Médailles 94
28 Médecine - Chirurgie 1820
29 Métiers 4203
30 Pharmacie 261
31 Philosophie 376
32 Physique - [Sciences physico-mathématiques] 1059
33 Politique 93
34 Pêche 168
35 Religion 1313
36 Spectacle 39
37 Superstition 87
%% Cell type:code id:potential-friday tags:
``` python
validation_x.groupby(['ensemble_domaine_enccre']).size().reset_index(name='counts')
```
%% Output
ensemble_domaine_enccre counts
0 Agriculture - Economie rustique 233
1 Anatomie 215
2 Antiquité 272
3 Architecture 278
4 Arts et métiers 112
5 Beaux-arts 86
6 Belles-lettres - Poésie 206
7 Blason 108
8 Caractères 23
9 Chasse 116
10 Chimie 104
11 Commerce 376
12 Droit - Jurisprudence 1284
13 Economie domestique 27
14 Grammaire 452
15 Géographie 2621
16 Histoire 616
17 Histoire naturelle 963
18 Jeu 56
19 Marine 415
20 Maréchage - Manège 105
21 Mathématiques 140
22 Mesure 37
23 Militaire (Art) - Guerre - Arme 258
24 Minéralogie 22
25 Monnaie 63
26 Musique 137
27 Médailles 23
28 Médecine - Chirurgie 455
29 Métiers 1051
30 Pharmacie 65
31 Philosophie 94
32 Physique - [Sciences physico-mathématiques] 265
33 Politique 23
34 Pêche 42
35 Religion 328
36 Spectacle 9
37 Superstition 22
%% Cell type:code id:demanding-essay tags:
``` python
```
%% Cell type:code id:vanilla-italy tags:
``` python
```
%% Cell type:code id:verified-compression tags:
``` python
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment