09 項目九 分詞處理器_第1頁
09 項目九 分詞處理器_第2頁
09 項目九 分詞處理器_第3頁
09 項目九 分詞處理器_第4頁
09 項目九 分詞處理器_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

知識目標了解模塊的基本概念,熟悉模塊的管理,掌握模塊的檢索路徑。了解包的基本概念,掌握包的實現(xiàn)原理。能力目標能使用pip3命令下載應用模塊。能正確導入模塊和調用模塊的內容。能正確地使用包規(guī)劃管理模塊。能熟練使用jieba模塊進行分詞處理。能熟練使用pyinstaller生成exe文件。能熟練使用NumPy模塊進行數(shù)值計算。素養(yǎng)目標培養(yǎng)實踐出真知的意識,學以致用、靈活變通。牢記歷史,厚植愛國主義情懷,把愛國情、強國志、報國行自覺融入堅持和發(fā)展中國特色社會主義事業(yè)、建設社會主義現(xiàn)代化強國、實現(xiàn)中華民族偉大復興的奮斗之中。項目九、分詞處理器

項目描述項目描述

《黃河頌》為《黃河大合唱》組詩八章中的第二篇,詩人光未然創(chuàng)作于1939年,以黃河為背景,熱情歌頌中華民族源遠流長的光榮歷史和中國人民堅強不屈的斗爭精神,痛訴侵略者的殘暴和人民遭受的深重災難,廣闊地展現(xiàn)抗日戰(zhàn)爭的壯麗圖景,并向全中國全世界發(fā)出民族解放的戰(zhàn)斗警號,塑造中華民族巨人般的英雄形象。

本項目對《黃河頌》或其他txt文件進行詞語分析。輸入用戶自定義詞語,統(tǒng)計詞語(去除標點和空白字符)在文檔中出現(xiàn)的次數(shù),組織成“詞語,次數(shù)”寫入“文件名-詞語分析.csv”文件中。將項目程序打包成獨立的exe可執(zhí)行文件。

項目分析項目分析

csv、os、jieba等模塊能幫助實現(xiàn)詞語分析以及相關的文件和目錄的處理。項目的各子功能以函數(shù)的形式存在有利于代碼的整體布局。涉及到文件的讀寫,注意異常處理的使用,以保證程序的健壯性。

知識準備9.1模塊9.2包9.3二級考證中的幾個模塊9.1模塊9.1.1基本概念----1什么是模塊 Python模塊(module)本質也是Python程序,它將一組相關的函數(shù)和類組織在同一個文件中。用戶程序可以導入模塊并使用模塊中的函數(shù)和類。模塊名區(qū)分大小寫!

模塊分為系統(tǒng)內置模塊、第三方模塊/庫和用戶自定義模塊。系統(tǒng)內置模塊指Python自帶的模塊,無需安裝,如os、sys、time、random、math。第三方模塊/庫一般會在Python官網(wǎng)上注冊。如果要使用某個第三方庫,應該先在官網(wǎng)或者pypi上搜索以找到庫名,然后使用pip/pip3命令進行下載安裝。編程者也可以自己開發(fā)應用模塊。 Python默認安裝僅包含部分基本或核心模塊,用戶通過pip/pip3工具安裝和管理擴展模塊。Python啟動時僅加載很少的一部分模塊,程序員可在需要時顯式地加載(可能需要先安裝)其他模塊。為減小運行的壓力,編程時應盡量只加載真正需要的模塊和功能。9.1模塊9.1.1基本概念----2模塊的主要作用

模塊的主要作用有以下幾個方面。避免名稱沖突,相同的函數(shù)名和類名可同時存在于不同模塊中;實現(xiàn)代碼重用;分解大型系統(tǒng)程序,控制程序的復雜度;易于維護和擴展。9.1模塊9.1.2pip3管理工具 Python通過pip/pip3管理工具來安裝第三方模塊,安裝目錄為lib/site-packages目錄下。Python3中使用pip3進行安裝和管理。 pip3的命令格式是pip3<command>[options][module_names]。

參數(shù)command的主要選項如下表。序號命令參數(shù)功能描述1install安裝。2download下載。3uninstall卸載。4list列出已安裝模塊。5check驗證已安裝的軟件包是否具有兼容的依賴項。6search在PyPI中搜索模塊。7debug顯示有用的調試信息。8help顯示幫助信息。9.1模塊9.1.3模塊的管理----1.sys.modules sys.modules管理著Python模塊。它是一個全局字典,在Python啟動后就加載在內存中,模塊名作為鍵,模塊的位置作為值。每當程序員導入新的模塊,sys.modules都會記錄這些模塊。

