Machine Learning(二):Natural Language API 介紹與實作

GCP 機器學習(2) – Natural Language API 應用實例

作者:沒一村
本文轉載自:沒一村生活點滴

上一篇講完 Speech API,這週來提一下 Google Cloud Platform 另一個 API — Natural Language API。這個 API 屬於 Computer Science Natural Language Process (NLP) 的範疇。有了這個API,我們就能快速的把一個句子的 tagging 和 parsing tree 以及情感 (sentiment) 給抓出來。如果不熟悉 NLP 的同學,可以透過這篇,快速的把 NLP 的精神給抓住,並了解 Natural Language API 的威力。

快速測試

首先,我們先連到 Natural Language API 的連結。一如 Google 的風格,網頁非常的平易近人,馬上就給了個 API 快速測試的按鈕。廢話不多說,我們就趕緊來試試。

螢幕快照 2017-11-16 下午11.53.48.png

很快的,我們便取下了這段句子的所有單字內容和相關資料。例如,Google 是一個 organization,而 Android 是一個 consuming good,而相關的 wikipedia 資料也都被列在旁邊。此外,這個 API 也會估計各個字的情感強烈程度 (Sentiment) 和相對於整個句字的重要性(Salience)。以下看一個更明顯的例子,可以看到閉嘴 (mouth) 是整個句字的核心,而情感的分數也是負分 (negative) 的。

螢幕快照 2017-11-17 上午12.01.51.png

回到 Google 的例子,我們點選 Syntax,會看到以下的樹狀圖,NLP  的專業名稱叫做 parsing tree。這個 Parsing tree 看似複雜,用處可多的呢。例如透過 POS (Parse of Speech) ,我們便能看出各個字的詞性,而 lemma 則能幫助軟體處理單複數和時態的部分。

螢幕快照 2017-11-17 上午12.03.42.png

而 Dependency 也能幫助我們了解各個字的距離。例如以第二句為例,root 是 said,那們我們試著只取和 root 兩個距離的所有字。那麼原本的句子

Sundar Pichai said in his keynote that users love their new Android phones.

就會變成

Sundar Pichai said in keynote that users love phones.

句子也就變得更精煉了。當然,如果夠了解這些 parsing 和 tagging 所代表的意義的話,團隊或公司也就能更輕易的設計出一個較為活潑的 chatbot 來服務客人和收集資訊,而非呆版的一問一答或者選項機器人。

如此看來,我們可以發現,Natural Language API 其實很類似 Stanford 團隊出的 CoreNLP 工具。畢竟 sentimental analysis、parsing、tagging 都是 NLP 處理的經典問題。但依照我個人對兩者的使用經驗,我不會說這個是富人版(意即功能更多)的 CoreNLP ,畢竟 CoreNLP 提供了更多的細項功能,我反而會認為它是平民版(意即更平易近人)的 CoreNLP。

多國語言

除了這些功能之外,Natural Language API 也支援多國語言,左圖是它所支援的語言,而右圖則是 CoreNLP 支援的語言。

我認為整個 API 裡頭,最吸引我或一般團隊的,應當屬於這個部分。畢竟僅處理一個 model,就 NLP 的 task 而言,便是一件相當困難的事。但 Natural Language API 比起 CoreNLP 又提供了更多語言別。話不多說,趕緊試個中文的 parsing 先。

學姐妳好可愛,我很喜歡妳,請問妳可以和我交往嗎?
不行,因為你冗辭贅字太多了。

螢幕快照 2017-11-17 上午1.35.04.png

那麼經過 NLP parse 過並精煉後,就會長這個樣子。

學姐,我很喜歡妳,請問妳可以和交往嗎?

說不定成功機率會高一些,我是說⋯⋯說不定⋯⋯,因為你好像沒發現,原句中的「我」字不小心被演算法拿掉啦 。

計價方式

以下是 Natural Language API 的計價。每一單位是一個 text record,而每一個 text record 包含 1000 個 Unicode 字元。從剛剛寫到這裡,我以這個網址估算,大約是 1300 個 Unicode,也就是約 1.3 個 text record。如果採用實體分析 (Entity analysis),大概是 0.039 NTD (以 5K – 1M 計價)。

螢幕快照 2017-11-17 上午1.18.43.png

結語

總之,如果要架一個 chatbot 的話,我會認為 Natural Language API 會是一個不錯用的工具。比起開源版的 CoreNLP 而言,它支持了更多的語言。此外,他的 API 也相當人性化,只要發個簡單的 REST request 即可。

這一系列的文章將帶您跨過 GCP 機器學習領域的實作門檻,下一篇會為您介紹:Cloud Translation API想瞭解更多更多 GCP 的內容嗎?趕快聯絡 GCP 專門家了解更多資訊吧。
(上一篇:Machine Learning(一):Cloud Speech API 介紹與實作)

連絡我們