première mise à jour pour python 3
[iramuteq] / autres / putcorpusindb.py
1 # -*- coding: utf-8 -*-
2
3 #------------------------------------
4 # import des modules python
5 #------------------------------------
6 import sqlite3
7 import codecs
8 import os
9 import shelve
10 from time import time
11
12
13 #------------------------------------
14 # execution directe,
15 #definition de fonction,
16 #encore execution directe
17 # ???
18 #------------------------------------
19
20 corpus_out = 'corpus.txt'
21
22 with codecs.open(corpus_out ,'r', 'utf8') as f:
23     content = f.read()
24     sep = '\n\n'
25     ucis_paras_uces = [[[uce for uce in para.splitlines()] for para in uci.split('$$$')] for uci in content.split(sep)]
26 print(ucis_paras_uces[0])
27 #db = 'corpus.db'
28 #conn = sqlite3.connect(db)
29 #c = conn.cursor()
30 #conn.text_factory = str
31 #c = conn.cursor()
32 #c.execute('''CREATE TABLE if not exists uce (id INTEGER PRIMARY KEY, iduci INTEGER, idpara INTEGER, content TEXT)''')
33 #c = conn.cursor()
34 idpara = -1
35 iduce = -1
36 uce_uci_para = {}
37 para_uci = {}
38 formes = {}
39
40 def addforme(word, formes, iduce) :
41     if word in formes :
42         formes[word][0] += 1
43         if iduce in formes[word][1] :
44             formes[word][1][iduce] += 1
45         else :
46             formes[word][1][iduce] = 1
47     else :
48         formes[word] = [1, {iduce:1}]
49
50 for i, uci in enumerate(ucis_paras_uces) :
51     for para in uci :
52         idpara += 1
53         para_uci[idpara] = i
54         for uce in para :
55             iduce += 1
56             uce_uci_para[iduce] = [i, idpara]
57             fileout = os.path.join('uce', '%i.txt' % iduce)
58             with open(fileout, 'w') as f :
59                 f.write(uce)
60             uce = uce.split()
61             for word in uce :
62                 addforme(word, formes, iduce)
63 t1 = time() #chronométrage
64 d = shelve.open('shelves.db')
65 d['formes']=formes
66 d.close()
67 print(time() - t1) #chronométrage
68 t2 = time() #chronométrage
69 d = shelve.open('shelves.db')
70 formes = d['formes']
71 d.close()
72 print(time() - t2) #chronométrage
73 t3 = time() #chronométrage
74 word = formes['les']
75 ucis = [uce_uci_para[iduce][0] for iduce in word[1]]
76 word[0]
77 print(time() - t3) #chronométrage
78
79 #c.execute('INSERT INTO uce values (?, ?, ?, ?)', (iduce, i, idpara, uce))
80 #conn.commit()