· Joseph · AI & Machine Learning  · 3 min read

[Day 11] Google Natural Language - 2

今天開始使用Natural3Language API,一樣要先Enable API跟下載credential json。

忘記的人可以看這系列第三天的文章回想一下。

在這之前我先重構一下原先的main.go,讓我加上參數去呼叫不同天的Demo api:

// Usage: `docker run -it golang ./app [DayXX]`
func main() {
  arg := os.Args[1]

  if arg == "Day3" {
    vision.DetectLabel(os.Stdout, "./testdata/furniture.jpg")
  } else if arg == "Day4" {
    vision.DetectText(os.Stdout, "./testdata/las-vegas.jpg")
    vision.DetectFaces(os.Stdout, "./testdata/face.jpg")
  } else if arg == "Day7" {
    video.DemoCode(os.Stdout, "gs://cloud-samples-data/video/cat.mp4")
  } else if arg == "Day8" {
    video.ShotChangeURI(os.Stdout, "gs://cloud-samples-data/video/gbikes_dinosaur.mp4")
    video.TextDetectionGCS(os.Stdout, "gs://python-docs-samples-tests/video/googlework_short.mp4")
  } else if arg == "Day11" {
    language.DemoCode(os.Stdout, "Hello World")
  }
}

day 11 我就直接呼叫時傳入Hello World的字串,然後把Demo code改成module的方式,像下面這樣

package natural_language

import (
  "context"
  "fmt"
  "io"
  "log"

  language "cloud.google.com/go/language/apiv1"
  languagepb "google.golang.org/genproto/googleapis/cloud/language/v1"
)

func DemoCode(w io.Writer, text 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
  }

  // Detects the sentiment of the text.
  sentiment, err := client.AnalyzeSentiment(ctx, &languagepb.AnalyzeSentimentRequest{
    Document: &languagepb.Document{
      Source: &languagepb.Document_Content{
        Content: text,
      },
      Type: languagepb.Document_PLAIN_TEXT,
    },
    EncodingType: languagepb.EncodingType_UTF8,
  })
  if err != nil {
    log.Fatalf("Failed to analyze text: %v", err)
    return err
  }

  fmt.Fprintf(w, "Text: %v\n", text)
  if sentiment.DocumentSentiment.Score >= 0 {
    fmt.Fprintln(w, "Sentiment: positive")
  } else {
    fmt.Fprintln(w, "Sentiment: negative")
  }
  return nil
}

languagepb詳細文件可以看這邊:https://godoc.org/google.golang.org/genproto/googleapis/cloud/language/v1 快速入門對這方面的連結還是提供不是很詳盡…

Type可以是Document_PLAIN_TEXT也可以是Document_HTML,但沒找到太多Document_HTML的敘述,在Python Demo裡找到這段:

如要分類網頁內容,請將網頁的來源 HTML 做為 text 進行傳遞,並將 type 參數設為 language.enums.Document.Type.HTML。 golang則為Document_HTML

至於Source這邊是傳入Document_Content並帶上參數{Content: text},也可以是傳入Document_GcsContentUri然後帶上{GcsContentUri: gcsURI},以gcs content為資料分析。

還沒實際測過分析HTML會有什麼結果,今天先來分析文字。來看看Output:

Text: Hello World
Sentiment: positive

看起來大家學程式的第一個作業Hello World是正向情緒的(也這樣大家才學得下去?)好囉,今天的github在這邊:https://github.com/josephMG/ithelp-2019/tree/Day-11 OK,今天工作提早結束,謝謝大家!

開始越來越擔心內容不夠了…

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 12] Google Natural Language - 3

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

[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就會一直被收費喔。