def more_like_this(self, unit, top=5): """Find closely similar units.""" if settings.MT_WEBLATE_LIMIT >= 0: queue = multiprocessing.Queue() proc = multiprocessing.Process( target=more_like_queue, args=(unit.pk, unit.source, top, queue) ) proc.start() proc.join(settings.MT_WEBLATE_LIMIT) if proc.is_alive(): proc.terminate() if queue.empty(): raise Exception( 'Request for more like {0} timed out.'.format(unit.pk) ) more_results = queue.get() else: more_results = more_like(unit.pk, unit.source, top) same_results = fulltext_search( unit.get_source_plurals()[0], [unit.translation.language.code], {'source': True} ) return self.filter( pk__in=more_results - same_results, translation__language=unit.translation.language, translated=True ).exclude( pk=unit.id )
def more_like_this(self, unit, top=5): """ Finds closely similar units. """ if appsettings.MT_WEBLATE_LIMIT >= 0: queue = multiprocessing.Queue() proc = multiprocessing.Process( target=more_like_queue, args=(unit.pk, unit.source, top, queue) ) proc.start() proc.join(appsettings.MT_WEBLATE_LIMIT) if proc.is_alive(): proc.terminate() if queue.empty(): raise Exception('Request timed out.') more_results = queue.get() else: more_results = more_like(unit.pk, unit.source, top) same_results = fulltext_search( unit.get_source_plurals()[0], unit.translation.language.code, {'source': True} ) return self.filter( pk__in=more_results - same_results, translation__language=unit.translation.language, translated=True ).exclude( pk=unit.id )
def more_like_this(self, unit, top=5): """Find closely similar units.""" if settings.MT_WEBLATE_LIMIT >= 0: queue = multiprocessing.Queue() proc = multiprocessing.Process( target=more_like_queue, args=(unit.pk, unit.source, top, queue) ) proc.start() proc.join(settings.MT_WEBLATE_LIMIT) if proc.is_alive(): proc.terminate() if queue.empty(): raise Exception( 'Request for more like {0} timed out.'.format(unit.pk) ) more_results = queue.get() else: more_results = more_like(unit.pk, unit.source, top) return self.filter( pk__in=more_results, translation__language=unit.translation.language, state__gte=STATE_TRANSLATED, )
def more_like_this(self, unit, top=5): """Find closely similar units.""" source = unit.get_source_plurals()[0] if settings.MT_WEBLATE_LIMIT >= 0: queue = multiprocessing.Queue() proc = multiprocessing.Process(target=more_like_queue, args=(unit.pk, unit.source, top, queue)) proc.start() proc.join(settings.MT_WEBLATE_LIMIT) if proc.is_alive(): proc.terminate() if queue.empty(): raise Exception('Request for more like {0} timed out.'.format( unit.pk)) more_results, scores = queue.get() else: more_results, scores = more_like(unit.pk, unit.source, top) result = self.filter( pk__in=more_results, translation__language=unit.translation.language, state__gte=STATE_TRANSLATED, ).exclude( # These are covered by same_result Q(source__iexact=source) | Q(source__istartswith=join_plural([source, ''])) | Q(pk=unit.id)) for item in result: item.score = scores[item.pk] return result
def more_like_this(self, unit, top=5): """Find closely similar units.""" if settings.MT_WEBLATE_LIMIT >= 0: queue = multiprocessing.Queue() proc = multiprocessing.Process(target=more_like_queue, args=(unit.pk, unit.source, top, queue)) proc.start() proc.join(settings.MT_WEBLATE_LIMIT) if proc.is_alive(): proc.terminate() if queue.empty(): raise Exception('Request for more like {0} timed out.'.format( unit.pk)) more_results = queue.get() else: more_results = more_like(unit.pk, unit.source, top) return self.filter( pk__in=more_results, translation__language=unit.translation.language, state__gte=STATE_TRANSLATED, )
def more_like_this(self, unit, top=5): """ Finds closely similar units. """ more_results = more_like(unit.checksum, unit.source, top) same_results = fulltext_search(unit.get_source_plurals()[0], unit.translation.language.code, True, False, False) checksums = more_results - same_results return self.filter( checksum__in=checksums, translation__language=unit.translation.language, translated=True ).exclude(pk=unit.id)
def more_like_this(self, unit, top=5): """ Finds closely similar units. """ more_results = more_like(unit.checksum, unit.source, top) same_results = fulltext_search(unit.get_source_plurals()[0], unit.translation.language.code, True, False, False) checksums = more_results - same_results return self.filter(checksum__in=checksums, translation__language=unit.translation.language, translated=True).exclude(pk=unit.id)
def more_like_queue(pk, source, top, queue): """ Multiprocess wrapper around more_like. """ result = more_like(pk, source, top) queue.put(result)
def more_like_queue(checksum, source, top, queue): """ Multiprocess wrapper around more_like. """ result = more_like(checksum, source, top) queue.put(result)