Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAssim <assim@localhost.localdomain>2008-08-16 08:20:48 (GMT)
committer Assim <assim@localhost.localdomain>2008-08-16 08:20:48 (GMT)
commit501166abada103cb6a98b492e16db0c9a70c1c8a (patch)
treef076ec454bbb1c36c4aba4bc984df7244c35c107
parent6522cb7a7362f88af476b24e0dbc584c8fb4e792 (diff)
Final version. with sorted words
-rwxr-xr-xListenSpell.py4
-rw-r--r--[-rwxr-xr-x]dict.dbbin13942784 -> 14102528 bytes
-rwxr-xr-xdict.py103
-rwxr-xr-xlas.py4
4 files changed, 77 insertions, 34 deletions
diff --git a/ListenSpell.py b/ListenSpell.py
index 24a3f46..a44a4ef 100755
--- a/ListenSpell.py
+++ b/ListenSpell.py
@@ -335,7 +335,7 @@ class ListenSpell(activity.Activity):
self.las.ans_incorrect(self.wordid)
self.las.say_text("Incorrect")
self.display_console("Incorrect. The correct spelling is.. ")
- self.las.say_text("The correct spelling is..\n")
+ self.las.say_text("The correct spelling is")
self.shout(self.elem)
self.update_all()
self.play_game("next word")
@@ -499,7 +499,7 @@ class ListenSpell(activity.Activity):
if mode == "start":
self.this_level_size = 7
self.this_level_max_error = 3
- self.wordid_list = self.las.load_wordid(self.this_level_size + self.this_level_max_error)
+ self.wordid_list = self.las.load_wordid()
self.this_level_num_words = len(self.wordid_list)
self.this_level_words_left = self.this_level_num_words
self.word_index = 1
diff --git a/dict.db b/dict.db
index c3a08e3..99b761c 100755..100644
--- a/dict.db
+++ b/dict.db
Binary files differ
diff --git a/dict.py b/dict.py
index c821aa2..ec7623c 100755
--- a/dict.py
+++ b/dict.py
@@ -7,11 +7,55 @@ import sqlite3
global __debug
__debug = True
+# ********* Do not remove this comment ***********
+ # This is mapping of level with length and frequency
+ #619 (252) 3 (1, 30000000000, 302000000) (1)
+ #1984(868) 4 (1, 26400000000, 1650000000), (2, 1620000000, 261000000), (3, 260000000, 110000000)(1,2,3)
+ #3156(1740) 5 (2, 21700000000, 371000000), (3, 368000000, 105000000)(4, 104000000, 38700000)(2,3,4)
+ #5618(2700) 6 (3,19800000000, 176000000), (4,175000000,51500000), (5,51400000,20300000)(3,4,5)
+ #6681(2500) 7 (4,19100000000,203000000),(5,201000000,59300000),(6,59100000,25900000)(4,5,6)
+ #6878(3000) 8 (5,15000000000,89600000)(6,89400000,28700000)(7,28700000,11600000)(5,6,7)
+ #6274(3000) 9 (6,21700000000,57000000),(7,56900000,16000000),(8,16000000,6600000)(6,7,8)
+ #5017(2400) 10(7,5330000000,44100000),(8,44100000,13100000)(9,13100000,5150000)(7,8,9)
+ #3571(1500) 11(8,15300000000,42800000),(9,42800000,12100000)(10,12000000,5020000)(8,9,10)
+ #2341(1050) 12(9,3240000000,27500000), (10,27400000,8270000), (11,8230000,3400000) (9,10,11)
+ #1521(630) 13(10,6540000000,12000000),(11,12000000,2990000)(10,11)
+ #774(270) 14(11,1540000000,3030000)(11)
+ #413(245) 15(12,391000000,685000)(12)
+ #187(90) 16(13,75300000,740000)(13)
+ #100(70) 17(14,76700000,1740)(14)
+ #20 18(15,19200000,2970)(15)
+ #11 19(15,5600000,1990)(15)
+ #6 20(15,87700000,812000)(15)
+ #1 21(15,330000,330000)(15)
+ #1 23(15,638000,638000)(15)
+
+
+
class Dict:
+
+
def __init__(self, sqliteDB = None):
-
+
+ self.level_map = {'1':{'3':{'s':30000000000, 'e':302000000}, '4':{'s':26400000000, 'e':1650000000 }},
+ '2':{'4':{'s':1620000000, 'e':261000000}, '5':{'s':21700000000, 'e':371000000 }},
+ '3':{'4':{'s':260000000, 'e':110000000}, '5':{'s':368000000, 'e':105000000 }, '6':{'s':19800000000, 'e':176000000}},
+ '4':{'5':{'s':104000000,'e':38700000}, '6':{'s':175000000,'e':51500000}, '7':{'s':19100000000,'e':203000000}},
+ '5':{'6':{'s':51400000,'e':20300000}, '7':{'s':201000000, 'e':59300000}, '8':{'s':15000000000,'e':89600000}},
+ '6':{'7':{'s':59100000,'e':25900000}, '8':{'s':89400000,'e':28700000}, '9':{'s':21700000000,'e':57000000}},
+ '7':{'8':{'s':28700000,'e':11600000}, '9':{'s':56900000,'e':16000000}, '10':{'s':5330000000,'e':44100000}},
+ '8':{'9':{'s':16000000,'e':6600000}, '10':{'s':44100000,'e':13100000}, '11':{'s':15300000000,'e':42800000}},
+ '9':{'10':{'s':13100000,'e':5150000}, '11':{'s':42800000,'e':12100000}, '12':{'s':3240000000,'e':27500000}},
+ '10':{'11':{'s':12000000,'e':5020000}, '12':{'s':27400000,'e':8270000}, '13':{'s':6540000000,'e':12000000}},
+ '11':{'12':{'s':8230000,'e':3400000}, '13':{'s':12000000,'e':2990000}, '14':{'s':1540000000,'e':3030000}},
+ '12':{'15':{'s':391000000,'e':685000}},
+ '13':{'16':{'s':75300000,'e':740000}},
+ '14':{'17':{'s':76700000,'e':1740}},
+ '15':{'18':{'s':19200000,'e':2970}, '19':{'s':5600000,'e':1990}, '20':{'s':87700000,'e':81200}, '21':{'s':330000, 'e':330000}, '23':{'s':638000,'e':638000}}
+ } # ********* Do not remove this ***********
+
if sqliteDB == None:
return False
global DBname
@@ -23,41 +67,40 @@ class Dict:
self.cur = self.conn.cursor()
self.num_words = -1
self.wordid_list = []
- self.length = 0
-
- def get_num_words(self, length = 0):
- if self.num_words == -1:
- if length == 0:
- self.cur.execute("SELECT COUNT(wordid) from las_word")
- else:
- self.cur.execute("SELECT COUNT(wordid) from las_word where length = ?", (length, ))
- self.num_words = self.cur.fetchone()
- return self.num_words
+ self.level = 0
+
+ def get_random_wordid(self, level, numwords=0):
+ if self.wordid_list == [] or self.level != level:
+ lev = str(level)
+ if self.level_map.has_key(lev):
+ self.level = level
+ self.wordid_list = []
+ it = self.level_map[lev].iterkeys()
+ for k in it:
+ l = k #self.level_map[level]
+ #print l
+ uf = self.level_map[lev][k]['s'] # upper frequency
+ #print uf
+ lf = self.level_map[lev][k]['e'] # lower frequency
+ #print lf
+ self.cur.execute("SELECT wordid from las_word where length = ? and exclude = 0 and freq >= ? and freq <= ?", (l, lf, uf ))
+ self.wordid_list.extend( self.cur.fetchall())
+ #count = self.wordid_list.count
+ print len(self.wordid_list)
+ if numwords <= 0:
+ random.shuffle(self.wordid_list)
+ return self.wordid_list
+ else:
+ randids = random.sample(self.wordid_list , numwords)
+ return randids
def exit_game(self):
self.conn.close()
-
-
- def get_random_wordid(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)
-
- randids = random.sample(self.wordid_list , numwords)
- return randids
def get_DB_name(self):
return
- def level_map(self, level):
- level_1 = { 3:{s:30000000000, e:1460000000 }, 4:{s:23, e:312} }
- pass
+
class Word:
@@ -88,7 +131,7 @@ class Word:
else:
return "Invalid Usage"
- (laswid, wordid, lemma, length, freq) = self.cur.fetchone()
+ (laswid, wordid, lemma, length, freq, exclude) = self.cur.fetchone()
self.las_word_id = laswid
self.wordid = wordid
self.word = lemma
diff --git a/las.py b/las.py
index 92ecb0d..04bf17e 100755
--- a/las.py
+++ b/las.py
@@ -123,10 +123,10 @@ class Listenspell():
# Fallback for other operating systems.
print '\n' * numlines
- def load_wordid(self, num_words):
+ def load_wordid(self, num_words = 0):
temp_list = []
self.wordid_list = []
- temp_list = self.dict_obj.get_random_wordid(length = self.skill_level,numwords = num_words)
+ temp_list = self.dict_obj.get_random_wordid(self.skill_level, num_words)
for(wordid, ) in temp_list:
self.wordid_list.append(wordid)
return self.wordid_list