GCP情感分析针对17个不同的文档返回相同的分数,我在做什么错?

时间:2019-01-07 06:17:58

标签: python google-cloud-platform sentiment-analysis

我正在对17个不同的文档进行Google Cloud Platform的情绪分析,但是它给了我相同的分数,但每个分数的大小不同。 这是我第一次使用此程序包,但据我所知,所有这些都不可能具有完全相同的分数。

文档是大小不一的pdf文件,但是在15-20页之间,我将其中的3个排除在外,因为它们不相关。

我已尝试将代码与其他文档一起使用,它为较短的文档提供了不同的分数,我怀疑它可以处理的文档最大长度,但是在文档中或通过Google找不到任何内容。

def analyze(text):
    client = language.LanguageServiceClient(credentials=creds)    

    document = types.Document(content=text, 
        type=enums.Document.Type.PLAIN_TEXT)

    sentiment = client.analyze_sentiment(document=document).document_sentiment
    entities = client.analyze_entities(document=document).entities

    return sentiment, entities


def extract_text_from_pdf_pages(pdf_path):
    resource_manager = PDFResourceManager()
    fake_file_handle = io.StringIO()
    converter = TextConverter(resource_manager, fake_file_handle)
    page_interpreter = PDFPageInterpreter(resource_manager, converter)

    with open(pdf_path, 'rb') as fh:
        last_page = len(list(enumerate(PDFPage.get_pages(fh, caching=True, check_extractable=True))))-1

        for pgNum, page in enumerate(PDFPage.get_pages(fh, 
                                  caching=True,
                                  check_extractable=True)):

            if pgNum not in [0,1, last_page]:
                page_interpreter.process_page(page)

        text = fake_file_handle.getvalue()

    # close open handles
    converter.close()
    fake_file_handle.close()

    if text:
        return text

结果(得分,大小):

doc1 0.10000000149011612-147.5


doc2 0.10000000149011612-118.30000305175781


doc3 0.10000000149011612-144.0


doc4 0.10000000149011612-147.10000610351562


doc5 0.10000000149011612-131.39999389648438


doc6 0.10000000149011612-116.19999694824219


doc7 0.10000000149011612-121.0999984741211


doc8 0.10000000149011612-131.60000610351562


doc9 0.10000000149011612-97.69999694824219


doc10 0.10000000149011612-174.89999389648438


doc11 0.10000000149011612-138.8000030517578


doc12 0.10000000149011612-141.10000610351562


doc13 0.10000000149011612-118.5999984741211


doc14 0.10000000149011612-135.60000610351562


doc15 0.10000000149011612-127.0


doc16 0.10000000149011612-97.0999984741211


doc17 0.10000000149011612-183.5


所有文档预期会有不同的结果,至少会有很小的变化。 (与我在文档中和其他地方所发现的相比,这些幅度得分也太高了

1 个答案:

答案 0 :(得分:1)

是的,有一些quotas in the usage of the Natural Language API

自然语言API将文本处理为一系列标记,这些标记大致对应于单词边界。尝试处理超出令牌配额(默认情况下,每个查询100.000个令牌)的令牌不会产生错误,但超出该配额的任何令牌都会被忽略

对于第二个问题,我很难在不访问文档的情况下评估自然语言API的结果。也许因为他们太中立了,所以您得到的结果非常相似。我已经使用中性大文本进行了一些测试,并且得到了相似的结果。

为澄清起见,as stated in the Natural Language API documentation

  
      
  • documentSentiment 包含文档的总体观点,由以下字段组成:      
        情感的
    • 得分介于-1.0(负)和1.0(正)之间,对应于文本的整体情感倾向。
    •   
    • 幅度表示给定文本中的情绪总体强度(正向和负向),介于0.0和+ inf之间。与得分不同,幅度未归一化。文本中的每种情感表达方式(积极和消极的)都有助于文本的大小(因此,较长的文本块可能具有更大的大小)。
    •   
  •