需要帮助理解 Google 自然语言 API 中的 'no attribute' 错误消息

Need help understanding 'no attribute' error message in Google Natural Language API

情况

我正在尝试 运行 Google 对从 Twitter API 中使用 Tweepy 提取的文本字段进行 Cloud NLP 情绪分析,然后将其转换为 pandas 数据框。该 Dataframe 有一个名为 text 的文本字段,这是我想要 运行 情绪分析的推文内容。

这是我的参考代码:

https://cloud.google.com/natural-language/docs/reference/libraries

预期

我期待这个过程对我的 Dataframe 中的 text 字段进行 运行 情绪分析,返回 sentiment scoresentiment magnitude 的值。下一步是将这些值发送回数据帧。

我试过的

下面是我运行宁的代码。

# Imports the Google Cloud client library
from google.cloud import language_v1


# Instantiates a client
client = language_v1.LanguageServiceClient()

# The text to analyze
text = dfTWEENGAGE.loc[:,"text"]
document = language_v1.Document(
    content=text, type_=language_v1.Document.Type.PLAIN_TEXT
)

# Detects the sentiment of the text
sentiment = client.analyze_sentiment(
    request={"document": document}
).document_sentiment

print("Text: {}".format(text))
print("Sentiment: {}, {}".format(sentiment.score, sentiment.magnitude))

我对示例所做的唯一更改是:

text = dfTWEENGAGE.loc[:,"text"]

… 在 dfTWEENGAGE 数据框中找到 text 列。

结果

它返回以下错误消息:

AttributeError: module 'google.cloud.language_v1' has no attribute 'Document'

这让我感到困惑,因为我在文档中看到了 'Document' 属性:

https://cloud.google.com/natural-language/docs/reference/rpc/google.cloud.language.v1#google.cloud.language.v1.Document

Document 之后的代码也与 API 文档匹配:.Type.PLAIN_TEXT

因此,对于有关文档属性以及我在这里可能做错了什么的任何见解或解释,我将不胜感激。

dsx

您只需将 type_=language_v1.Document.Type.PLAIN_TEXT 更新为 type_=language_v1.types.Document.Type.PLAIN_TEXT,您的代码就会 运行 成功。请参阅此 api documentation 了解更多信息。

此外,通过 运行 更新此 pip install --upgrade google-cloud-language

,确保您拥有更新的 google-cloud-language 库

下面是我使用您的代码并使用 u"Hello, world!" 作为我的示例文本输入的测试。

# Imports the Google Cloud client library
from google.cloud import language_v1


# Instantiates a client
client = language_v1.LanguageServiceClient()

# The text to analyze
text = u"Hello, world!"
document = language_v1.Document(
    content=text, type_=language_v1.types.Document.Type.PLAIN_TEXT
)

# Detects the sentiment of the text
sentiment = client.analyze_sentiment(
    request={"document": document}
).document_sentiment

print("Text: {}".format(text))
print("Sentiment: {}, {}".format(sentiment.score, sentiment.magnitude))

输出: