· Joseph · AI & Machine Learning  · 3 min read

[Day 12] Google Natural Language - 3

今天來Google Natural Language第三篇,我本來想按照Natural Language裡分析情緒這個部分實作,可是看完以後發現它code有點短,只有下面這樣:

func analyzeSentimentFromGCS(ctx context.Context, gcsURI string) (*languagepb.AnalyzeSentimentResponse, error) {
        return client.AnalyzeSentiment(ctx, &languagepb.AnalyzeSentimentRequest{
                Document: &languagepb.Document{
                        Source: &languagepb.Document_GcsContentUri{
                                GcsContentUri: gcsURI,
                        },
                        Type: languagepb.Document_PLAIN_TEXT,
                },
        })
}

遲遲找不到適合的範例,恰巧看到Natural Language基礎知識有一個蓋茨堡宣言的範例,gcsURI是gs://cloud-samples-tests/natural-language/gettysburg.txt,我把gcsURI帶入gs://cloud-samples-tests/natural-language/gettysburg.txt,發現跑出來結果很難閱讀 output1.jpg

好吧,就照著之前Video跟Vision那樣,把它改寫得比較好閱讀一點:

func AnalyzeSentiment(gcsURI string) error {
  ctx := context.Background()

  // Creates a client.
  client, err := language.NewClient(ctx)
  if err != nil {
    log.Fatalf("Failed to create client: %v", err)
    return err
  }
  op, err := client.AnalyzeSentiment(ctx, &languagepb.AnalyzeSentimentRequest{
    Document: &languagepb.Document{
      Source: &languagepb.Document_GcsContentUri{
        GcsContentUri: gcsURI,
      },
      Type: languagepb.Document_PLAIN_TEXT,
    },
  })
  if err != nil {
    return err
  }

  fmt.Printf("Document Sentiment:\n")
  fmt.Printf("\tScore: %.2f\n", op.DocumentSentiment.Score)
  fmt.Printf("\tMagnitude: %.2f\n", op.DocumentSentiment.Magnitude)
  fmt.Printf("Language: %q\n\n", op.Language)
  for _, annotation := range op.Sentences {
    text := annotation.GetText()
    fmt.Printf("Text:\n")
    fmt.Printf("\tContent: %s\n", text.Content)
    fmt.Printf("\tSentiment: %q\n", annotation.Sentiment)
  }

  return nil
}

再丟入一樣的蓋茨堡宣言進去運算以後,我們再來看看漂亮的output。 output2.jpg

但我始終算不出Natural Language基礎知識裡的{score: 0.2, magnitude: 3.6}。靈機一動看看其他版本的宣言,來研究一下其他結果。 output3.jpg

嗯?都是蓋茨堡宣言,竟然結果不完全一樣,可以看到最後兩段gcs沒辨識出來,但wiki上的有結果,不過每個句子的比重差不多,可能是不同結構造成的誤差,剩下就看實際使用時的情境去做調整。

好了,今天是個很有實驗精神的一篇,測了不同的蓋茨堡宣言、改寫了範例程式。 今天就到這邊了,這是今天的Github: https://github.com/josephMG/ithelp-2019/tree/Day-12 。謝謝大家~

Back to Blog

Related Posts

View All Posts »

[Day 13] Google Natural Language - 子系列最終章

我們今天玩的是AutoML Natural Language,可以透過GCP左邊的sidebar,找到Natural Language打開,或直接點這個連結 GCP AutoML Natural Language的收費方式記得先看這裡:https://cloud.google.com/natural-language/automl/pricing?_ga=2.125750730.-1764044900.1562297905

[Day 11] Google Natural Language - 2

今天開始使用Natural3Language API,一樣要先Enable API跟下載credential json。 忘記的人可以看這系列第三天的文章回想一下。 在這之前我先重構一下原先的main.go,讓我加上參數去呼叫不同天的Demo api:

[Day 10] Google Natural Language - 1

今天是Natural Language的第一篇,這是一個可以用來分析語意並萃取出你要的資訊的工具。跟前面的服務一樣,也分成AutoML Natural Language跟Natural Language API。 AutoML Natural Language:提供一個UI介面訓練自己的Model,並用自己的Model做語意分析、詞彙分類之類的工作。 Natural Language API:用預先訓練好的API直接給你基本的分析,讓我們更快理解Natural Language的語意、詞彙、內容分析之類的功能。

[Day 30] Google AI & ML Products 系列總結

這系列文章出自於一個無窮無盡的bug的解題時間,想不到如何解bug、又想不出要寫什麼主題,參考完大家的方向以後,我發現這類型的文章很少、又很實用,才下定決心透過鐵人賽推廣 Google AI & ML Products。 在這次的挑戰裡,給了自己三個目標: 更熟悉docker 開始玩Golang 入門大部分的Google AI & ML Products 但也因為Google AI & ML Products太多了,所以把它分了很多子系列進行,現在再來回顧一下這次的內容。 前面先來個提醒,如果過程中你們有Deploy model做Online predict的,如果測完一定要記得刪掉,不然你deploy的model就會一直被收費喔。