def _response_to_result(self, response): try: subject_suggestions = [SubjectSuggestion( uri=hit['id'], label=None, notation=None, score=hit['probability']) for hit in response['topics'] if hit['probability'] > 0.0] except (TypeError, ValueError) as err: self.warning("Problem interpreting JSON data: {}".format(err)) return ListSuggestionResult([], self.project.subjects) return ListSuggestionResult.create_from_index(subject_suggestions, self.project.subjects)
def _suggest(self, text, params): self.debug( f'Suggesting subjects for text "{text[:20]}..." (len={len(text)})') limit = int(params['limit']) self._kw_extractor = yake.KeywordExtractor( lan=params['language'], n=int(params['max_ngram_size']), dedupLim=float(params['deduplication_threshold']), dedupFunc=params['deduplication_algo'], windowsSize=int(params['window_size']), top=int(params['num_keywords']), features=self.params['features']) keyphrases = self._kw_extractor.extract_keywords(text) suggestions = self._keyphrases2suggestions(keyphrases) subject_suggestions = [ SubjectSuggestion(uri=uri, label=None, notation=None, score=score) for uri, score in suggestions[:limit] if score > 0.0 ] return ListSuggestionResult.create_from_index(subject_suggestions, self.project.subjects)
def _suggest(self, text, params): data = {'text': text} if 'project' in params: data['project'] = params['project'] try: req = requests.post(params['endpoint'], data=data) req.raise_for_status() except requests.exceptions.RequestException as err: self.warning("HTTP request failed: {}".format(err)) return ListSuggestionResult([], self.project.subjects) try: response = req.json() except ValueError as err: self.warning("JSON decode failed: {}".format(err)) return ListSuggestionResult([], self.project.subjects) if 'results' in response: results = response['results'] else: results = response try: subject_suggestions = [ SubjectSuggestion(uri=hit['uri'], label=None, notation=None, score=hit['score']) for hit in results if hit['score'] > 0.0 ] except (TypeError, ValueError) as err: self.warning("Problem interpreting JSON data: {}".format(err)) return ListSuggestionResult([], self.project.subjects) return ListSuggestionResult.create_from_index(subject_suggestions, self.project.subjects)