예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
파일: http.py 프로젝트: KBNLresearch/Annif
    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)