【自然語言處理系列】掌握NLP基礎:去停用詞、詞性標注與命名實體識別實戰教程

?摘要:本系列教程專注于自然語言處理(NLP)中的基礎元素,包括去停用詞、詞性標注以及命名實體識別。這些步驟是文本預處理和分析不可或缺的組成部分。我們將通過具體的實例和技術演示,講解如何使用Python及其相關庫(如NLTK)進行有效的文本數據處理。從去除無關詞匯到識別關鍵實體,提供詳細的操作指導和實際應用案例,幫助讀者提升在文本挖掘和數據分析領域的技能。

目錄

一、查看停用詞表

二、過濾停用詞

三、詞性標注

?四、基于NLTK的正則表達式分塊與可視化

五、命名實體識別

六、數據清洗實例


停用詞(Stop words)是指在文本預處理中被移除的常見單詞,因為它們對于文本的分析和處理通常沒有實際意義或貢獻。這些詞往往是語境中的功能性詞匯,如介詞(例如“在”,“對于”)、冠詞(“一個”,“這個”)和連詞(“和”,“但是”)。停用詞的去除有助于減少數據的維度,從而提升文本挖掘算法的效率和準確性,尤其是在進行詞頻統計、關鍵詞提取或構建詞袋模型時。不同語言有不同的停用詞列表,且根據應用場景的不同,停用詞列表的內容也會有所調整。

一、查看停用詞表

NLTK提供的停用詞表涵蓋了多種語言,可以用來移除不同語言文本中的停用詞。

二、過濾停用詞

首先,通過將單詞轉換為小寫來創建列表 test_words,確保單詞的大小寫一致性。接著,將 test_words 轉換為集合 test_words_set,以去除重復元素。然后,使用列表生成式從 test_words_set 中過濾掉英語停用詞,生成新列表 filtered。最后,通過計算 test_words_set 和英語停用詞集合的交集,確認哪些停用詞被從 test_words_set 中移除,以優化文本分析結果。

?

三、詞性標注

詞性標注是自然語言處理中的一個重要步驟,它涉及將單詞分配到相應的詞類,如名詞、動詞、形容詞等。下表總結了常見的詞性標注符號(POS Tag)及其對應的指代,并對tokens中包含的詞使用nltk中的pos_tag函數進行了詞性標注。

?四、基于NLTK的正則表達式分塊與可視化

使用NLTK庫中的RegexpParser模塊根據指定的語法規則對句子進行分塊。在這個例子中,"the" (DT) - 限定詞、"little" (JJ) - 形容詞、"yellow" (JJ) - 形容詞、"dog" (NN) - 名詞、"died" (VBD) - 動詞,過去式。語法規則表示名詞短語(NP)可以由一個可選的限定詞(DT)、零個或多個形容詞(JJ)和一個名詞(NN)組成。通過這個規則,代碼將句子分成了名詞短語和其他部分。最后,代碼調用matplotlib庫將分塊結果可視化,以便更好地理解和分析句子的結構。

五、命名實體識別

在自然語言處理(NLP)的過程中,首先使用word_tokenize函數將句子分解成基本的語言單位,即單詞列表。隨后,pos_tag函數對這些單獨的單詞進行詞性標注,為每個單詞分配一個對應的詞性縮寫,從而形成單詞及其詞性的元組列表。這些準備工作完成后,ne_chunk函數進一步分析這個已標注的單詞列表,專門識別并標記出文本中的命名實體,如人名、地點、組織名稱等。

六、數據清洗實例

本部分進行了一個文本數據清洗的實例分析,對原始文本數據進行了徹底的數據清洗,以去除噪聲并突出顯示關鍵信息。首先是通過正則表達式去除HTML標簽、特殊符號(如推特句柄和話題標簽)以及貨幣符號。接下來,移除了文本中的超鏈接和一些常見的英文縮寫形式。此外,還去除了多余的空格,并且刪除了長度為1或2的單詞,這通常包括了一些不太具有分析價值的詞。進一步使用了NLTK庫來實現自動分詞,并將分詞后的結果與英語停用詞列表進行對比,從而剔除了諸如“is”、“and”和“the”這樣的常見詞匯。這些詞匯雖然在文本中頻繁出現,但對于理解文本的主題和結構通常幫助不大。最終,經過這些細致的清洗步驟,得到了一個清晰、整潔的文本數據集,這將為后續的分析工作提供堅實的基礎。

?

