自然語言及語音處理項目式教程 習題庫05-實操題_第1頁
自然語言及語音處理項目式教程 習題庫05-實操題_第2頁
自然語言及語音處理項目式教程 習題庫05-實操題_第3頁
自然語言及語音處理項目式教程 習題庫05-實操題_第4頁
自然語言及語音處理項目式教程 習題庫05-實操題_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實操題初識文本基礎處理使用TF-IDF算法提取科研論文摘要中的關鍵詞隨著科研領域的快速發展,越來越多的研究者們撰寫并發表科研論文。通過對科研論文摘要的文本分析,找出關鍵詞匯,有助于更好地了解當前研究的熱點和趨勢。針對一篇科研論文摘要文本'abstract.txt',要求如下:1.進行數據讀取。2.使用jieba庫對文本進行分詞。3.使用TF-IDF模塊提取關鍵詞。4.輸出提取到的關鍵詞及其權重。5.繪制關鍵詞詞云圖。【考察知識點】jieba庫中文分詞,TF-IDF提取關鍵詞。【答案解析】進行數據讀取。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s11進行數據讀取#讀取科研論文摘要文本withopen('abstract.txt','r',encoding='utf-8')asf:text=f.read()運行REF_Ref134492830\h代碼21,輸出科研論文摘要文本如下。摘要內容:為了提高運輸安全管理水平和運輸效率,對運輸車輛安全性進行客觀評價,提出了一種結合多算法的行車安全評價模型。首先,根據交通運輸部公路科學研究院所給車聯網數據,設計并定義了駕駛人行為的特征指標和評價指標;其次,采用回歸分析方法對駕駛人的駕駛風格進行分析;接著,分別采用K-means聚類和DBSCAN聚類算法對駕駛人的不良行為進行分析;經過對比,最終選用K-means聚類算法和因子分析的結果對駕駛行為進行評價,共分為6類。該模型將機器學習中的數據挖掘和數據分析算法與道路運輸行業相結合,為道路運輸安全管理的研究提供了一個量化分析的工具。使用jieba庫對文本進行分詞。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s12使用jieba庫對文本進行分詞importjieba#對科研論文摘要進行分詞words=jieba.lcut(text)print('摘要內容分詞:\n',words)運行REF_Ref134492844\h代碼22,得到摘要內容分詞結果如下。摘要內容分詞:['為了','提高','運輸','安全','管理水平','和','運輸','效率',',','','對','運輸','車輛','安全性','進行','客觀','評價',',','','提出','了','一種','結合','多','算法','的','行車','\n','安全','評價','模型','。','首先',',','','根據','交通運輸','部','公路','科學','研究院所','給','車','聯網','數據',',','','設計','并','定義','了','駕駛','人','行為','的','特征','指標','和','\n','評價','指標',';','其次',',','','采用','回歸','分析方法','對','駕駛','人','的','駕駛','風格','進行','分析',';','接著',',','','分別','采用','K','-','means','','聚類','和','DBSCAN','','聚','\n','類','算法','對','駕駛','人','的','不良行為','進行','分析',';','經過','對比',',','','最終','選用','K','-','means','','聚類','算法','和','因子分析','的','結果','對','駕駛','行為','進行','\n','評價',',','','共','分為','6','','類','。','該','模型','將','機器','學習','中','的','數據挖掘','和','數據分析','算法','與','道路','運輸','行業','相結合',',','','為','道路','運輸','安全','管','\n','理','的','研究','提供','了','一個','量化','分析','的','工具','。']使用TF-IDF模塊提取關鍵詞。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s13使用TF-IDF模塊提取關鍵詞importjieba.analyse#提取關鍵詞及其權重keywords=jieba.analyse.extract_tags(text,topK=10,withWeight=True)輸出提取到的關鍵詞及其權重。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s14輸出提取到的關鍵詞及其權重#輸出關鍵詞及其權重forkeyword,weightinkeywords:print(f"{keyword}:{weight}")運行REF_Ref134492812\h代碼24,輸出提取到的關鍵詞及其權重如下。駕駛:0.4017321978955556算法:0.3862751777391111運輸:0.35680599765666665評價:0.2999640972475556means:0.26566150006444444聚類:0.26566150006444444安全:0.18484325855733333進行:0.16564999088977778分析:0.16145350054666666模型:0.15129119857777779繪制關鍵詞詞云圖。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s15繪制關鍵詞詞云圖fromwordcloudimportWordCloudimportmatplotlib.pyplotasplt#將關鍵詞轉換為適合詞云圖的格式keywords_dict={keyword:weightforkeyword,weightinkeywords}#生成詞云圖Wordcloud=WordCloud(font_path='SimHei.ttf',background_color='white').generate_from_frequencies(keywords_dict)#顯示詞云圖plt.imshow(Wordcloud,interpolation='bilinear')plt.axis("off")plt.show()運行REF_Ref134492598\h代碼25,繪制關鍵詞詞云圖如REF_Ref134492628\h圖21所示。圖STYLEREF1\s2SEQ圖\*ARABIC\s11關鍵詞詞云圖使用jieba庫對新聞文本進行中文分詞并分析高頻詞匯隨著社會信息化的快速發展,新聞報道的數量不斷攀升,獲取和分析新聞文本的關鍵信息變得越來越重要。通過對新聞文本進行分詞和統計分析,可以幫助我們了解新聞報道中的熱點話題和關注焦點。針對一篇新聞文本'news.txt',要求如下:1.進行數據讀取。2.使用jieba庫對文本進行中文分詞。3.統計分詞后的高頻詞匯。4.輸出高頻詞匯及其出現次數。5.繪制高頻詞匯條形圖。【考察知識點】jieba庫中文分詞,詞頻統計。【答案解析】進行數據讀取。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s16進行數據讀取#使用with語句和open()函數打開名為'news.txt'的文件#'r'表示以只讀模式(readmode)打開文件,encoding='utf-8'表示使用UTF-8編碼來讀取文件#使用with語句的好處是在代碼塊執行完畢后,會自動關閉文件,無需手動關閉withopen('news.txt','r',encoding='utf-8')asfile:#使用file對象的read()方法來讀取文件的全部內容#將文件內容存儲在名為text的變量中text=file.read()print('新聞內容:\n',text)運行REF_Ref134491373\h代碼26,得到新聞內容如下。新聞內容:2022-2023賽季美職籃季后賽7日展開兩場半決賽較量,哈登率領的費城76人隊通過加時賽以116:115險勝波士頓凱爾特人隊,而約基奇領銜的丹佛掘金隊以124:129不敵菲尼克斯太陽隊,兩連敗后被對手將總比分追為2:2。前兩場有些低迷的哈登此役迎來爆發,帶領76人隊在上半場一度領先凱爾特人16分之多。隨著塔圖姆在第三節復蘇,凱爾特人隊不斷縮小分差,并在末節追平了比分。隨后的哈登兩次扮演“關鍵先生”,先是在末節最后時刻單打防守球員拋投得手,以107:107扳平比分并將比賽拖入加時賽;加時賽命懸一線之際,又是哈登外線命中,以116:115“絕殺”對手。閃耀全場的哈登拿下了全場最高的42分,并有8個籃板和9次助攻;隊友恩比德也貢獻了34分和13個籃板。凱爾特人隊雖然多點開花,有6人得分上雙,但沒能把握住關鍵得分。此役過后,雙方總比分戰成2:2。掘金隊與太陽隊的比賽同樣打得難解難分。比賽開始后兩隊進入狀態都很快,進攻效率較高,多次上演對攻模式。上半場戰罷,太陽隊以63:61領先。易邊再戰后,比賽依然較為膠著,太陽隊在第三節末段連續命中三分,以6分的優勢進入末節,并憑借整體發揮守住了勝果,以129:124獲勝。連贏兩場的太陽隊將總比分扳為2:2。掘金隊當家球星約基奇雖然延續了神勇表現,砍下53分、11次助攻和4個籃板的豪華數據,但難敵太陽“雙核”布克、杜蘭特合砍72分。使用jieba庫對文本進行中文分詞。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s17使用jieba庫對文本進行中文分詞#導入jieba庫,用于中文分詞處理importjieba#使用jieba庫的cut方法對text變量中的文本進行分詞#參數cut_all=False表示使用精確模式進行分詞,這種模式適用于大多數情況#將分詞結果存儲在seg_list變量中,此時seg_list為一個迭代器seg_list=jieba.lcut(text)stopwords=list(set('的以了"01234567890123456789.,,、。::;?!“”‘’()【】[]{}《》<>〈〉…—·¥$$%%&&**++--//==\\||~~""'.split()))stopwords.append('')stopwords.append('\n')filtered_words=[wordforwordinseg_listifwordnotinstopwords]print('新聞內容分詞結果:\n',seg_list)運行REF_Ref134491488\h代碼27,得到新聞內容分詞結果如下。新聞內容分詞結果:['2022','-','2023','賽季','美職籃','季后賽','7','日','展開','兩場','半決賽','較量',',','哈登','率領','的','費城','76','人隊','通過','加時賽','以','116',':','115','險勝','波士頓','凱爾特人','隊',',','而','約基','奇','領銜','的','丹佛掘金','隊以','124',':','129','不敵','菲尼克斯','太陽隊',',','兩連敗','后','被','對手','將','總比分','追為','2',':','2','。','前','兩場','有些','低迷','的','哈登','此役','迎來','爆發',',','帶領','76','人隊','在','上半場','一度','領先','凱爾特人','16','分之多','。','隨著','塔圖姆','在','第三節','復蘇',',','凱爾特人','隊','不斷','縮小','分差',',','并','在','末節','追平','了','比分','。','隨后','的','哈登','兩次','扮演','“','關鍵','先生','”',',','先是','在','末節','最后','時刻','單打','防守','球員','拋投','得手',',','以','107',':','107','扳平','比分','并','將','比賽','拖入','加時賽',';','加時賽','命懸','一線','之際',',','又','是','哈登','外線','命中',',','以','116',':','115','“','絕殺','”','對手','。','閃耀','全場','的','哈登','拿下','了','全場','最高','的','42','分',',','并','有','8','個','籃板','和','9','次','助攻',';','隊友','恩','比德','也','貢獻','了','34','分','和','13','個','籃板','。','凱爾特人','隊','雖然','多點','開花',',','有','6','人','得分','上','雙',',','但','沒能','把握住','關鍵','得分','。','此役','過后',',','雙方','總比分','戰成','2',':','2','。','掘金隊','與','太陽隊','的','比賽','同樣','打','得','難解難分','。','比賽','開始','后','兩隊','進入狀態','都','很快',',','進攻','效率','較','高',',','多次','上演','對攻','模式','。','上半場','戰罷',',','太陽隊','以','63',':','61','領先','。','易邊','再','戰后',',','比賽','依然','較為','膠著',',','太陽隊','在','第三節','末段','連續','命中','三分',',','以','6','分','的','優勢','進入','末節',',','并','憑借','整體','發揮','守住','了','勝果',',','以','129',':','124','獲勝','。','連贏','兩場','的','太陽隊','將','總比分','扳為','2',':','2','。','掘金隊','當家','球星','約基','奇','雖然','延續','了','神勇','表現',',','砍','下','53','分','、','11','次','助攻','和','4','個','籃板','的','豪華','數據',',','但','難','敵','太陽','“','雙核','”','布克','、','杜蘭特','合砍','72','分','。']統計分詞后的高頻詞匯。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s18統計分詞后的高頻詞匯#導入collections模塊中的Counter類,用于統計詞頻fromcollectionsimportCounter#使用Counter類對seg_list變量中的分詞結果進行詞頻統計#Counter類接受一個可迭代對象(如列表、元組或字符串)作為輸入,并生成一個字典,其中鍵為不同的元素,值為元素出現的次數#將詞頻統計結果存儲在word_freq變量中word_freq=Counter(filtered_words)print('詞頻統計結果',word_freq)運行REF_Ref134491563\h代碼28,得到詞頻統計結果如下。詞頻統計結果Counter({'哈登':5,'太陽隊':5,'在':5,'分':5,'凱爾特人':4,'并':4,'比賽':4,'兩場':3,'加時賽':3,'隊':3,'將':3,'總比分':3,'末節':3,'個':3,'籃板':3,'和':3,'76':2,'人隊':2,'116':2,'115':2,'約基':2,'奇':2,'124':2,'129':2,'后':2,'對手':2,'此役':2,'上半場':2,'領先':2,'第三節':2,'比分':2,'關鍵':2,'107':2,'命中':2,'全場':2,'有':2,'次':2,'助攻':2,'雖然':2,'得分':2,'但':2,'掘金隊':2,'2022':1,'2023':1,'賽季':1,'美職籃':1,'季后賽':1,'日':1,'展開':1,'半決賽':1,'較量':1,'率領':1,'費城':1,'通過':1,'險勝':1,'波士頓':1,'而':1,'領銜':1,'丹佛掘金':1,'隊以':1,'不敵':1,'菲尼克斯':1,'兩連敗':1,'被':1,'追為':1,'前':1,'有些':1,'低迷':1,'迎來':1,'爆發':1,'帶領':1,'一度':1,'16':1,'分之多':1,'隨著':1,'塔圖姆':1,'復蘇':1,'不斷':1,'縮小':1,'分差':1,'追平':1,'隨后':1,'兩次':1,'扮演':1,'先生':1,'先是':1,'最后':1,'時刻':1,'單打':1,'防守':1,'球員':1,'拋投':1,'得手':1,'扳平':1,'拖入':1,'命懸':1,'一線':1,'之際':1,'又':1,'是':1,'外線':1,'絕殺':1,'閃耀':1,'拿下':1,'最高':1,'42':1,'隊友':1,'恩':1,'比德':1,'也':1,'貢獻':1,'34':1,'13':1,'多點':1,'開花':1,'人':1,'上':1,'雙':1,'沒能':1,'把握住':1,'過后':1,'雙方':1,'戰成':1,'與':1,'同樣':1,'打':1,'得':1,'難解難分':1,'開始':1,'兩隊':1,'進入狀態':1,'都':1,'很快':1,'進攻':1,'效率':1,'較':1,'高':1,'多次':1,'上演':1,'對攻':1,'模式':1,'戰罷':1,'63':1,'61':1,'易邊':1,'再':1,'戰后':1,'依然':1,'較為':1,'膠著':1,'末段':1,'連續':1,'三分':1,'優勢':1,'進入':1,'憑借':1,'整體':1,'發揮':1,'守住':1,'勝果':1,'獲勝':1,'連贏':1,'扳為':1,'當家':1,'球星':1,'延續':1,'神勇':1,'表現':1,'砍':1,'下':1,'53':1,'11':1,'豪華':1,'數據':1,'難':1,'敵':1,'太陽':1,'雙核':1,'布克':1,'杜蘭特':1,'合砍':1,'72':1})輸出高頻詞匯及其出現次數。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s19輸出高頻詞匯及其出現次數#使用Counter對象的most_common()方法獲取詞頻最高的10個詞匯及其出現次數#most_common()方法返回一個包含元組的列表,每個元組包含兩個元素,第一個元素是詞匯,第二個元素是詞匯出現的次數#這里使用for循環遍歷這個列表,將詞匯及其出現次數分別賦值給word和freq變量forword,freqinword_freq.most_common(10):#使用print()函數輸出詞匯及其出現次數#這里使用了格式化字符串(f-string)來簡化字符串的拼接print(f'{word}:{freq}')運行REF_Ref134491582\h代碼29,輸出高頻詞匯及其出現次數如下。哈登:5太陽隊:5在:5分:5凱爾特人:4并:4比賽:4兩場:3加時賽:3隊:3繪制高頻詞匯條形圖。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s110繪制高頻詞匯條形圖#導入matplotlib庫中的pyplot模塊,用于繪制圖形importmatplotlib.pyplotasplt#使用Counter對象的most_common()方法獲取詞頻最高的10個詞匯及其出現次數,并使用zip()函數將其解壓為兩個列表#words列表存儲詞匯,freqs列表存儲對應的詞頻words,freqs=zip(*word_freq.most_common(10))#使用plt.bar()函數繪制條形圖,橫坐標為詞匯,縱坐標為詞頻plt.bar(words,freqs)#使用plt.xlabel()函數設置x軸標簽為'Words'plt.xlabel('Words')#使用plt.ylabel()函數設置y軸標簽為'Frequency'plt.ylabel('Frequency')#使用plt.title()函數設置圖形標題為'新聞文本中的出現前10詞匯'plt.title('新聞文本中的出現前10詞匯')#使用plt.show()函數顯示繪制的圖形plt.show()運行REF_Ref134491624\h代碼210,得到新聞文本中的出現前10詞匯柱狀圖如REF_Ref134491642\h圖22所示。圖STYLEREF1\s2SEQ圖\*ARABIC\s12新聞文本中的出現前10詞匯使用停用詞表對社交媒體評論文本進行過濾并輸出高頻詞匯隨著社交媒體的普及,用戶在各類平臺上發布的評論數量逐漸增加。獲取并分析評論文本中的關鍵信息有助于了解用戶的需求和關注點。通過對評論文本進行分詞、統計分析以及使用停用詞表進行過濾,可以更準確地找到評論中的核心詞匯。針對一篇社交媒體評論文本'comments.txt',要求如下:1.進行數據讀取。2.使用jieba庫對文本進行中文分詞。3.使用停用詞表對分詞結果進行過濾。4.統計過濾后的高頻詞匯。5.輸出高頻詞匯及其出現次數。【考察知識點】jieba庫中文分詞,停用詞表過濾,詞頻統計。【答案解析】進行數據讀取。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s111進行數據讀取#使用with語句和open()函數打開名為'comments.txt'的文件#'r'表示以只讀模式(readmode)打開文件,encoding='utf-8'表示使用UTF-8編碼來讀取文件#使用with語句的好處是在代碼塊執行完畢后,會自動關閉文件,無需手動關閉withopen('comments.txt','r',encoding='utf-8')asfile:#使用file對象的read()方法來讀取文件的全部內容#將文件內容存儲在名為text的變量中text=file.read()print('評價內容:\n',text[0:100])運行REF_Ref134491692\h代碼211,得評價內容如下。評價內容:寶貝已經收到了,試用了一段時間,運行平穩,速度還不錯!8*128很給力!外形外觀:外觀華麗,時尚屏幕音效:音質很好!分辨率相當不錯!物超所值拍照效果:6400萬像素,沒的說,杠杠!運行速度:完使用jieba庫對文本進行中文分詞。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s112使用jieba庫對文本進行中文分詞#導入jieba庫,用于中文分詞處理importjieba#使用jieba庫的cut方法對text變量中的文本進行分詞#參數cut_all=False表示使用精確模式進行分詞,這種模式適用于大多數情況#將分詞結果存儲在seg_list變量中,此時seg_list為一個迭代器seg_list=jieba.lcut(text)print('評價內容分詞結果:\n',seg_list[0:100])運行REF_Ref134491717\h代碼212,得到評價內容分詞結果如下。評價內容分詞結果:['寶貝','已經','收到','了',',','試用','了','一段時間',',','運行','平穩',',','速度','還','不錯','!','8','*','128','很','給','力','!','\n','外形','外觀',':','外觀','華麗',',','時尚','\n','屏幕','音效',':','音質','很','好','!','分辨率','相當','不錯','!','物超所值','\n','拍照','效果',':','6400','萬','像素',',','沒','的','說',',','杠杠','!','\n','運行','速度',':','完美','\n','待機時間',':','待機時間','還好',',','充','一次','電',',','也','就','24','小時','吧','\n','\n','今天','收到','貨',',','非常','驚喜',',','和','實體店','一模一樣',',','覺對','的','正品',',','一直','就','想','買','這款']使用停用詞表對分詞結果進行過濾。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s113使用停用詞表對分詞結果進行過濾#使用with語句和open()函數打開名為'stopwords.txt'的停用詞文件#'r'表示以只讀模式(readmode)打開文件,encoding='utf-8'表示使用UTF-8編碼來讀取文件withopen('stopwordsHIT.txt','r',encoding='utf-8')asfile:#使用file對象的read()方法來讀取文件的全部內容,然后使用splitlines()方法將內容按行拆分為一個列表#將停用詞列表存儲在名為stopwords的變量中stopwords=file.read().splitlines()stopwords.append('')stopwords.append('')stopwords.append('\n')#使用列表推導式對seg_list中的分詞結果進行過濾#只有當詞匯不在stopwords列表中時,才將其添加到filtered_seg_list列表中filtered_seg_list=[wordforwordinseg_listifwordnotinstopwords]print('去停用詞后的評價內容分詞結果:\n',seg_list[0:100])運行REF_Ref134491764\h代碼213,得到去評價內容分詞結果如下。去評價內容分詞結果:['寶貝','已經','收到','了',',','試用','了','一段時間',',','運行','平穩',',','速度','還','不錯','!','8','*','128','很','給','力','!','\n','外形','外觀',':','外觀','華麗',',','時尚','\n','屏幕','音效',':','音質','很','好','!','分辨率','相當','不錯','!','物超所值','\n','拍照','效果',':','6400','萬','像素',',','沒','的','說',',','杠杠','!','\n','運行','速度',':','完美','\n','待機時間',':','待機時間','還好',',','充','一次','電',',','也','就','24','小時','吧','\n','\n','今天','收到','貨',',','非常','驚喜',',','和','實體店','一模一樣',',','覺對','的','正品',',','一直','就','想','買','這款']統計過濾后的高頻詞匯。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s114統計過濾后的高頻詞匯#導入collections模塊中的Counter類,用于統計詞頻fromcollectionsimportCounter#使用Counter類對filtered_seg_list變量中的過濾后的分詞結果進行詞頻統計#Counter類接受一個可迭代對象(如列表、元組或字符串)作為輸入,并生成一個字典,其中鍵為不同的元素,值為元素出現的次數#將詞頻統計結果存儲在word_freq變量中word_freq=Counter(filtered_seg_list)輸出高頻詞匯及其出現次數。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s115輸出高頻詞匯及其出現次數#使用Counter對象的most_common()方法獲取詞頻最高的10個詞匯及其出現次數#most_common()方法返回一個包含元組的列表,每個元組包含兩個元素,第一個元素是詞匯,第二個元素是詞匯出現的次數#這里使用for循環遍歷這個列表,將詞匯及其出現次數分別賦值給word和freq變量forword,freqinword_freq.most_common(10):#使用print()函數輸出詞匯及其出現次數#這里使用了格式化字符串(f-string)來簡化字符串的拼接print(f'{word}:{freq}')運行REF_Ref134491793\h代碼215,輸出高頻詞匯及其出現次數如下。很:33077手機:20876好:17779非常:12865不錯:12023速度:10678拍照:9644外觀:8524運行:8456屏幕:7932使用re庫進行商品評論文本的正則化處理隨著電子商務的快速發展,商品評論的數量逐漸增加,獲取和分析評論文本的關鍵信息對于了解消費者的需求和評價具有重要價值。通過對評論文本進行正則化處理,可以去除無關字符并提取有用信息。針對一篇商品評論文本'product_reviews.txt',要求如下:1.進行數據讀取。2.使用re庫對文本進行正則化處理。3.使用jieba庫對正則化后的文本進行中文分詞。【考察知識點】re庫正則化處理,jieba庫中文分詞。【答案解析】進行數據讀取。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s116進行數據讀取#使用with語句和open()函數打開名為'comments.txt'的文件#'r'表示以只讀模式(readmode)打開文件,encoding='utf-8'表示使用UTF-8編碼來讀取文件#使用with語句的好處是在代碼塊執行完畢后,會自動關閉文件,無需手動關閉withopen('comments.txt','r',encoding='utf-8')asfile:#使用file對象的read()方法來讀取文件的全部內容#將文件內容存儲在名為text的變量中text=file.read()print('評價內容:\n',text[0:100])運行REF_Ref134491843\h代碼216,得到評價內容如下。評價內容:寶貝已經收到了,試用了一段時間,運行平穩,速度還不錯!8*128很給力!外形外觀:外觀華麗,時尚屏幕音效:音質很好!分辨率相當不錯!物超所值拍照效果:6400萬像素,沒的說,杠杠!運行速度:完使用re庫對文本進行正則化處理。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s117使用re庫對文本進行正則化處理importre#使用re.sub()函數替換文本中的非漢字、字母和數字字符為空格normalized_text=re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9]+','',text)#輸出經過正則化處理的文本內容print("\nNormalizedtext:")print(normalized_text)運行REF_Ref134491894\h代碼217,輸出經過正則化處理的文本內容如下。正則化后的文本:寶貝已經收到了試用了一段時間運行平穩速度還不錯8128很給力外形外觀外觀華麗時尚屏幕音效音質很好分辨率相當不錯物超所值拍照效果6400萬像素沒的說杠杠運行速度完美使用jieba庫對正則化后的文本進行中文分詞。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s118使用jieba庫對正則化后的文本進行中文分詞importjiebaseg_list=jieba.cut(normalized_text,cut_all=False)#輸出分詞結果,使用''.join()方法將分詞結果連接成一個字符串print("\nSegmentedtext:")print(''.join(seg_list))運行REF_Ref134491944\h代碼218,得到評價內容分詞結果如下。評價內容分詞結果:['寶貝','已經','收到','了','','試用','了','一段時間','','運行','平穩','','速度','還','不錯','','8','','128','很','給','力','','外形','外觀','','外觀','華麗','','時尚','','屏幕','音效','','音質','很','好','','分辨率','相當','不錯','','物超所值','','拍照','效果','','6400','萬','像素','','沒','的','說','','杠杠','','運行','速度','','完美','','待機時間','','待機時間','還好','','充','一次','電','','也','就','24','小時','吧','','今天','收到','貨','','非常','驚喜','','和','實體店','一模一樣','','覺對','的','正品','','一直','就','想','買','這款','手機','','今天']使用jieba庫進行詞性標注以分析在線社交平臺用戶評論隨著在線社交平臺的普及,大量用戶在平臺上分享觀點和評論。通過對用戶評論的文本分析,識別關鍵詞匯的詞性,利用jieba庫進行中文分詞和詞性標注,有助于深入了解用戶的關注點和喜好。針對一個包含用戶評論的文本文件'comments.txt',要求如下:1.進行數據讀取。2.使用jieba庫對文本進行分詞。3.使用jieba庫進行詞性標注。4.統計各個詞性的詞語數量。5.輸出各個詞性及其對應的詞語數量。6.選擇某個詞性(例如名詞'n'),輸出出現次數最高的前10個詞語及它們出現的次數。【考察知識點】jieba庫中文分詞,jieba庫詞性標注,統計各個詞性的詞語數量。【答案解析】進行數據讀取。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s119行數據讀取#讀取用戶評論文本withopen('comments.txt','r',encoding='utf-8')asf:text=f.read()print('評論內容(部分):\n',text[0:100])運行REF_Ref134493040\h代碼219,得到評論內容(部分)如下。評論內容(部分):寶貝已經收到了,試用了一段時間,運行平穩,速度還不錯!8*128很給力!外形外觀:外觀華麗,時尚屏幕音效:音質很好!分辨率相當不錯!物超所值拍照效果:6400萬像素,沒的說,杠杠!運行速度:完使用jieba庫對文本進行分詞。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s120使用jieba庫對文本進行分詞importjieba#對用戶評論進行分詞words=jieba.lcut(text)print('評論分詞結果(部分):\n',words[0:100])運行REF_Ref134493109\h代碼220,得到評論分詞結果(部分)如下。Buildingprefixdictfromthedefaultdictionary...Loadingmodelfromcache/tmp/jieba.cacheLoadingmodelcost1.736seconds.Prefixdicthasbeenbuiltsuccessfully.評論分詞結果(部分):['寶貝','已經','收到','了',',','試用','了','一段時間',',','運行','平穩',',','速度','還','不錯','!','8','*','128','很','給','力','!','\n','外形','外觀',':','外觀','華麗',',','時尚','\n','屏幕','音效',':','音質','很','好','!','分辨率','相當','不錯','!','物超所值','\n','拍照','效果',':','6400','萬','像素',',','沒','的','說',',','杠杠','!','\n','運行','速度',':','完美','\n','待機時間',':','待機時間','還好',',','充','一次','電',',','也','就','24','小時','吧','\n','\n','今天','收到','貨',',','非常','驚喜',',','和','實體店','一模一樣',',','覺對','的','正品',',','一直','就','想','買','這款']使用jieba庫進行詞性標注。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s121使用jieba庫進行詞性標注importjieba.possegaspseg#對分詞結果進行詞性標注word_pos=pseg.lcut(text)運行REF_Ref134493172\h代碼221,得到評論分詞詞性標注結果(部分),結果如下。評論分詞詞性標注結果(部分):[pair('寶貝','nr'),pair('已經','d'),pair('收到','v'),pair('了','ul'),pair(',','x'),pair('試用','vn'),pair('了','ul'),pair('一段時間','l'),pair(',','x'),pair('運行','v'),pair('平穩','a'),pair(',','x'),pair('速度','n'),pair('還','d'),pair('不錯','a'),pair('!','x'),pair('8','x'),pair('*','x'),pair('128','m'),pair('很','d'),pair('給','p'),pair('力','n'),pair('!','x'),pair('\n','x'),pair('外形','n'),pair('外觀','n'),pair(':','x'),pair('外觀','n'),pair('華麗','nr'),pair(',','x'),pair('時尚','n'),pair('\n','x'),pair('屏幕','n'),pair('音效','n'),pair(':','x'),pair('音質','n'),pair('很','d'),pair('好','a'),pair('!','x'),pair('分辨率','n'),pair('相當','d'),pair('不錯','a'),pair('!','x'),pair('物超所值','i'),pair('\n','x'),pair('拍照','v'),pair('效果','n'),pair(':','x'),pair('6400','m'),pair('萬','m'),pair('像素','n'),pair(',','x'),pair('沒的說','l'),pair(',','x'),pair('杠杠','n'),pair('!','x'),pair('\n','x'),pair('運行','v'),pair('速度','n'),pair(':','x'),pair('完美','a'),pair('\n','x'),pair('待機時間','n'),pair(':','x'),pair('待機時間','n'),pair('還好','v'),pair(',','x'),pair('充','v'),pair('一次','m'),pair('電','n'),pair(',','x'),pair('也','d'),pair('就','d'),pair('24','m'),pair('小時','n'),pair('吧','y'),pair('\n','x'),pair('\n','x'),pair('今天','t'),pair('收到','v'),pair('貨','n'),pair(',','x'),pair('非常','d'),pair('驚喜','a'),pair(',','x'),pair('和','c'),pair('實體店','n'),pair('一模一樣','l'),pair(',','x'),pair('覺對','v'),pair('的','uj'),pair('正品','n'),pair(',','x'),pair('一直','d'),pair('就','d'),pair('想','v'),pair('買','v'),pair('這款','r'),pair('手機','n'),pair(',','x')]統計各個詞性的詞語數量。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s122計各個詞性的詞語數量fromcollectionsimportCounter#統計各個詞性的詞語數量pos_counts=Counter([posforword,posinword_pos])運行REF_Ref134493221\h代碼222,得到詞語數量統計結果如下。詞語數量統計結果:Counter({'x':295588,'n':210860,'v':176063,'d':116508,'a':88752,'m':45013,'uj':40516,'r':26890,'p':24496,'ul':23390,'c':18905,'zg':18251,'eng':13206,'nr':11454,'f':9041,'t':8473,'vn':8433,'l':7836,'ns':5749,'b':4863,'i':4623,'y':3675,'q':3472,'nz':3396,'ad':2622,'u':2391,'nrt':2110,'uz':1419,'s':1310,'ng':1156,'z':810,'o':782,'ud':612,'j':600,'ug':464,'e':403,'vg':344,'df':319,'k':219,'mq':158,'uv':89,'an':85,'tg':84,'g':54,'yg':49,'h':42,'vd':30,'nt':29,'ag':19,'nrfg':9,'rr':8,'dg':1})輸出各個詞性及其對應的詞語數量。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s123出各個詞性及其對應的詞語數量#輸出各個詞性及其對應的詞語數量print('各個詞性及其對應的詞語數量:\n')forpos,countinpos_counts.items():print(f"{pos}:{count}")運行REF_Ref134493290\h代碼223,得到各個詞性及其對應的詞語數量,結果如下。各個詞性及其對應的詞語數量:nr:11454d:116508v:176063ul:23390x:295588vn:8433l:7836a:88752n:210860m:45013p:24496i:4623y:3675t:8473c:18905uj:40516r:26890u:2391zg:18251ns:5749q:3472eng:13206b:4863o:782f:9041z:810ad:2622vg:344j:600ud:612s:1310ug:464e:403ng:1156nrt:2110nz:3396an:85mq:158uz:1419uv:89df:319k:219h:42tg:84vd:30nt:29nrfg:9g:54rr:8yg:49ag:19dg:1選擇某個詞性(例如名詞'n'),輸出出現次數最高的前10個詞語及它們出現的次數。代碼STYLEREF1\s2SEQ代碼\*ARABIC\s124出某個詞性出現次數最高的詞語#篩選指定詞性的詞語selected_pos='n'selected_words=[wordforword,posinword_posifpos==selected_pos]#統計詞頻并排序selected_word_freq=Counter(selected_words)sorted_selected_words=sorted(selected_word_freq.items(),key=lambdax:x[1],reverse=True)print('前10個高頻詞及詞頻:\n')#輸出前10個高頻詞及詞頻top10_words=sorted_selected_words[:10]forword,freqintop10_words:print(f"{word}:{freq}")運行REF_Ref134493339\h代碼224,得到評論內容(部分),結果如下。前10個高頻詞及詞頻:手機:20876速度:10678外觀:8524屏幕:7932效果:7548外形:5233音效:4812性價比:4471手感:4118感覺:3481深入文本進階處理對西游記文本構建Doc2Vec模型文本向量表示是自然語言處理中的一個重要任務,它可以將文本轉換為向量的形式,方便地計算文本之間的相似度、聚類、分類等。Doc2Vec模型是一種常用的文本向量表示方法,它可以將整篇文檔表示為一個固定長度的向量。使用《西游記》作為示例數據集,利用Doc2Vec模型進行文本向量表示,具體要求如下。1.對《西游記》文本進行預處理,將每個章節轉換成TaggedDocument格式。2.使用gensim庫中的Doc2Vec模型對文本進行向量化表示。【考察知識點】Doc2Vec模型,gensim庫的使用,文本向量表示。【答案解析】數據預處理。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s11數據預處理fromgensim.models.doc2vecimportTaggedDocumentimportjieba#讀取《西游記》文本文件withopen('西游記.txt','r',encoding='utf-8')asf:text=f.read()#分詞words=[wordforwordinjieba.cut(text)iflen(word)>1]#章節分隔符是""chapter_separator=""#根據分隔符分割章節chapters=text.split(chapter_separator)#移除空白章節(如果存在)chapters=[chapter.strip()forchapterinchaptersifchapter.strip()]#分詞并將每個章節轉換成TaggedDocument格式data=[]fori,chapterinenumerate(chapters):chapter_words=[wordforwordinjieba.cut(chapter)iflen(word)>1]data.append(TaggedDocument(chapter_words,[f"Chapter_{i+1}"]))print(f'共分出章節數為:{len(chapters)}')運行REF_Ref134479701\h代碼31,得到拆分后的章節數如下。共分出章節數為:102Doc2Vec模型訓練。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s12Doc2Vec模型訓練fromgensim.models.doc2vecimportDoc2Vec#定義Doc2Vec模型model=Doc2Vec(vector_size=100,window=5,min_count=5,workers=4)#構建詞匯表model.build_vocab(data)#訓練模型model.train(data,total_examples=model.corpus_count,epochs=30)#對進行向量推斷,得到該文檔的向量表示doc_vec=model.infer_vector(chapter_words)print(f'西游記的向量表示為:\n{doc_vec}')運行REF_Ref134480225\h代碼32,得到西游記的向量表示如下。西游記的向量表示為:[5.19647935.6105630.7077415.7890750.147341981.36847452.491592-0.44208065-2.8115077-1.3106153-0.01363177-4.8366326.34863140.203987213.529947-3.9220331.8114184-6.62109953.38569055.7210391.40030042.1018732.02645447.6147227-5.199168-5.8815236-3.5744493-4.2791924-2.1423166-2.7258856-4.41477872.5286143-6.33628940.11344934-1.57091493.5004642-10.651249-3.71971.4827745-3.817720.64800555-6.261749-6.4967760.8807321-1.1821695.89334344.00925970.8087257-0.30260073.3886917-4.0535076.7534504-3.88742611.58520140.90745416.60278-4.86084131.8126388-1.17236510.993471444.5469326.2122885.169736-1.2065006-3.8309493-0.51340763.6067264.2628555-2.56560047.6270223.3555671.61274854.1215980.25436151.621825911.6145959.879629-2.548149-7.3144298-3.2915335-2.716976-1.4506301-0.802174274.9857287-5.96987721.75637531.350094411.145407-0.259186-1.6895772-8.4317735.28826245.83023935.15120462.12739871.3412493.4843771-4.0733362.5077627-1.4107683]計算兩篇文章的曼哈頓距離在自然語言處理和信息檢索領域,文本相似度計算是一項重要任務。例如,在論文查重、知識庫構建和智能問答系統等應用場景中,都需要計算文本之間的相似度。本操作題從兩篇文本中提取特征,最后計算曼哈頓距離,具體要求如下:1.讀取文本文件,并將兩篇文章的文本內容存儲在不同的字符串變量中。2.使用CountVectorizer對兩篇文章進行特征提取。3.計算兩篇文章的曼哈頓距離。【考察知識點】文本相似度計算,CountVectorizer特征提取,曼哈頓距離計算。【答案解析】讀取文本文件,并將兩篇文章的文本內容存儲在不同的字符串變量中。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s13讀取文本文件#讀取文件內容withopen('Article1.txt','r',encoding='utf-8')asf:article1=f.read()withopen('Article2.txt','r',encoding='utf-8')asf:article2=f.read()print(f"Article1:\n{article1}\n\nArticle2:\n{article2}")運行REF_Ref134480620\h代碼33,得到文本內容如下。Article1:南通大學學報·社會科學版第38卷第4期雙月刊2022年7月出版區域協調戰略下長三角地區公共體育資源配置公平性研究劉……researchboundaryfromthehistoryofthediscipline,andthendiscussesitsdilemmasagainstthebackgroundofdigitalhumanitiesresearchwithreflectionsonthedeficiencyofformerresearch,andputsforwardthecorrespondingsolutionstrategy,therebypromotingtheborder-crossingandblendingforcomparativeliterature.Keywords:comparativeliterature;digitalhumanities;disciplinarydilemma;copingstrategy71使用CountVectorizer對兩篇文章進行特征提取。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s14特征提取fromsklearn.feature_extraction.textimportCountVectorizer#創建一個CountVectorizer對象vectorizer=CountVectorizer()#將兩篇文章作為輸入,生成詞袋模型X=vectorizer.fit_transform([article1,article2])#輸出詞匯表,即所有出現過的單詞print(f"詞匯表:\n{vectorizer.get_feature_names()}")#輸出特征矩陣,即每篇文章中所有單詞的出現次數print(f"特征矩陣:\n{X.toarray()}")運行REF_Ref134480777\h代碼34,得到詞匯表及特征矩陣如下。詞匯表:['00','0056','0064','01','0106','0111','0115','0177','0183','02','0200','0280','03','0360','0387','04','0454','0484','05','0510','06','064929','0765','0780','0786','08','081681','081969','0870','0884','089499','09','0930','0950','0955','10','1000','102719','1035','105500','107200','1081','11','114923','1152','1172','12','1202','1263','126796','13','130028','132','1320','13425','14','140100','1475','149','15','15496','1581','16','1653','1673','17','174','1763','1777','18','1846','19','1926','1……特征矩陣:[[910...000][001...111]]計算兩篇文章的曼哈頓距離。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s15計算曼哈頓距離fromscipy.spatial.distanceimportcityblock#計算兩篇文章之間的曼哈頓距離distance=cityblock(X.toarray()[0],X.toarray()[1])#輸出曼哈頓距離print(f"這兩篇文章之間的曼哈頓距離為{distance}")運行REF_Ref134485818\h代碼35,得到這兩篇文章之間的曼哈頓距離如下。這兩篇文章之間的曼哈頓距離為2972對文章進行句法分析在自然語言處理領域,句法分析是一項重要任務,可以從語法層面對文本進行深入分析。本操作題將使用pyPDF2庫對PDF文件進行讀取,并使用hanlp庫對一篇文章進行句法分析,具體要求如下:1.使用pyPDF2庫讀取名為"document.pdf"的PDF文件,并提取其中的文本。2.使用hanlp庫對提取的文本進行句法分析,并輸出分析結果。【考察知識點】pyPDF2庫,hanlp庫,句法分析。【答案解析】使用pyPDF2提取pdf文本。代碼STYLEREF1\s3SEQ代碼\*ARABIC\s16提取pdf文本importPyPDF2#定義提取PDF文本的函數defextract_text_from_pdf(pdf_path):withopen(pdf_path,'rb')asfile:reader=PyPDF2.PdfReader(file)#定義一個字符串變量text,用于保存提取出的文本內容text=''#循環遍歷PDF文檔的所有頁面forpageinreader.pages:text+=page.extract_text()returntext#調用extract_text_from_pdf函數提取PDF文檔

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論