import hickle as hkl
|
|
|
|
import FASTsearch
|
|
|
|
|
|
class PluritonUpdater(object):
|
|
|
|
def __init__(self):
|
|
|
|
self.ole = 1
|
|
|
|
# Input: csv file with the form ['eine', 'schwere', 'Sprache'] , ['in', 'leicht'] for each line
|
|
# Output: hkl dump of array in form [[['eine', 'schwere', 'Sprache'],['in', 'leicht']],[..]]
|
|
|
|
def create_hklDB_from_csv(self, csvDbDir):
|
|
|
|
with open(csvDbDir) as lines:
|
|
|
|
TranslationsDB_All = []
|
|
|
|
for line in lines:
|
|
|
|
TranslationsDB_All.append(list(eval(line)))
|
|
|
|
|
|
#print(ShortsDB_All)
|
|
|
|
#print(ShortsDB_All[0][0])
|
|
|
|
|
|
hkldbTranslations1 = []
|
|
hkldbTranslations2 = []
|
|
counter = 0
|
|
for n in range(len(TranslationsDB_All)):
|
|
|
|
counter += 1
|
|
#if counter % 1000 == 0:
|
|
#print(counter)
|
|
|
|
hkldbTranslations1.append([TranslationsDB_All[n][0][0]])
|
|
hkldbTranslations2.append([TranslationsDB_All[n][1][0]])
|
|
|
|
|
|
|
|
#print(hkldbTranslations1, TranslationsDB_All)
|
|
#print('creating the hkl dump of TranslationsDBAll')
|
|
hkl.dump(TranslationsDB_All, 'hkldbTranslations_All.hkl', mode='w', compression='gzip')
|
|
#print('done..')
|
|
|
|
#print('Creating the hkl dump of TranslationsDB')
|
|
hkl.dump(hkldbTranslations1, 'hkldbTranslations1.hkl', mode='w', compression='gzip')
|
|
hkl.dump(hkldbTranslations2, 'hkldbTranslations2.hkl', mode='w', compression='gzip')
|
|
#print('done..')
|
|
|
|
return 'done'
|
|
|
|
|
|
def load_DB_into_FASTsearch_and_generate_BOW(self):
|
|
|
|
print('loading the hkldbTranslations1...')
|
|
self.hkldbTranslations1 = hkl.load('hkldbTranslations1.hkl')
|
|
print('done')
|
|
|
|
print('loading the hkldbTranslations2...')
|
|
self.hkldbTranslations2 = hkl.load('hkldbTranslations2.hkl')
|
|
print('done')
|
|
|
|
print('loading hkldbTranslations 1 into FASTsearch..')
|
|
self.fsearch1 = FASTsearch.FASTsearch('hkldbTranslations1.hkl')
|
|
print('done')
|
|
|
|
print('loading hkldbTranslations 2 into FASTsearch..')
|
|
self.fsearch2 = FASTsearch.FASTsearch('hkldbTranslations2.hkl')
|
|
print('done')
|
|
|
|
print('generating BoW Model 1..')
|
|
self.fsearch1.Gen_BoW_Model(50000, "word", punctuation = False)
|
|
print('done')
|
|
|
|
print('generating BoW Model 2..')
|
|
self.fsearch2.Gen_BoW_Model(50000, "word", punctuation = False)
|
|
print('done')
|
|
|
|
return 'done'
|
|
|
|
def loadModels(self):
|
|
|
|
print('loading the hkldbTranslations1...')
|
|
self.hkldbTranslations1 = hkl.load('hkldbTranslations1.hkl')
|
|
print('done')
|
|
|
|
print('loading the hkldbTranslations2...')
|
|
self.hkldbTranslations2 = hkl.load('hkldbTranslations2.hkl')
|
|
print('done')
|
|
|
|
print('loading hkldbTranslations 1 into FASTsearch..')
|
|
self.fsearch1 = FASTsearch.FASTsearch('hkldbTranslations1.hkl')
|
|
print('done')
|
|
|
|
print('loading hkldbTranslations 2 into FASTsearch..')
|
|
self.fsearch2 = FASTsearch.FASTsearch('hkldbTranslations2.hkl')
|
|
print('done')
|
|
|
|
print('loading the bow model 1')
|
|
self.fsearch1.Load_BoW_Model('bagofwordshkldbTranslations1.pkl', 'DataBaseOneZeroshkldbTranslations1.hkl')
|
|
print('done')
|
|
|
|
print('loading the bow model 2')
|
|
self.fsearch2.Load_BoW_Model('bagofwordshkldbTranslations2.pkl', 'DataBaseOneZeroshkldbTranslations2.hkl')
|
|
print('done')
|
|
|
|
|
|
return 'done'
|
|
|
|
def searchNearest2Translate(self, text):
|
|
|
|
|
|
bestmatches2, matchindex2 = self.fsearch1.search_with_highest_multiplikation_Output(text, 1)
|
|
|
|
|
|
|
|
DifficultText = self.hkldbTranslations1[matchindex2[0]][0].split()
|
|
LeichterText = self.hkldbTranslations2[matchindex2[0]][0].split()
|
|
|
|
return DifficultText, LeichterText
|
|
|