Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/dict.py
blob: ac3e6ad41aa4338bdc738c942586214842fac2ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/env python
import sys
# Provides the API to control the dictionary.

global __debug
global DBname
global word_list


__debug = True
DBname = "dict.db"
word_list = []
#strings which are tag in XML

class dict:

    def __init__(self):

	import sqlite3
	self.conn = sqlite3.connect(DBname, isolation_level=None)
	# Turn on autocommit mode
	# Set isolation_level to "IMMEDIATE"
	self.conn.isolation_level = "IMMEDIATE"
	self.cur = self.conn.cursor()
	self.numwords = -1
	self.wordid_list = []
	self.length = 0

    def getnumwords(self, level = 0):
	if self.numwords == -1:
	    if level == 0:
		self.cur.execute("SELECT COUNT(wordid) from las_word")
	    else:
		self.cur.execute("SELECT COUNT(wordid) from las_word where length = ?", (level, ))
	    self.numwords = self.cur.fetchone()
	return self.numwords


    def getrandomwordid(self, length=0, numwords = 1):
	if self.wordid_list == [] or self.length != length:
	    if length == 0:
		self.cur.execute("SELECT wordid from las_word")
	    else:
		self.length = length
		self.cur.execute("SELECT wordid from las_word where length = ?", (length, ))
	    self.wordid_list = self.cur.fetchall()
	#count = self.wordid_list.count
	#count = len(self.wordid_list)
	import random
	randids = random.sample(self.wordid_list , numwords)
	return randids

class word:

    def __init__(self, identifier=None, value= None):
	import sqlite3
	self.conn = sqlite3.connect(DBname, isolation_level=None)
	# Turn on autocommit mode
	# Set isolation_level to "IMMEDIATE"
	self.conn.isolation_level = "IMMEDIATE"
	self.cur = self.conn.cursor()
	if identifier == "las_word_id":
	    self.las_word_id = value
	    self.cur.execute("SELECT * from las_word where laswid = ?", (value,))
	elif identifier == "wordid":
	    self.wordid = value
	    self.cur.execute("SELECT * from las_word where wordid = ?", (value,))
	elif identifier == "word":
	    self.word = value
	    self.cur.execute("SELECT * from las_word where lemma = ?", (value,))
	elif identifier == None or value == None:
	    self.las_word_id = None
	    self.wordid = None
	    self.word = None
	    self.length = None
	    return
	else:
	    return "Invalid Usage"

	(laswid, wordid, lemma, length) = self.cur.fetchone()
	self.las_word_id = laswid
	self.wordid = wordid
	self.word = lemma
	self.length = length

    def getword(self):
	return self.word

    def getwordid(self):
	return self.wordid

    def getsynsetid(self):
	self.synsetid_list = []
	self.cur.execute("SELECT * from las_sense where wordid = ?", (self.wordid,))
	for (wordid, synsetid, rank) in self.cur:
	    self.synsetid_list.append(synsetid)
	return self.synsetid_list

    def getdef(self):
	self.def_list = []
	try:
	    self.synsetid_list
	except AttributeError:
	    self.getsynsetid()
	for synsetid in self.synsetid_list:
	    self.cur.execute("SELECT * from las_synset where synsetid = ?", (synsetid,) )
	    for (synsetid, pos, definition) in self.cur:
		self.def_list.append( (pos, definition))
	return self.def_list

    def getusage(self):
	try:
	    self.synsetid_list
	except AttributeError:
	    self.getsynsetid()
	self.usage_list = []
	for synsetid in self.synsetid_list:
	    self.cur.execute("SELECT * from las_sample where synsetid = ?", (synsetid,))
	    for (synsetid, sampleid, sample) in self.cur:
		self.usage_list.append( (sample))
	return self.usage_list


if __name__ == "__main__":
    k = dict()
    num_words = k.getnumwords()
    print num_words

    wordid = k.getrandomwordid(15) #will return word of length 15
    l = word("wordid", wordid )

    print l.getword()
    l.getsynsetid()
    print l.getdef()
    print l.getusage()