AttributeError: у объекта «LanguageServiceClient» нет атрибута «classify_text» - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь классифицировать некоторый текст и получить следующий код:

from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types


def classify_text(text):
    """Classifies content categories of the provided text."""
    client = language.LanguageServiceClient()

    if isinstance(text, six.binary_type):
        text = text.decode('utf-8')

    document = types.Document(
        content=text.encode('utf-8'),
        type=enums.Document.Type.PLAIN_TEXT)

    categories = client.classify_text(document).categories

    for category in categories:
        print(u'=' * 20)
        print(u'{:<16}: {}'.format('name', category.name))
        print(u'{:<16}: {}'.format('confidence', category.confidence))

Но когда я звоню: classify_text('Hello'), я получаю:

AttributeError: 'LanguageServiceClient' object has no attribute 'classify_text'

Кажется, я не могу найти здесь никаких вопросов об этой ошибке. Кто-нибудь знает, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Версия, которую я использовал, 0.29, устарела. Текущая версия 1.1 и правильная функция:

def classify(text, verbose=True):
    """Classify the input text into categories. """

    language_client = language.LanguageServiceClient()

    document = language.types.Document(
        content=text,
        type=language.enums.Document.Type.PLAIN_TEXT)
    response = language_client.classify_text(document)
    categories = response.categories

    result = {}

    for category in categories:
        # Turn the categories into a dictionary of the form:
        # {category.name: category.confidence}, so that they can
        # be treated as a sparse vector.
        result[category.name] = category.confidence

    if verbose:
        print(text)
        for category in categories:
            print(u'=' * 20)
            print(u'{:<16}: {}'.format('category', category.name))
            print(u'{:<16}: {}'.format('confidence', category.confidence))

    return result

Эта функция найдена здесь , но найденная мною функция найдена здесь

0 голосов
/ 01 ноября 2018

Попробуйте:

categories = client.classify_text(document)
cat = categories.categories

Это базовая отладка, я знаю.

Вы также можете закомментировать декларацию для документа и сделать это:

document = {}

И проверьте, не выдает ли ту же ошибку.

Так как он должен вернуть в любом случае ClassifyTextResponse, возможно, это начнет делить проблему на части. В этих случаях лучше атаковать по одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...