sys.modules對于加載模塊起到了緩沖的作用。當某個模塊第一次導入,sys.modules將自動記錄該模塊。當?shù)诙卧賹朐撃K時,Python解釋器會直接到字典中查找,從而加快程序運行的速度。9.1模塊9.1.3模塊的管理----2.dir()和help()

內置函數(shù)dir()用于查看模塊定義的名稱,返回結果是經(jīng)過排序的字符串序列。dir()

不帶參數(shù)時,返回當前范圍內的變量、方法和定義的類型列表;帶參數(shù)時,返回參數(shù)的屬性、方法列表。也可以使用help()查看幫助文檔。9.1.3模塊的管理----3.builtins

默認內置函數(shù)和變量定義在標準模塊builtins中,無須導入即可使用。以下命令顯示所有的內置數(shù)據(jù)。9.1模塊9.1.3模塊的管理----4.sys.path

sys.path是一個字符串列表,包含模塊的搜索路徑,包括初始化自環(huán)境變量PYTHONPATH以及與安裝有關的默認路徑??梢酝ㄟ^配置sys.path來解決模塊的檢索路徑問題。

以模塊名xyz為例,執(zhí)行importxyz語句時,解釋器首先查找名為xyz的內置模塊,如果沒找到,則從sys.path中查找xyz.py。若查找失敗則會報錯ModuleNotFoundError。

例如,“D:/self”下有用戶自定義模塊myf.py,程序usefiles.py在其他目錄下且包含語句“importmyf”,運行程序就會報錯ModuleNotFoundError。在usefiles.py的代碼開始處加入如下兩行,為sys.path添加目錄“D:/self”,程序就能正常運行了。 【注意】同一項目內,盡量使用相對目錄來進行配置。9.1模塊9.1.4模塊的導入import模塊名1[as模塊別名1],模塊名2[as模塊別名2],…from模塊名import成員1[,成員2,…]from模塊名import*【范例9.1】e_module.py【范例9.2】e_use_module_v1_error.py【思考】如何修改e_use_module_v1_error.py使得程序可以正常運行?9.2包9.2.1基本概念

一個大型系統(tǒng)往往包含多個模塊。為了更好地管理這些模塊和避免模塊名之間的沖突,可以將多個模塊按類分放在不同的包里。與模塊名一樣,包名也是區(qū)分大小寫的。 Python包(package)本質就是一個文件夾,且該文件夾下必須存在__init__.py程序。該程序包含包的初始化代碼,可以為空。當一個包被導入時,__init__.py會被隱式地執(zhí)行,它所定義的對象將被綁定到該包的命名空間中。

包可以繼續(xù)包含子包,沒有層次限制。9.2包9.2.2包的應用9.2包9.2.2包的應用導入包下指定模塊使用import包名.模塊名;調用時使用:包名.模塊名.模塊成員。

導入包下的指定模塊的指定成員或所有成員使用from包名.模塊名import成員1[,成員2]

或from包名.模塊名import*。調用時直接使用成員即可。

導入包下的某模塊使用from包名import某模塊。調用時使用:模塊名.成員。導入包初始化中__all__包含的所有模塊使用from包名import*?!痉独?.3】e_usepack1_v1.py【范例9.4】e_usepack1_v2.py【范例9.5】e_usepack1_v3.py【范例9.6】e_usepack2_v1_error.py

【思考】在不修改pack2的情況下如何修改e_usepack2_v1_error.py使

得程序可以正常運行?9.3二級考證中的幾個模塊

序號函數(shù)功能描述1log(x[,base])返回x的以base為底的對數(shù),base默認為e2log10(x)返回x的以10為底的對數(shù)3pow(x,y)返回x的y次方4sqrt(x)返回x的平方根5ceil(x)返回不小于x的整數(shù)6floor(x)返回不大于x的整數(shù)7trunc(x)返回x的整數(shù)部分8factorial(x)返回x的階乘9gcd(a,

b)返回a和b的最大公約數(shù)10fabs(x)返回x的絕對值9.3二級考證中的幾個模塊9.3.1math模塊

下表給出math模塊的與三角函數(shù)有關的函數(shù)。 【思考】為什么math模塊沒有提供正割、余割、余切函數(shù)呢?序號函數(shù)功能描述1degrees(x)

弧度轉角度2radians(x)

