国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用Python對(duì)自然語言進(jìn)行簡單處理

2019-03-21 00:23劉家岐
現(xiàn)代商貿(mào)工業(yè) 2019年7期
關(guān)鍵詞:字符串組塊自帶

劉家岐

摘要:隨著人工智能的發(fā)展,人們逐漸開始利用編程語言來實(shí)現(xiàn)對(duì)于自然語言的處理,在現(xiàn)實(shí)生活中,這一發(fā)展也有著廣闊的應(yīng)用前景。但是,受制于編程語言的局限性,對(duì)于自然語言的處理也只是在較為簡單的階段。因此介紹利用Python代碼來對(duì)自然語言進(jìn)行處理的簡單步驟及相關(guān)知識(shí)。

關(guān)鍵詞:自然語言處理;Python

中圖分類號(hào):G4文獻(xiàn)標(biāo)識(shí)碼:Adoi:10.19311/j.cnki.1672-3198.2019.07.085

在日常生活中,聊天機(jī)器人的應(yīng)用已經(jīng)十分普遍,例如可以自動(dòng)回復(fù)的聊天客服機(jī)器人。但是,在大多數(shù)情況下,這些聊天機(jī)器人只能處理簡單的文字或符號(hào),有些聊天機(jī)器人甚至需要要求使用者輸入特定的語言或符號(hào),才能對(duì)其進(jìn)行處理。在使用Python相關(guān)代碼進(jìn)行構(gòu)建的情況下,聊天機(jī)器人便可以對(duì)自然語言的文本進(jìn)行處理,包括對(duì)單詞進(jìn)行分類,統(tǒng)計(jì)特定文字或單詞的使用率,以及找出文本與作者或年代的聯(lián)系。由于相關(guān)領(lǐng)域還處于發(fā)展階段,所以Python代碼目前主要實(shí)現(xiàn)對(duì)于英文文本的處理。

1利用Python語言實(shí)現(xiàn)對(duì)于文本的簡單處理

在Python中,對(duì)于文本的處理是基于變量的。但是,不同于一般的程序,在處理自然語言文本時(shí),變量變?yōu)榱藛卧~,詞組,甚至可以是一個(gè)句子。編寫相關(guān)代碼,便可以對(duì)文本變量進(jìn)行處理。

1.1利用Python函數(shù)

在Python中,有很多程序自帶的函數(shù)可以對(duì)文本變量進(jìn)行處理。與對(duì)于其他變量的處理相同,可以自行輸入單詞和文本。每個(gè)單詞可以看作一個(gè)單一的變量,除了輸入單一的單詞之外,還可以輸入文本,將以類似于字符串的形式儲(chǔ)存。在輸入文本之后,Python自帶的函數(shù)可以完成對(duì)于單個(gè)單詞長度的統(tǒng)計(jì),即單詞的字母數(shù)量,以及文本中特定單詞的搜索和統(tǒng)計(jì)。除此之外,多個(gè)以字符串形式儲(chǔ)存的文本還可以進(jìn)行合并,對(duì)于單個(gè)文本可以進(jìn)行對(duì)于特定單詞的搜索和文本詞數(shù)的統(tǒng)計(jì)。

1.2對(duì)于文本的延伸處理

除了對(duì)于文本中特定的單詞進(jìn)行搜索和整體次數(shù)的統(tǒng)計(jì),我們還可以對(duì)于文本進(jìn)行其他處理,獲取其他關(guān)于文本的數(shù)據(jù),從而豐富我們對(duì)于文本的了解。首先,可以對(duì)文本中特定單詞的使用情況進(jìn)行統(tǒng)計(jì),從而獲得不同單詞的使用頻率。依據(jù)此數(shù)據(jù),我們可以了解不同單詞的使用情況,從而獲得文本的用詞特點(diǎn),分析出作者的寫作習(xí)慣。其次,利用編程語言中簡單的分支結(jié)構(gòu),可以對(duì)文本中每個(gè)單詞進(jìn)行判斷。例如,篩選出文本中所有長度大于某個(gè)值的單詞,并進(jìn)行計(jì)數(shù),我們便可以判斷出文本的難易程度,并可以以這個(gè)數(shù)據(jù)為基礎(chǔ),對(duì)文本的難易程度進(jìn)行量化。除此之外,我們還可以利用Python中自帶的collocation函數(shù),對(duì)于文本中的詞組進(jìn)行提取,從而對(duì)文本進(jìn)行進(jìn)一步分析,也可以得出作者的習(xí)作習(xí)慣。

