【自然語言處理 - spaCy】初探強大的工具庫spaCy, 讓機器讀懂我們的語言吧

更新於 2023/07/13閱讀時間約 7 分鐘

上一篇章我們有提到「【AI幫幫忙】機器如何識別我們的特徵?關鍵的Named Entity Recognition(NER)技術」, 而NER是NLP自然語言處理的一部分, 而這一個篇章我們會以實作的形式來介紹自然語言處理中非常好用的一套工具「spaCy」,spaCy被廣泛用於各種NLP任務,包括自然語言理解、信息提取、文本分類和語言生成等。

會選擇這一套來進行使用主要是觀察到除了文檔完備豐富之外, 使用起來也非常易用, 對於非資料科學本科的使用者來說非常友善, 而今天的範例除了介紹基本的NLP常見任務之外,最後也會使用Named Entity Recognition來對一段文章提取實體特徵, 讓透過這些特徵更加了解一篇文章到底講了哪些關鍵。

目錄

  • 安裝相關套件及下載模型。
  • 載入模型。
  • Parser解析。
  • 分析相依關係。
  • Named Entity Recognition (NER)。

下載模型

接著我們就直接進入正題吧! 首先進行安裝套件, 並載入模型, 這邊我們載入的是中文模型「zh_core_web_trf」, 而模型有以下四種:

  • zh_core_web_sm: 這是最小的中文語言模型,用於基本的語言處理任務(分詞和詞性標註), 它的下載大小比較小,速度比較快,但是在處理複雜的語言問題時可能表現較差。
  • zh_core_web_md: 這是中等大小的中文語言模型,比 zh_core_web_sm 包含更多的詞彙、語言特徵和上下文信息,可以用於更多的語言處理任務,它的下載大小比較大,速度比較慢,但是在處理複雜的語言問題時表現較好。
  • zh_core_web_lg: 這是最大的中文語言模型,比 zh_core_web_md 包含更多的語言特徵和上下文信息,可以用於更複雜和高級的語言處理任務,例如自然語言生成和語言理解,它的下載大小非常大,速度非常慢,但是在處理最複雜的語言問題時表現最佳。
  • zh_core_web_trf: 這是基於 Transformer 技術的中文語言模型,是最先進和最強大的中文語言模型之一。它比 zh_core_web_lg 包含更多的語言特徵和上下文信息,同時使用 Transformer 技術可以更好地處理長文本和上下文相關性,但是它的下載大小更大,速度更慢,需要更多的計算資源。

安裝套件

  • spaCy: NLP處理。
  • pandas: 進行表格呈現、矩陣計算…。
# 安裝spacy
%pip install spacy
# 安裝pandas
%pip install pandas# 下載Transfromer技術的中文語言模型
!python -m spacy download zh_core_web_trf

載入模型

模型會進行什麼處理?

當模型被應用於一段文本時,會通過預處理管道, 而預處理管道就是所謂的Pipeline,過程大抵如下:

語句 --> Tokenizer --> 標記化 --> 停用詞去除 --> 詞形還原 --> 特徵提取

其中「Tokenizer」是管道中最先被執行的,也是最重要的一步,將文本切割成一個個的Token,也就是「詞」,後續才能進行詞性標注、停用詞移除、特徵擷取…等。

import spacy
# 載入模型
nlp_zh = spacy.load('zh_core_web_trf')# 對中文語句進行解析
doc = nlp_zh('台灣是一個位於亞洲東部的島嶼國家。')

Parser解析

以下我們將解析過後的Token印出, 可以發現資訊非常的完整, 除了詞的文字以外也將其特型進行解析。

P.S 這邊以pandas來印出表格對於排版較為整齊

import pandas as pd
columns=['詞', '詞類', '詞性標注', '單詞依存關係', '是否為純字母組成', '是否為停用詞']dim = list(map(lambda x: [x.text, x.pos_, x.tag_, x.dep_, x.is_alpha, x.is_stop], doc))pd.DataFrame(dim, columns=columns)
圖片來源

圖片來源

分析相依關係

這邊我們會使用spacy套件中的displacy來呈現詞之間的關係。

Displacy是一個Python庫,用於在Jupyter Notebook或瀏覽器中顯示自然語言處理(NLP)模型的分析結果,它可以使用spaCy庫生成的分析結果,提供視覺化效果,以幫助開發人員更好地理解分析結果,通常與spaCy庫一起使用,可以用於許多NLP任務,例如詞性標注、依存關係分析、命名實體識別等。

透過視覺化可以觀察一下那些詞應該具有依賴性,哪些詞需要拆開,這裡可以稍微記錄一下,後續會說明如何調適,或者重新訓練。