import re
from nltk.corpus import stopwords
# 輸入數據
s = '    RT @Amila #Test\nTom\'s newly listed Co  & Mary\'s unlisted     Group to supply tech for nlTK.\nh $TSLA $AAPL https:// t.co/x34afsfQsh'#指定停用詞
cache_english_stopwords = stopwords.words('english')def text_clean(text):print('原始數據:', text, '\n')# 去掉HTML標簽(e.g. &)text_no_special_entities = re.sub(r'\&\w*;|#\w*|@\w*', '', text)print('去掉特殊標簽后的:', text_no_special_entities, '\n')# 去掉一些價值符號text_no_tickers = re.sub(r'\$\w*', '', text_no_special_entities) print('去掉價值符號后的:', text_no_tickers, '\n')# 去掉超鏈接text_no_hyperlinks = re.sub(r'https?:\/\/.*\/\w*', '', text_no_tickers)print('去掉超鏈接后的:', text_no_hyperlinks, '\n')# 去掉一些專門名詞縮寫,簡單來說就是字母比較少的詞text_no_small_words = re.sub(r'\b\w{1,2}\b', '', text_no_hyperlinks) print('去掉專門名詞縮寫后:', text_no_small_words, '\n')# 去掉多余的空格text_no_whitespace = re.sub(r'\s\s+', ' ', text_no_small_words)text_no_whitespace = text_no_whitespace.lstrip(' ') print('去掉空格后的:', text_no_whitespace, '\n')# 分詞tokens = word_tokenize(text_no_whitespace)print('分詞結果:', tokens, '\n')    # 去停用詞list_no_stopwords = [i for i in tokens if i not in cache_english_stopwords]print('去停用詞后結果:', list_no_stopwords, '\n')# 過濾后結果text_filtered =' '.join(list_no_stopwords) # ''.join() would join without spaces between words.print('過濾后:', text_filtered)text_clean(s)

結果如下:

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/34940.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/34940.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/34940.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡安全之Windows提權(上篇)(高級進階)

目錄 一,什么是提權? 二,提權的前提 三,如何提權? 1,第一步連接服務器 2,提升權限至iuser?編輯 3,利用補丁漏洞提權至最高級 四,總結 一,什么是提權&am…

大數據集群數據傳輸

簡單的服務器間的通信示例 netcat,簡寫為 nc,是 unix 系統下一個強大的命令行網絡通信工具,用于在兩臺主機之間建立 TCP 或者 UDP 連接,并提供豐富的命令進行數據通信。nc 在網絡參考模型屬于應用層。使用 nc 可以做很多事情&…

docker-compose 之 達夢數據庫(dm8-v202406版)

1、達夢官方沒有提供鏡像直接 pull 的方式,提供的是鏡像的 tar 包,所以需要先去官網下載tar包。 2、然后使用如下 docker load 命令導入鏡像到服務上: docker load -i dm8_20240422_x86_rh6_64_rq_std_8.1.3.100_pack2.tar導入完成后&#…

重磅丨上海容大推出“容聆”智能拾音工牌,賦能線下門店運營數字化

近日,繼豚音營業廳智能質檢終端之后,上海容大數字技術有限公司(簡稱“上海容大”)在線下面對面溝通場景下語音數據采集與智能分析領域取得了新突破,重磅推出AI智能語音工牌產品——“容聆”。 據悉,“容聆”…

mybatis x插件的使用教程(詳細)

MyBatisX 的主要功能 代碼生成: 自動生成 MyBatis 的 Mapper、XML 配置文件和實體類,大大減少手工編寫代碼的工作量。 智能代碼補全: 提供 SQL 語句和 MyBatis 配置的智能代碼補全功能,使開發者能夠更快地編寫代碼。 代碼導航&…

鈾的危害和應用,以及鈾的分離提純

鈾是一種錒系放射性元素,對人體存在一定的危害,如輻射損傷、呼吸系統損傷、神經系統損傷、免疫系統損傷等。 1、輻射損傷:鈾的放射性會對人體產生輻射損傷,長期接觸會增加患癌癥的風險。此外,還可能對人體正常細胞產生…

【網絡安全的神秘世界】解決dvwa靶場報錯:Illegal mix of collations for operation ‘UNION‘

🌝博客主頁:泥菩薩 💖專欄:Linux探索之旅 | 網絡安全的神秘世界 | 專接本 | 每天學會一個滲透測試工具 🚩問題描述 當嘗試執行如下 SQL 語句時: 1 union select schema_name,1 from information_schema.s…

如何挑選護眼燈?一分鐘帶你了解挑選護眼燈的六大準則!