角度轉弧度3sin(x)返回x(弧度)的三角正弦值4asin(x)返回x的反三角正弦值5cos(x)返回x(弧度)的三角余弦值6acos(x)返回x的反三角余弦值7tan(x)返回x(弧度)的三角正切值8atan(x)返回x的反三角正切值9atan2(x,y)返回x/y的反三角正切值9.3二級考證中的幾個模塊同步訓練1.編寫程序p_xn.py,設計函數(shù)x(n)完成如下求和,讀入正整數(shù)n并顯示x(n)。2.編寫程序p_dr.py,實現(xiàn)弧度和角度的相互轉換。9.3二級考證中的幾個模塊9.3.2random模塊

序號函數(shù)功能描述1seed(x)設置初始化隨機數(shù)種子x,x可以是整數(shù)或者浮點數(shù)。如果不設置,則以系統(tǒng)時間當做隨機數(shù)種子。設置隨機數(shù)種子的好處是可以重復再現(xiàn)相同的隨機數(shù)序列。2random()生成一個隨機的浮點數(shù),范圍是0<=n<1.0。3uniform(a,b)生成一個指定范圍[a,b]或[b,a]內的隨機浮點數(shù)。4randint(a,b)生成一個指定范圍[a,b]內的整數(shù)。5getrandbits(k)生成一個k比特長度的隨機整數(shù)。6randrange(start,stop[,step])從range(start,stop,step)中隨機選取一個整數(shù)并返回該整數(shù)。7choice(seq)從序列seq中隨機選取一個元素并返回該元素。8shuffle(seq)隨機打亂可變序列seq中的元素,seq將會被修改。9sample(seq,k)從序列seq隨機獲取k個元素且隨機排列后放入列表并返回該列表。【范例9.7】e_random_seed.py

【思考】為什么該程序多次運行顯示的t都是相同的四個隨機浮點數(shù)?9.3二級考證中的幾個模塊同步訓練編寫程序p_luckdraw.py,讀入抽獎次數(shù),給出用戶的各次獲獎情況,要求特等獎概率0.01%,一等獎概率1%,二等獎概率20%,三等獎概率50%。9.3二級考證中的幾個模塊9.3.3jieba模塊

jieba模塊是Python的第三方中文分詞擴展庫。使用pip3命令安裝該模塊后方可導入并使用。jieba支持三種分詞模式:精確模式,試圖將句子最精確地切開,不存在冗余單詞,適合文本分析;全模式,把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義;搜索引擎模式,在精確模式的基礎上,對長詞再次切分,適合用于搜索引擎分詞。分詞的詞性可使用jieba.posseg子模塊獲取。9.3二級考證中的幾個模塊9.3.3jieba模塊序號函數(shù)功能描述1load_userdict(file_name)指定自己自定義的詞典,file_name為文件類對象或自定義詞典的路徑。2cut(s,cut_all=False,HMM=True,use_paddle=False)返回一個可迭代的generator,包含分詞結果。s為需要分詞的字符串;cut_all控制分詞模式,True為全模式,F(xiàn)alse為精確模式。HMM參數(shù)控制是否使用HMM模型。3cut_for_search(s,HMM=True)適用于搜索引擎構建倒排索引,粒度比較細。返回同cut()。4lcut(s)類似cut(),但返回的是列表。5lcut_for_search(x)搜索引擎模式,返回的是列表。6Tokenizer(dictionary=DEFAULT_DICT)新建自定義分詞器,可用于同時使用不同詞典。jieba.dt為默認分詞器,所有全局分詞相關函數(shù)都是該分詞器的映射。7add_word(w)向分詞詞典中添加新詞w。8del_word(w)從分詞詞典中刪除已有詞w?!痉独?.8】e_jieba_brave.py【范例9.9】e_jieba_posseg.py9.3二級考證中的幾個模塊9.3.4pyinstaller模塊

pyinstaller可以在Windows、Linux、MacOS等操作系統(tǒng)下將python源程序(.py文件)打包,變成直接可以運行的可執(zhí)行文件。具體操作通常是,在cmd窗口中切換到文件所在路徑,然后執(zhí)行命令pyinstaller-Ffilename.py。序號參數(shù)功能描述1-F表示生成單個可執(zhí)行文件。2-w表示去掉控制臺窗口,如果是命令行程序,那么不能使用該選項,如果是GUI程序則可以使用該選項以去掉控制臺窗口。3-p表示用戶自定義需要加載的類路徑,一般情況下用不到。4-i指定可執(zhí)行文件的圖標。【范例9.10】將控制臺程序e_plus.py打包成獨立exe文件。【范例9.11】將GUI程序e_fourcal.py打包成獨立exe文件,圖標設置為flower.ico。9.3二級考證中的幾個模塊9.3.5numpy模塊----1.基本概念 numpy是科學計算基礎庫,提供大量科學計算相關功能,比如數(shù)據(jù)統(tǒng)計、隨機數(shù)生成和線性運算等。它最核心的數(shù)據(jù)類型是ndarray(多維數(shù)組),支持大量的數(shù)組與矩陣運算。ndarray在科學計算上比list更高效。

