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