小時候,對正確用眼知識一無所知,也不明白何種光線環境對眼睛最為友善,結果如今的近視度數已瀕臨千度大關。雖然早已習慣佩戴眼鏡的生活,但近視所帶來的諸多不便仍舊在日常生活中無處不在。因此,對于家中孩子的視力健康…

第六十七:iview的select組件在頁面上,下拉數據被遮擋

iview的select組件在頁面上,下拉數據被遮擋 加上**:transfer"true"** 代碼截圖: 官方解說截圖:因為默認值是false 所以要改成:transfer“true”

人工智能水平國際領先,科大訊飛再獲國家科學技術進步獎一等獎

科大訊飛在2023年6月24日榮獲國家科學技術進步獎一等獎,這是對其在多語種智能語音技術及產業化領域取得的突破性成果的高度認可。科大訊飛的這一成就,標志著其在人工智能領域的技術實力和創新能力已達到國際領先水平。 據「TMT星球」了解,科大…

WMV 視頻格式怎么轉換?WMV 視頻為什么不流行了?

目前有越來越多的視頻格式類型,如常見的 MP4、FLV、AVI 等等,而技術的演變也逐漸讓一些常見的視頻格式變的越來越少了。 今天我們一起來聊下 WMV 這個視頻格式,讓我們看看它的發展以及為什么現在越來越少人使用了。 什么是 WMV 視頻格式&…

Git 使用指南(附詳細解釋)

Git 是一個強大的版本控制系統,廣泛用于軟件開發中,用于跟蹤文件的更改、協作工作等。無論你是新手還是有經驗的開發者,掌握 Git 都是非常有益的。這篇博客將帶你了解 Git 的基本使用,希望能幫助你快速入門并有效使用 Git。 1. 創…

論文學習_Nebula: Self-Attention for Dynamic Malware Analysis

論文名稱發表時間發表期刊期刊等級研究單位Nebula: Self-Attention for Dynamic Malware Analysis2024年IEEE TIFSCCF A熱那亞大學1. 引言 研究背景與現存問題:動態惡意軟件分析是一項至關重要的任務,不僅對于檢測而且對于了解整個互聯網上廣泛傳播的威脅而言。 收集樣本后,…

【windows|011】TCP/IP5層模型常見協議及應用總結大全

🍁博主簡介: 🏅云計算領域優質創作者 🏅2022年CSDN新星計劃python賽道第一名 🏅2022年CSDN原力計劃優質作者 ? 🏅阿里云ACE認證高級工程師 ? 🏅阿里云開發者社區專家博主 💊交流社…

記一次面試

Linux查日志,怎么把最后1000行寫到另一個文件中 在Linux中,如果你想要查看日志文件的最后1000行并將其寫入到另一個文件中,你可以使用tail命令。tail命令默認用于輸出文件的最后幾行。 以下是如何使用tail命令將日志文件的最后1000行寫入到另…

java設計模式(二)工廠方法模式(pattern of factory method)

1、模式介紹: 工廠方法模式(pattern of factory method)是一種創建型設計模式,它定義了一個用于創建對象的接口,但將實際創建對象的工作延遲到子類中,這樣可以在不改變整體結構的情況下,通過子…

課時166:腳本發布_腳本技巧_技巧解讀

2.3.1 技巧解讀 學習目標 這一節,我們從 簡單腳本、復雜腳本、注意事項、小結 四個方面來學習 簡單腳本 簡介 1、手工執行的命令一定要可執行2、命令簡單羅列3、固定的內容變量化4、功能函數化復雜腳本 實踐 1、手工執行的命令一定要可執行2、根據發布流程編寫…

第二節課 6月13日 ssh密鑰登陸方式

centos和ubuntu openssh服務的初始安裝 一、實驗:ubuntu系統激活root用戶 ubuntu系統如何激活root用戶,允許root用戶ssh登陸? 1、ubuntu默認root用戶未設置密碼,未激活 激活root用戶,設置root密碼 sudo passwd roo…

vray燈光導致3dmax崩潰怎么解決?

啟動時崩潰 解決方法: 1、兼容模式重新打開 具體步驟:【選中會閃退3dmax版本】——【右鍵“兼容性疑難解答”】——【下一步】——【選擇Windows7/10】——【下一步】——【啟動程序】 啟動完成后,【下一步】——【為我保存這些設置】—完…

CI構建pipelines

目錄 構建代碼風格代碼覆蓋率靜態檢測 CI構建可以分為幾個部分:構建代碼(可以是多個平臺)——>UT用例 ——> 代碼覆蓋率 ——> 代碼靜態檢測 首先保證有可以CMakeLists.txt可以在本地正常編譯業務代碼和UT代碼 構建 首先需要有ci構…