from spacy import displacy
options = {
"compact": True,
"bg": "black",
"color": "white",
"font": "",
"distance": 110
}# 台灣是一個位於亞洲東部的島嶼國家。
displacy.render(doc, style="dep", options=options)
圖片來源

圖片來源

Named Entity Recognition (NER)

我們藉由spacy來識別實體吧!

這邊識別出來的有「台灣」跟「亞洲」, 分別代表的意義為「GPE: 地理政治」跟「LOC: 地點」。

至於有哪些實體呢? 請參考「https://spacy.io/models/zh#zh_core_web_sm-labels」。

這邊有沒有發現, 國家似乎沒有被識別出來, 如何讓「國家」可以被識別出來呢? 下一章將說明如何進行訓練, 讓「國家」這個實體可以順利被識別。

# 台灣是一個位於亞洲東部的島嶼國家。
for e in doc.ents:
print(e.text, e.label_)
displacy.render(doc, style="ent", jupyter=True)
圖片來源

圖片來源

今天的範例都在這裡「📦 scapy_0.ipynb」歡迎自行取用。

如何使用請參閱「【Google Colab系列】台股分析預備式: Colab平台與Python如何擦出火花?」。

結語

實際操作過一遍真的不困難,我們常常害怕一些艱澀難懂的名詞,導致駐足不前無法嘗試,這樣對於我們的學習是會大打折扣的,因此應該嘗試著動手做過一遍,了解整體流程之後,才能夠融會貫通,AI其實並不難,我們應該要懂得AI的原理,未來才有機會讓AI變成我們的強力助手。

總結來說,這次的NLP學到了整個處理流程大方向,透過`spaCy`解析成什麼樣的格式與內容,甚至分析詞與詞之間的關係,最後也學到了實體(Entity),實體(Entity)是一個很重要的資訊,讓機器能夠識別並統計出可能的意圖,進行後續的處理流程,設計出更便利於人們的應用。