1.3對(duì)文本進(jìn)行簡化處理

在文本中,除了單詞之外,標(biāo)點(diǎn)和數(shù)字也是文本的組成部分。但是,在大部分情況下,我們只需要對(duì)文本中的單詞進(jìn)行分析,所以我們需要獲得純文本來幫助我們更好地進(jìn)行相關(guān)處理。除此之外,在某些情況下,我們只需要對(duì)文本中較長的單詞進(jìn)行處理,來了解作者的寫作習(xí)慣和用詞傾向。在這種情況下,我們可以設(shè)置一個(gè)合適的單詞長度,并以此作為標(biāo)準(zhǔn)對(duì)文本進(jìn)行篩選。

2獲得字?jǐn)?shù)較多的文本(語料庫)

雖然在Python程序中,我們可以通過手動(dòng)輸入來輸入單詞和文本,但是在需要輸入文字較多的文本,甚至獲得一個(gè)語料庫時(shí),這個(gè)方法很明顯將不再適用,所以我們需要新的方法來獲取字?jǐn)?shù)較多,更為復(fù)雜的文本。

2.1Python程序中自帶的語料庫

在Python中,有一些自帶的文本可以輕松獲取,這些語料庫中的文本可以用于試驗(yàn)新的代碼,并且為初學(xué)者提供了素材。其中,Python自帶的語料庫包括:gutenberg corpus,web and chat text,brown corpus,reuters corpus,inaugural address corpus和annotated text corpus。除此之外,Python還自帶一些其他語言的語料庫,包含超過300種不同的語言。

2.2語料庫的不同結(jié)構(gòu)

不同的語料庫有著不同的結(jié)構(gòu)。最簡單的語料庫是文本的集合,沒有特殊的結(jié)構(gòu),Python中自帶的gutenberg corpus和web and chat text就是這種語料庫。有些語料庫會(huì)根據(jù)文本的類型,風(fēng)格,作者和語言進(jìn)行分類,例如Python中自帶的brown corpus。有些時(shí)候一個(gè)文本可能同時(shí)屬于多個(gè)類別,即分類時(shí)有重疊,例如Python中自帶的reuters corpus。除此之外,還有按時(shí)間順序?qū)ξ谋具M(jìn)行分類的語料庫,這類語料庫通常為新聞文本,例如Python中自帶的inaugural address corpus。與以上的幾種語料庫都不同的是annotated text corpus,這個(gè)語料庫中包含有注釋,例如語法結(jié)構(gòu),詞性和在文本中的語義角色。

2.3添加自己需要的語料庫

除了Python中自帶的語料庫之外,也可以添加自己準(zhǔn)備好的語料庫來進(jìn)行處理。在程序中利用corpus_root函數(shù),加上想要引用的語料庫的文件地址便可以引入自己的需要的語料庫。

3對(duì)原始文本進(jìn)行處理

盡管Python中已經(jīng)有許多自帶的語料庫,但絕大多數(shù)情況下,我們需要處理的對(duì)象還是自己的文本和語料庫。在Python中,對(duì)于文本的處理是基于單詞和簡單文本的,例如一個(gè)或多個(gè)單詞,以及一句話,我們將它們成為strings。因?yàn)閱卧~由多個(gè)字母組成,字符串是基本的處理單位,所以在處理自然語言時(shí),字符串就像是一個(gè)最單一的基本變量。

3.1對(duì)于字符串的簡單處理和操作

在Python中,與其他編程語言相同,多個(gè)字符串可以進(jìn)行合并,但是不能刪減其中的元素。單個(gè)字符串可以進(jìn)行乘法,以倍數(shù)增加字符串中的元素,例如一個(gè)單詞在進(jìn)行乘法后,會(huì)變?yōu)槿齻€(gè)單詞儲(chǔ)存在一個(gè)字符串內(nèi)。但是,字符串同樣不能進(jìn)行除法。

3.2獲取單詞中的特定字母和substring(子字符串)

除此之外,因?yàn)樽址且詥蝹€(gè)字母為最小基本單位進(jìn)行儲(chǔ)存的,并且存在順序,所以,我們可以輕易獲得單詞中的特定字母。在字符串中,第一個(gè)字母的位置是0,可以說它是字符串中第0個(gè)元素,以此類推,所以第五個(gè)字符是第四的元素。在大多數(shù)情況下,字符串的長度為12,也就是說一個(gè)字符串可以包含12個(gè)字母。我們也可以用負(fù)數(shù)來表示這個(gè)字母在字符串中的位置,第一個(gè)字母,也就是第0個(gè)元素,對(duì)應(yīng)的是第負(fù)12元素,以此遞增,最后一個(gè)字母,第11個(gè)元素,對(duì)應(yīng)的是負(fù)一。

