




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《自然語言處理技術》初識文本基礎處理——自動提取文本關鍵詞實訓目標掌握讀取文檔的方法。掌握自定義Stop_words函數獲取停用詞列表,自定義Filter_word函數處理文檔的方法。掌握使用TF-IDF算法對關鍵詞進行提取的方法。實訓環境環境版本說明Windows1064電腦操作系統Python3.8.5Python語言版本pandas1.3.0主要用于數據讀取、清洗等操作NumPy1.21.6主要用于Python中的數值計算jieba0.42.1主要用于文本分詞Gensim4.2.0主要用于檢索文本、計算文本相似度、訓練詞向量、建模主題等Matplotlib3.3.0主要用于數據可視化PaddlePaddle2.4.2是一個深度學習框架,提供了高效的計算框架和優化算法PaddleSpeech1.2.0主要用于語音和音頻中的各種關鍵任務的開發scikit-learn1.0.2廣泛地用于統計分析和機器學習建模等數據科學領域Librosa0.8.1主要用于分析一般的音頻信號,是一個非常強大的Python語音信號處理的第三方庫NLTK3.5是一個常用的自然語言處理工具包,可用于文本處理、語義分析、詞性標注等SciPy1.7.3是一個科學計算工具包,可用于數學、科學、工程學等領域pyttsx32.9.0主要用于將文本轉換成語音實訓說明自動提取文本關鍵詞任務是指通過計算機自動化地從一篇或多篇文本中提取出最具代表性、最能反映文本主題的關鍵詞或短語。本任務根據TF-IDF算法原理自定義一個TF-IDF算法函數,并通過實例介紹關鍵詞自動提取。關鍵詞提取流程主要包括讀取文檔、文本預處理和TF-IDF實現等步驟,如REF_Ref130823501\h圖21所示。圖STYLEREF1\s2SEQ圖\*ARABIC\s11提取文本關鍵詞具體步驟實訓步驟讀取文檔本任務以嫦娥五號的相關新聞為例,進行文檔讀取。讀取文檔,如REF_Ref131960728\h代碼21所示。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s11讀取文檔defread_txt_file(file_path):"讀取txt文件,返回文件內容"withopen(file_path,'r',encoding='utf-8')asf:#file_path:文件路徑content=f.read()returncontentfile_path='../data/input.txt'content=read_txt_file(file_path)print(content)運行讀取文檔代碼,得到的文檔內容如下。嫦娥五號實現我國首次地外天體起飛科技日報北京12月3日電(李晨記者付毅飛)記者從國家航天局獲悉,12月3日23時10分,嫦娥五號上升器3000牛發動機工作約6分鐘,成功將攜帶樣品的上升器送入到預定環月軌道。這是我國首次實現地外天體起飛。與地面起飛不同,嫦娥五號上升器月面起飛不具備成熟的發射塔架系統,著陸器相當于上升器的“臨時塔架”,上升器起飛存在起飛初始基準與起飛平臺姿態不確定、發動機羽流導流空間受限、地月環境差異等問題。另外由于月球上沒有導航星座,上升器起飛后,需在地面測控輔助下,借助自身攜帶的特殊敏感器實現自主定位、定姿。點火起飛前,著上組合體實現月面國旗展開以及上升器、著陸器的解鎖分離。此次國旗展開是我國在月球表面首次實現國旗的“獨立展示”。點火起飛后,上升器經歷垂直上升、姿態調整和軌道射入三個階段,進入預定環月飛行軌道。隨后,上升器將與環月等待的軌返組合體交會對接,將月球樣品轉移到返回器,后者將等待合適的月地入射窗口,做好返回地球的準備。文本預處理讀入需要提取關鍵字的文檔之后,需要進行預處理。文本預處理包括加載停用詞、對當前文檔進行分詞和詞性標注,以及過濾一些對提取關鍵詞幫助不大的詞。在本步驟中,只將名詞作為候選關鍵詞,在過濾詞中只留下名詞,并且刪除長度小于或等于1的無意義詞語。文本預處理的具體步驟如REF_Ref132922000\h圖22所示。圖STYLEREF1\s2SEQ圖\*ARABIC\s12文本預處理具體步驟獲取停用詞列表加載停用詞文件stopword.txt并按行讀取文件中的停用詞,對文本中多余的換行符進行替換,最終獲取停用詞列表。其中,自定義Stop_words函數用于獲取停用詞列表。加載停用詞文件stopword.txt,如REF_Ref130822444\h代碼22所示。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s12加載停用詞文件stopword.txtdefStop_words():#創建一個空列表,用于存儲停用詞stopword=[]data=[]#打開停用詞文件f=open('../data/stopword.txt')#逐行讀取文件中的內容forlineinf.readlines():#去除行末的換行符,并將處理后的字符串添加到data列表中data.append(line.strip())#將data列表中的字符串添加到stopword列表中foriindata:#去除字符串末尾的換行符,并將處理后的字符串添加到stopword列表中output=i.replace('\n','')stopword.append(output)#返回停用詞列表returnstopword#調用Stop_words函數,并輸出停用詞列表print('停用詞列表(前5個):\n',Stop_words()[0:5])運行加載停用詞文件代碼,得到停用詞列表的前5個元素如下,主要包括標點符號。停用詞列表(前5個):['\ufeff,','?','】',']','[']過濾停用詞對當前文檔過濾停用詞。自定義Filter_word函數用于對當前文檔進行處理,輸入參數為當前文檔內容。處理后的文檔存放在filter_word變量中,它是一個包含多個字符串的列表。過濾停用詞如REF_Ref131699205\h代碼23所示。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s13過濾停用詞#采用jieba進行詞性標注,對當前文檔過濾詞和停用詞importjieba.possegdefFilter_word(text):original_words=[]#原始詞列表filter_word=[]#過濾后的詞列表stopword=Stop_words()#獲取停用詞列表text=jieba.posseg.cut(text)#使用jieba詞性標注對文本進行分詞forword,flagintext:#遍歷文檔中的每一個詞及其詞性original_words.append(word)#將詞添加到原始詞列表中ifflag.startswith('n')isFalse:#如果當前詞性不是名詞,跳過該詞continueifnotwordinstopwordandlen(word)>1:#如果當前詞不在停用詞列表中且長度大于1,那么將其添加到過濾后的詞列表中filter_word.append(word)returnoriginal_words,filter_word#返回原始詞列表和過濾后的詞列表original_words,filter_word=Filter_word(content)#調用Filter_word函數處理文本print("過濾前的詞列表:",original_words[0:10])#打印過濾前的詞列表前10個詞print("過濾后的詞列表:",filter_word[0:10])#打印過濾后的詞列表前10個詞運行過濾停用詞代碼,得到過濾前詞列表的前十個詞和過濾后詞列表的前十個詞如下。過濾前的詞列表:['嫦娥','五號','實現','我國','首次','地外','天體','起飛','科技日報','北京']過濾后的詞列表:['嫦娥','天體','科技日報','北京','李晨','記者','付毅飛','記者','國家航天局','嫦娥']在過濾前的詞列表中,包含了文本中出現的前10個詞,如:“嫦娥”“五號”“實現”“我國”等。過濾前的詞列表中既包括名詞,也包括其他詞性的詞。經過過濾后的詞列表只保留了名詞且不在停用詞列表中的詞,如:“嫦娥”“天體”“科技日報”“北京”等。TF-IDF實現最后使用TF-IDF算法對關鍵詞進行提取。在自定義的tf_idf函數中,算法實現分為以下3個步驟。調用自定義的Filter_word函數處理當前文檔,統計每個詞的TF值。調用自定義的Filter_words函數處理整個文檔集,統計IDF值。將TF值和IDF值相乘,得到每個詞的TF-IDF值。通過自定義的tf_idf函數能夠實現對文檔中關鍵詞的提取。提取文檔關鍵詞如REF_Ref130822687\h代碼24所示。通過實現TF-IDF算法,分別計算文檔中每個詞的TF值和IDF值,將二者相乘得到TF-IDF值,然后按照TF-IDF值從高到低排序,提取前10個關鍵詞。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s14提取文檔關鍵詞importmathimportoperator#加載文檔集,對文檔集過濾詞和停用詞defFilter_words(data_path='../data/corpus.txt'):document=[]forlineinopen(data_path,'r',encoding='utf8'):segment=jieba.posseg.cut(line.strip())filter_words=[]stopword=Stop_words()forword,flaginsegment:ifflag.startswith('n')isFalse:continueifnotwordinstopwordandlen(word)>1:filter_words.append(word)document.append(filter_words)returndocumentdeftf_idf():#統計TF值,即每個詞在文本中出現的頻率tf_dict={}original_words,filter_word=Filter_word(content)#通過Filter_word函數去除停用詞等無用詞匯,返回文本中的單詞列表forwordinfilter_word:ifwordnotintf_dict:tf_dict[word]=1else:tf_dict[word]+=1forwordintf_dict:tf_dict[word]=tf_dict[word]/len(content)#計算每個詞的頻率,即出現次數除以總單詞數#統計IDF值,即每個詞在所有文本中出現的頻率倒數的對數idf_dict={}document=Filter_words()#通過Filter_words函數獲取所有文本,每個文本都是一個單詞列表doc_total=len(document)#計算文本總數fordocindocument:forwordinset(doc):ifwordnotinidf_dict:idf_dict[word]=1else:idf_dict[word]+=1forwordinidf_dict:idf_dict[word]=math.log(doc_total/(idf_dict[word]+1))#計算每個詞的IDF值#計算TF-IDF值,即每個詞的TF值乘以其IDF值tf_idf_dict={}forwordinfilter_word:ifwordnotinidf_dict:idf_dict[word]=0#若一個詞在所有文本中都沒有出現過,則其IDF值為0tf_idf_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國儀表配套撥盤旋鈕行業市場發展前景及發展趨勢與投資戰略研究報告(2024-2030)
- 2024-2025學年福建省龍巖市一級校聯盟高二下學期期中政治試題及答案
- 珠寶培訓師的課件
- 2022-2027年中國縣域電商行業發展監測及發展戰略規劃報告
- 污水處理開題報告書
- 2025年 湖州南潯區教育局中小學儲備教師招聘考試筆試試題附答案
- 2025年 非高危行業安全生產管理能力考試練習題附答案
- 中國太平柜行業市場發展前景及發展趨勢與投資戰略研究報告(2024-2030)
- 化工程學院081100控制科學與工程報錄數據分析報告初試+
- 中國電動工具行業市場全景監測及投資前景展望報告
- 大疆無人機內部管理制度
- 2025長沙市輔警考試試卷真題帶答案
- 胸痛健康教育課件
- 2025年合肥城建發展股份有限公司及所屬子公司招聘17人(二批次)筆試參考題庫附帶答案詳解
- 2025年項目終止協議
- 醫院員工手冊管理制度
- 泉州水務集團有限公司招聘考試真題2024
- 東航客運崗位面試題目及答案
- 三級營養師考試復習重點題(附答案)
- 2025裝配式混凝土居住建筑首個標準層段聯合驗收規程
- 2025年人教版小學數學三年級下冊期末考試卷(帶答案)
評論
0/150
提交評論