avatar-img
116會員
260內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
QA問答是自然語言處理NLP中蠻困難的一項任務, 必須從一段文本中識別出使用者的提問,像搜尋引擎就是一種QA的應用, 從眾多的問題中找答案, 那就讓我們親手來打造一下自己專屬的QA系統吧! 找看看有哪些可用模型 在「【Hugging Face】Ep.3 前往Dataset掏金趣」我們有介紹過Hu
這次來介紹一下NLP自然語言處理中重要的一個任務「命名實體識別(Named Entity Recognition)」, 這個任務主要識別出「人名」、「地名」、「公司」…等實體, 透過這些實體辨識結果, 可以近一步的理解意圖, 甚至判斷出該文章主要在講什麼重點…等。 關於更多NER的細節歡迎閱讀: 「
前面我們介紹了「【Hugging Face】Ep.1 平凡人也能玩的起的AI平台」, 我們都知道「詞」是NLP世界中的最小單元, 關於詞的知識歡迎參考: 簡單來說,主要的目的是將文本轉換為模型可以處理的數據, But…, 他主要的任務並不是像jieba…等斷詞器一樣, 而是很單純的扮演文字與模型的橋
Part-of-Speech Tagging, POS是詞性標注的全名, 主要為詞彙標上語言中的語法類別或用途, 再進行後續的分析與處理, 就想像成文件歸檔的動作, 每個文件貼上一個標籤類別, 而透過這些標籤類別進行關聯性的分類歸檔。 一個句子最基本的組成單位是「詞」這在我們之前幾個篇章都有談過,如
我們有想過嗎? 一句簡單的話語, 竟然隱含著豐富的句法結構與規則, 而句法就是依著這樣的規則組合而成, 形成一個完整的句子, 隨著資料量越大, 透過規則與關聯性, 機器就能夠根據我們的話語進行拆解, 並試圖理解我們的意圖進行更貼心的服務, 隨著Chatgpt的興起, 我們也見證到AI的新里程碑, 資
上一篇「【Hugging Face】Ep.2 初探新手村, 打造專屬的翻譯官」我們學習到如何架設起Hugging Face的環境了,接下來我們就介紹一下重要的Datasets吧! AI模型訓練最重要的燃料就是「資料」了, 而HuggingFace的Dataset也公開了不少的資料集, 非常適合我們進
QA問答是自然語言處理NLP中蠻困難的一項任務, 必須從一段文本中識別出使用者的提問,像搜尋引擎就是一種QA的應用, 從眾多的問題中找答案, 那就讓我們親手來打造一下自己專屬的QA系統吧! 找看看有哪些可用模型 在「【Hugging Face】Ep.3 前往Dataset掏金趣」我們有介紹過Hu
這次來介紹一下NLP自然語言處理中重要的一個任務「命名實體識別(Named Entity Recognition)」, 這個任務主要識別出「人名」、「地名」、「公司」…等實體, 透過這些實體辨識結果, 可以近一步的理解意圖, 甚至判斷出該文章主要在講什麼重點…等。 關於更多NER的細節歡迎閱讀: 「
前面我們介紹了「【Hugging Face】Ep.1 平凡人也能玩的起的AI平台」, 我們都知道「詞」是NLP世界中的最小單元, 關於詞的知識歡迎參考: 簡單來說,主要的目的是將文本轉換為模型可以處理的數據, But…, 他主要的任務並不是像jieba…等斷詞器一樣, 而是很單純的扮演文字與模型的橋
Part-of-Speech Tagging, POS是詞性標注的全名, 主要為詞彙標上語言中的語法類別或用途, 再進行後續的分析與處理, 就想像成文件歸檔的動作, 每個文件貼上一個標籤類別, 而透過這些標籤類別進行關聯性的分類歸檔。 一個句子最基本的組成單位是「詞」這在我們之前幾個篇章都有談過,如
我們有想過嗎? 一句簡單的話語, 竟然隱含著豐富的句法結構與規則, 而句法就是依著這樣的規則組合而成, 形成一個完整的句子, 隨著資料量越大, 透過規則與關聯性, 機器就能夠根據我們的話語進行拆解, 並試圖理解我們的意圖進行更貼心的服務, 隨著Chatgpt的興起, 我們也見證到AI的新里程碑, 資
上一篇「【Hugging Face】Ep.2 初探新手村, 打造專屬的翻譯官」我們學習到如何架設起Hugging Face的環境了,接下來我們就介紹一下重要的Datasets吧! AI模型訓練最重要的燃料就是「資料」了, 而HuggingFace的Dataset也公開了不少的資料集, 非常適合我們進
本篇參與的主題活動
在生成式AI與大型語言模型(Large Language Model, LLM)蓬勃發展下,有許多工具可以幫助我們學習與撰寫程式,這篇文章提供了實作範例與一些經驗,分享如何使用ChatGPT(免費的GPT-3.5)協助程式語言的學習,並且完成屬於自己的程式。
前幾個禮拜,AWS 舉行 Startup Day Taiwan。想當然爾,最熱門的主題非生成式 AI (Generative AI) 莫屬。既然 AWS 有現成的工具,身為一名工程師,自然看看無妨,這篇文章算是新手開箱文,會說明如何部署一套基礎模型,並使用 AWS SDK 與其互動。
前言 我在工作中沒有什麼機會接觸到機器學習,學生時期也沒有學習過相關知識。 作為一個業餘小白,我對機器學習非常感興趣。在自學的過程中,我逐漸意識到利用機器學習可以做很多有趣的事情。 因此,我決定嘗試使用 AWS SageMaker JumpStart 來實驗文字生成式繪圖 AI ,以了解機
最近玩到了一個我覺得很新奇有趣的軟體,叫做SillyTavern。 SillyTavern是專用於創建虛擬角色的AI聊天軟體,SillyTavern是TavernAI的分支,但SillyTavern走上了自己的路,加進了許多額外功能,並且仍在積極的持續更新中。 然後,可以色色!
「Prompt」這個詞是提示的意思,但為什麼需要提示呢? 當AI不理解我們的時候,勢必給出的回應並非準確的為我們解答,因此一個好的提示是非常重要的,就如同我們人與人之間的溝通一樣,如何將自己心裡的疑惑轉化成好的問題來提問對方,讓對方理解,進而給出一個明確的答案,這就是提示(Prompt)的重要性,對
在生成式AI與大型語言模型(Large Language Model, LLM)蓬勃發展下,有許多工具可以幫助我們學習與撰寫程式,這篇文章提供了實作範例與一些經驗,分享如何使用ChatGPT(免費的GPT-3.5)協助程式語言的學習,並且完成屬於自己的程式。
前幾個禮拜,AWS 舉行 Startup Day Taiwan。想當然爾,最熱門的主題非生成式 AI (Generative AI) 莫屬。既然 AWS 有現成的工具,身為一名工程師,自然看看無妨,這篇文章算是新手開箱文,會說明如何部署一套基礎模型,並使用 AWS SDK 與其互動。
前言 我在工作中沒有什麼機會接觸到機器學習,學生時期也沒有學習過相關知識。 作為一個業餘小白,我對機器學習非常感興趣。在自學的過程中,我逐漸意識到利用機器學習可以做很多有趣的事情。 因此,我決定嘗試使用 AWS SageMaker JumpStart 來實驗文字生成式繪圖 AI ,以了解機
最近玩到了一個我覺得很新奇有趣的軟體,叫做SillyTavern。 SillyTavern是專用於創建虛擬角色的AI聊天軟體,SillyTavern是TavernAI的分支,但SillyTavern走上了自己的路,加進了許多額外功能,並且仍在積極的持續更新中。 然後,可以色色!
「Prompt」這個詞是提示的意思,但為什麼需要提示呢? 當AI不理解我們的時候,勢必給出的回應並非準確的為我們解答,因此一個好的提示是非常重要的,就如同我們人與人之間的溝通一樣,如何將自己心裡的疑惑轉化成好的問題來提問對方,讓對方理解,進而給出一個明確的答案,這就是提示(Prompt)的重要性,對
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
(刊登於風傳媒,連結:www.storm.mg/article/4796622) 所以,很有意思地,為什麼在當今眾多發展的AI當中,竟然是由自然語言的大型語言模型,來讓人們驚覺有那麼一點通用人工智慧AGI的感覺和發展之可能方向。正是因為概念就藏在語言裡。
Thumbnail
自然語言處理(Natural Language Processing, NLP)是一個引人注目的領域,通過應用機器學習和人工智能技術,使機器能夠理解和處理人類的語言。其中,語意分析是NLP中一個重要的應用領域,它關注如何理解文本的意思和情感。
Thumbnail
探索 ChatGPT,這是一項尖端技術,利用自然語言處理提供複雜的回應並不斷學習和改進。了解 ChatGPT 的歷史、應用和對社會可能帶來的影響。ChatGPT 在醫療、金融、教育和娛樂等領域有廣泛的應用。探索這項技術在各個領域中的幫助方式。ChatGPT 有可能改變我們與技術和工具互動的方式。了解
Thumbnail
以太坊因為有了智能合約而獲得很大的便利性與彈性,智能合約的出現讓原本單純的金流交易功能延伸了許多的擴充功能。這使得合約的安全性受到重視。搭上近年熱門的AI風潮,NLP是一種可以檢測合約安全的新方法。
Thumbnail
文字、語言是生活中不可或缺的一部分,而隨著網路時代的開始,我們更多的活動轉往網路、手機中,而最常見的媒介就是文字(語言)了,不論是新聞、個人心得、心情分享、論文等等,都是透過文字來表達想法。而這麼多的內容,電腦是如何呈現出我們感興趣的內容呢?那首先就是需要讓電腦能夠去解讀、使用文字這種非結構化資料,
Thumbnail
如果要用一句話來說的話,那應該是『技術有限,價值無限』
Thumbnail
Chatbot聊天機器人是網路行銷中的新興熱門詞彙,但是你了解多少呢?現今廣泛為應用的聊天機器人五花八門,擁有不同的相貌、不同的形式、不同的功能。你知道聊天機器人分成哪三種主要的形式嗎?又該如何選擇與應用呢?
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
(刊登於風傳媒,連結:www.storm.mg/article/4796622) 所以,很有意思地,為什麼在當今眾多發展的AI當中,竟然是由自然語言的大型語言模型,來讓人們驚覺有那麼一點通用人工智慧AGI的感覺和發展之可能方向。正是因為概念就藏在語言裡。
Thumbnail
自然語言處理(Natural Language Processing, NLP)是一個引人注目的領域,通過應用機器學習和人工智能技術,使機器能夠理解和處理人類的語言。其中,語意分析是NLP中一個重要的應用領域,它關注如何理解文本的意思和情感。
Thumbnail
探索 ChatGPT,這是一項尖端技術,利用自然語言處理提供複雜的回應並不斷學習和改進。了解 ChatGPT 的歷史、應用和對社會可能帶來的影響。ChatGPT 在醫療、金融、教育和娛樂等領域有廣泛的應用。探索這項技術在各個領域中的幫助方式。ChatGPT 有可能改變我們與技術和工具互動的方式。了解
Thumbnail
以太坊因為有了智能合約而獲得很大的便利性與彈性,智能合約的出現讓原本單純的金流交易功能延伸了許多的擴充功能。這使得合約的安全性受到重視。搭上近年熱門的AI風潮,NLP是一種可以檢測合約安全的新方法。
Thumbnail
文字、語言是生活中不可或缺的一部分,而隨著網路時代的開始,我們更多的活動轉往網路、手機中,而最常見的媒介就是文字(語言)了,不論是新聞、個人心得、心情分享、論文等等,都是透過文字來表達想法。而這麼多的內容,電腦是如何呈現出我們感興趣的內容呢?那首先就是需要讓電腦能夠去解讀、使用文字這種非結構化資料,
Thumbnail
如果要用一句話來說的話,那應該是『技術有限,價值無限』
Thumbnail
Chatbot聊天機器人是網路行銷中的新興熱門詞彙,但是你了解多少呢?現今廣泛為應用的聊天機器人五花八門,擁有不同的相貌、不同的形式、不同的功能。你知道聊天機器人分成哪三種主要的形式嗎?又該如何選擇與應用呢?