基于以上的原理,我們可以從一個(gè)字符串中獲得一個(gè)子字符串。寫出想要獲得的第一個(gè)和最后一個(gè)元素的位置,便可以獲得一個(gè)子字符串。眾所周知,英文中有構(gòu)詞法,所以單詞由詞根詞綴,當(dāng)我們可以獲得子字符串時(shí),我們就可以借此來提取出單詞的詞根詞綴,將其分解。

3.3字符串與列表的差別

在進(jìn)行字符串的相加合并時(shí),有一點(diǎn)需要注意的是,字符串只能與字符串進(jìn)行相加合并,而無法和lists,也就是列表,進(jìn)行相加合并。因?yàn)榱斜砼c字符串不同的地方在于,字符串內(nèi)的元素都是緊密相連的,即使里面包含兩個(gè)單詞,也會(huì)連在一次。但是在列表中,單詞之間有逗號(hào)相隔,可以理解為列表儲(chǔ)存了多個(gè)單個(gè)單詞的字符串。

3.4在語料庫中進(jìn)行有條件的搜索

在處理文本時(shí),我們經(jīng)常需要獲得我們需要的單詞,所以我們就要用到搜索。在Python中,我們可以根據(jù)單詞最開始幾個(gè)字母的順序,或者末尾幾個(gè)字母的順序,也就是詞綴詞根來進(jìn)行搜索。除此之外,我們還可以設(shè)定一個(gè)想要搜索到的單詞的范圍,并在語料庫中搜索進(jìn)行搜索。在我們想要研究不同單詞的使用頻率時(shí),我們可以設(shè)定一個(gè)最低出現(xiàn)次數(shù),當(dāng)某個(gè)單詞達(dá)到了這個(gè)出現(xiàn)次數(shù)后,便滿足了搜索條件,從而達(dá)到我們的目的。

4對(duì)單詞進(jìn)行標(biāo)注

在我們?nèi)粘W(xué)習(xí)和使用語言時(shí),會(huì)發(fā)現(xiàn)每個(gè)單詞都有自己在句子中的位置和特定的屬性,比如動(dòng)詞,名詞,副詞,形容詞,介詞等等。在用編程語言處理文本時(shí),對(duì)于單詞的分類也依然重要,這可以幫助我們分析句子的結(jié)構(gòu),從而進(jìn)一步對(duì)語義進(jìn)行分析。

4.1標(biāo)簽的使用

在Python中,我們可以根據(jù)單詞的詞性對(duì)每個(gè)單詞進(jìn)行標(biāo)注,將單詞的詞性標(biāo)注在單詞的后方。在經(jīng)過這樣的處理之后,我們便可以對(duì)整個(gè)語料庫中的文本進(jìn)行進(jìn)一步處理,例如我們可以直接利用標(biāo)簽來搜索名詞,或者,搜索與現(xiàn)有單詞具有相同詞性的單詞,有效地將文本拆分并分類。

4.2不同詞性的單詞的特點(diǎn)

在對(duì)文本中的單詞進(jìn)行過標(biāo)簽之后,我們需要進(jìn)一步了解不同詞性的單詞在句中的作用和位置,從而幫助我們更好的理解句意,從而進(jìn)一步對(duì)文本進(jìn)行處理。

4.2.1名詞(noun)

名詞通常為物理,地點(diǎn),人或概念,一般情況下出現(xiàn)在定冠詞或形容詞的后面,可以作為整個(gè)句子的主語或賓語。

4.2.2動(dòng)詞(verb)

動(dòng)詞用來描述發(fā)生的時(shí)間或動(dòng)作,在句子中,動(dòng)詞表達(dá)的關(guān)系涉及一個(gè)或多個(gè)名詞或名詞詞組。

4.2.3形容詞和副詞(adjective and adverb)

形容詞通常用來描述名詞,所以形容詞的出現(xiàn)往往意味著名詞的出現(xiàn),所以形容詞可以作為指示或預(yù)測,來判斷名詞的出現(xiàn)。副詞用來修飾動(dòng)詞,也可以用來修飾形容詞,同時(shí)可以用來表示時(shí)間,方向和地點(diǎn)。

