我正在对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
所有文档预期会有不同的结果,至少会有很小的变化。 (与我在文档中和其他地方所发现的相比,这些幅度得分也太高了
答案 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之间。与得分不同,幅度未归一化。文本中的每种情感表达方式(积极和消极的)都有助于文本的大小(因此,较长的文本块可能具有更大的大小)。