numpy的官網(wǎng)網(wǎng)址是/。

ndarray和list之間有幾個重要的區(qū)別。

(1)ndarray在創(chuàng)建時具有固定的大小,與list(可動態(tài)增長)不同。更改ndarray的大小將創(chuàng)建一個新數(shù)組并刪除原來的數(shù)組。

(2)ndarray中的元素具有相同的數(shù)據(jù)類型,在內存中的大小相同。

(3)ndarray提供大量的數(shù)學運算或其他操作的函數(shù)。這些操作的執(zhí)行效率更高,比使用list的代碼更少。

(4)越來越多基于Python的科學和數(shù)學軟件包使用ndarray,雖然這些工具通常都支持list作為參數(shù),但它們在處理前會將輸入的列表轉換為ndarray,而且也通常輸出為ndarray。9.3二級考證中的幾個模塊9.3.5numpy模塊----2.numpy數(shù)字類型

序號numpy的類型功能描述18字節(jié)(-128到127)。216整數(shù)(-32768至32767)。332整數(shù)(-2147483648至2147483647)。464整數(shù)(-9223372036854775808至9223372036854775807)。5np.uint8無符號整數(shù)(0到255)。6np.uint16無符號整數(shù)(0到65535)。7np.uint32無符號整數(shù)(0到4294967295)。8np.uint64無符號整數(shù)(0到18446744073709551615)。9p用于索引的整數(shù),通常與索引相同ssize_t。10np.uintp整數(shù)大到足以容納指針。11np.float3232位浮點數(shù)。12np.float64/np.float_這與內置pythonfloat的精度相匹配。13plex64復數(shù),由兩個32位浮點數(shù)(實部和虛部)表示。14plex128/plex_這與內置pythonfloat的精度相匹配。9.3二級考證中的幾個模塊9.3.5numpy模塊----3.numpy.ndarray的創(chuàng)建 ndarray(簡寫為array)是numpy模塊最重要的數(shù)據(jù)類型,可以根據(jù)列表和元組來創(chuàng)建ndarray,也可以使用其它函數(shù)進行創(chuàng)建。下表給出常用的函數(shù)。通用于各函數(shù)的dtype參數(shù)可以指定數(shù)組元素的數(shù)據(jù)類型。序號函數(shù)功能描述1zeros(shape,…)創(chuàng)建一個指定形狀的用0填充的數(shù)組。2ones(shape,…)創(chuàng)建一個用1填充的數(shù)組。3arange([start,]stop[,step],…)創(chuàng)建具有有規(guī)律遞增值的數(shù)組。4linspace(start,stop,…)創(chuàng)建具有指定數(shù)量元素的數(shù)組,并在指定的開始值和結束值之間平均間隔。5array(obj,…)根據(jù)obj實例創(chuàng)建數(shù)組。9.3二級考證中的幾個模塊9.3.5numpy模塊----4.numpy.ndarray的索引和切片

數(shù)組和列表一樣支持索引和切片,支持正向索引和反向索引,正向索引從0開始。它也支持多維索引。索引越界時報錯IndexError。9.3二級考證中的幾個模塊9.3.5numpy模塊----5.numpy.random numpy.random實現(xiàn)了隨機數(shù)組的生成和操作。序號函數(shù)功能描述1seed(x)設置隨機數(shù)種子為x。2random(size)創(chuàng)建一個值均為[0.0,1.0)的size尺寸的隨機數(shù)組。3randint(low,high,size)創(chuàng)建范圍是[Low,high)的size尺寸的隨機整數(shù)數(shù)組。4shuffle(a)對數(shù)組a進行隨機排列。5choice(a,size)從數(shù)組a中隨機選擇size個元素。9.3二級考證中的幾個模塊9.3.5numpy模塊----6.numpy.ndarray常用操作 numpy.ndarray支持大量的維度數(shù)組與矩陣運算。序號函數(shù)/nda

溫馨提示

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

評論

0/150

提交評論