4.3詞典

在Python中,不但有自帶的語料庫,還有自帶的詞典。與普通的字典相同,Python中自帶的詞典可以幫助我們查找一個(gè)單詞的詞性。除了使用Python中自帶的詞典之外,我們還可以自己定義一個(gè)詞典,來幫我們處理文本。有些時(shí)候,我們也可以將詞典進(jìn)行倒置,也就是說,我們不但可以利用詞典來搜索已知單詞的詞性,也可以根據(jù)詞性來搜索相應(yīng)的單詞,這樣可以幫助我們更好的拆分句子結(jié)構(gòu),從而進(jìn)一步對(duì)文本進(jìn)行處理。

5從文本中提取信息

在大多數(shù)情況下,語料庫中包含的文本往往數(shù)據(jù)量十分巨大,而我們不可能對(duì)如此龐大的數(shù)據(jù)進(jìn)行處理,所以我們需要從文本中提取出我們需要的信息來進(jìn)行處理。通常情況下,我們需要先對(duì)文本的不同部分的信息進(jìn)行分類識(shí)別,然后再進(jìn)行提取。

5.1組塊(chunking)

在對(duì)一個(gè)句子進(jìn)行劃分時(shí),我們可以將句子分為不同的組塊。組塊可以是單個(gè)單詞,也可以是短語。例如,在分析一個(gè)較為復(fù)雜的句子時(shí),這個(gè)句子可能包含不止一層的結(jié)構(gòu),因此組塊的大小也會(huì)因此發(fā)生變化。在第一層機(jī)構(gòu)中,有些組塊可能包含很多單詞,但是在第二層結(jié)構(gòu)中我們便可以將這些大的組塊再次劃分成小的組塊,以此類推。在進(jìn)行完這樣的劃分后,我們便可以清晰地了解到句子的結(jié)構(gòu),從而提取出我們需要的信息。

5.2句子中的遞歸結(jié)構(gòu)

復(fù)雜的句子一般包含有多層結(jié)構(gòu),所以在對(duì)較為復(fù)雜的句子進(jìn)行拆分時(shí),我們可以使用遞歸的思想,一層一層地來進(jìn)行拆分。

6理解句子含義

在理解句子含義時(shí),我們可以將句子轉(zhuǎn)化為一階邏輯(first-order logic),但是有些句子是無法轉(zhuǎn)化為一階邏輯的,這也是目前存在的缺陷和對(duì)于語言處理的局限。

7挑戰(zhàn)

盡管我們已經(jīng)可以利用編程語言來對(duì)自然語言進(jìn)行一些簡單的處理,但在某些情況下,我們還是無法對(duì)所有的自然語言都進(jìn)行處理。在將文本轉(zhuǎn)化為一階邏輯時(shí),也不可避免地會(huì)出現(xiàn)許多直觀的錯(cuò)誤。

自然語言處理在人工智能領(lǐng)域有著很大的作用,但是它仍處在發(fā)展階段。目前,我們也僅限于一些簡單的處理,而未來的發(fā)展也面臨一些挑戰(zhàn),比如在分析代詞的過程中,代詞在句子中的指代對(duì)象有很多種可能,僅僅通過句子結(jié)構(gòu)和詞性是遠(yuǎn)遠(yuǎn)不夠的,而需要憑借對(duì)于語義的理解才能獲得準(zhǔn)確的判斷。相信隨著人工智能的發(fā)展,人們將會(huì)在處理自然語言方面有著更大的進(jìn)步。

參考文獻(xiàn)

[1]孫雋韜,陳炳,黃愛華.一種基于Python的商品評(píng)論數(shù)據(jù)智能獲取與分析技術(shù)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2018,(14).

猜你喜歡
字符串組塊自帶
橫浪作用下大型上部組塊雙船浮托安裝動(dòng)力響應(yīng)特性試驗(yàn)研究
中國寶玉石(2018年6期)2018-03-05
好的愛情自帶成長屬性
陸豐7-2油田導(dǎo)管架平臺(tái)上部組塊低位浮托安裝關(guān)鍵技術(shù)
一種新的基于對(duì)稱性的字符串相似性處理算法
英語詞匯組塊學(xué)習(xí)路徑研究——組塊法
依據(jù)字符串匹配的中文分詞模型研究
詞匯組塊層次網(wǎng)絡(luò)
一種針對(duì)Java中字符串的內(nèi)存管理方案