def updateDisplay( self ): bs = parseWhitelist( self.blacklist.text() ) ws = parseWhitelist( self.whitelist.text() ) for m in self.db.db.keys(): if m.pos in bs: self.db.db.pop( m ) elif ws and m.pos not in ws: self.db.db.pop( m ) if self.col4Mode.isChecked(): self.morphDisplay.setText( self.db.showMs() ) else: self.morphDisplay.setText( u'\n'.join( [ m.base for m in self.db.db ] ) ) self.analysisDisplay.setText( self.db.analyze2str() )
def onGo( self ): ws = parseWhitelist( self.whitelist.text() ) bs = parseWhitelist( self.blacklist.text() ) mFmt = unicode( self.matureFmt.text() ) kFmt = unicode( self.knownFmt.text() ) uFmt = unicode( self.unknownFmt.text() ) inFile = QFileDialog.getOpenFileName( caption='Dueling subs to process', directory=dbsPath ) if not inFile: return outFile = QFileDialog.getSaveFileName( caption='Save adaptive subs to', directory=dbsPath ) if not outFile: return adaptiveSubs.run( inFile, outFile, ws, bs, mFmt, kFmt, uFmt ) infoMsg( 'Completed successfully' )
def onGo( self ): ws = parseWhitelist( self.whitelist.text() ) bs = parseWhitelist( self.blacklist.text() ) mFmt = unicode( self.matureFmt.text() ) kFmt = unicode( self.knownFmt.text() ) uFmt = unicode( self.unknownFmt.text() ) inFile = QFileDialog.getOpenFileName( caption='Dueling subs to process', directory=util.dbPath ) if not inFile: return outFile = QFileDialog.getSaveFileName( caption='Save adaptive subs to', directory=util.dbPath ) if not outFile: return adaptiveSubs.run( inFile, outFile, ws, bs, mFmt, kFmt, uFmt ) infoMsg( 'Completed successfully' )
def mkAll( self ): # IO () log( 'Getting initial all.db...' ) if not hasattr( self, '_allDb' ): try: self._allDb = M.MorphDb( self.allPath ) debug( ' * Updating existing all.db' ) except IOError: self._allDb = M.MorphDb() debug( ' * Creating new all.db from scratch' ) allDb = self._allDb log( '...done' ) mp = M.mecab() # pre-cache lookups fieldNames = self.cfg['morph fields'] whitelist, blacklist = parseWhitelist( self.cfg['whitelist'] ), parseWhitelist( self.cfg['blacklist'] ) fid2cardsDb = self.fid2cardsDb() fidDb = allDb.fidDb() locDb = allDb.locDb() fs = self.getFacts() i, lfs = 0, len( fs ) start = time.time() last = time.time() for f in fs: mats = [ c.interval for c in fid2cardsDb[ f.id ] ] for fieldName in fieldNames: try: fieldValue = normalizeFieldValue( f[ fieldName ] ) except KeyError: # if fact doesn't have the field just skip it continue try: # existing location loc = fidDb[ (f.id, fieldName) ] # new loc only; no morpheme change if loc.fieldValue == fieldValue and loc.maturities != mats: debug(' .mats for %d[%s]' % ( f.id, fieldName ) ) newLoc = M.AnkiDeck( f.id, fieldName, fieldValue, self.deckPath, self.deckName, mats ) ms = locDb.pop( loc ) locDb[ newLoc ] = ms # new loc and new morphemes elif loc.fieldValue != fieldValue: debug(' .morphs for %d[%s]' % ( f.id, fieldName ) ) newLoc = M.AnkiDeck( f.id, fieldName, fieldValue, self.deckPath, self.deckName, mats ) ms = M.getMorphemes( mp, fieldValue, ws=whitelist, bs=blacklist ) locDb.pop( loc ) locDb[ newLoc ] = ms except KeyError: # new location loc = M.AnkiDeck( f.id, fieldName, fieldValue, self.deckPath, self.deckName, mats ) ms = M.getMorphemes( mp, fieldValue, ws=whitelist, bs=blacklist ) if ms: debug(' .loc for %d[%s]' % ( f.id, fieldName ) ) locDb[ loc ] = ms i += 1 if i % 100 == 0: log(' %d / %d = %d%% in %f sec' % ( i, lfs, 100.*i/lfs, time.time()-last ) ) last = time.time() log( 'Proccessed all facts in %f sec. Now saving...' % ( time.time()-start ) ) allDb.clear() allDb.addFromLocDb( locDb ) allDb.save( self.allPath ) self.cfg['last db update'][ self.allPath ] = time.time() self.cfg['last all.db update took'] = time.time() - start log( '...done' ) sigterm( mp ) return self._allDb