當前位置:成語大全網 - 書法字典 - python自然語言處理有新版本嗎?

python自然語言處理有新版本嗎?

1原點

本文試圖向讀者介紹自然語言處理領域,通常簡稱為NLP。但是,與壹般文章只描述NLP的重要概念不同,本文還使用Python對其進行了生動的闡述。對於不熟悉Python的讀者,本文還提供了壹些參考資料,教妳如何進行Python編程。

2相關介紹

2.1自然語言處理

自然語言處理吸收了許多自動生成、處理和分析自然或人類語言的技術。雖然大多數NLP技術繼承自語言學和人工智能,但它們也受到機器學習、計算統計和認知科學等相對較新的學科的影響。

在展示NLP技術的例子之前,有必要介紹壹些非常基礎的術語。請註意:為了使文章易於理解,這些定義在語言上不壹定優雅。

Token:在進行任何實際處理之前,需要將輸入文本劃分為語言單位,如單詞、標點符號、數字或字母數字。這些單元被稱為單詞示例。

句子:它由壹系列有序的單詞例子組成。

標記化:把壹個句子縮減成它的組成詞。以分段語言英語為例,空格的存在使得還原單詞變得相對容易和枯燥。但是對於中文和阿拉伯語來說,因為沒有明確的界限,這個工作有點難度。另外,在壹些非切分語言中,幾乎所有的字符都可以作為單字符存在,但也可以組合成多字符詞。

語料庫:通常是由豐富的句子組成的海量文本。

詞性(POS)標簽:任何單詞都可以被歸入至少壹種詞匯集或詞性類別,如名詞、動詞、形容詞和冠詞。詞性標簽用符號來表示壹個詞匯項——NN(名詞)、VB(動詞)、JJ(形容詞)和?在(文章)布朗語料庫?它是最古老和最常用的註釋集之壹。詳情請聽下回分解。

解析樹:根據形式語法的定義,壹個樹形圖可以用來表示壹個給定句子的句法結構。

了解基本術語後,讓我們了解NLP的常見任務:

詞性標註:給定壹個句子和詞的標簽,常見的語言處理是給句子中的每個詞加標簽。比如球是紅色的,詞性標註後會變成什麽?這個球是紅色的,是JJ的.最先進的詞性標註設備[9]準確率達到96%。文本的詞性標註對於更復雜的NLP問題是非常必要的,比如解析和機器翻譯,我們將在後面討論。

計算形態學:大量基於“語素/詞幹”的短語已經成為自然語言。語素雖然是最小的語言單位,但意義豐富。計算形態學涉及用計算機發現和分析單詞的內部結構。

解析:在解析問題中,壹個解析器將給定的句子構造成壹棵解析樹。為了分析語法,有些解析器假設存在壹系列的語法規則,但是現在的解析器足夠聰明,可以借助復雜的統計模型[1]直接推斷出分析樹。大多數解析器可以在監督設置下運行,並且句子已經被詞性標註。統計句法分析是自然語言處理中壹個非常活躍的研究領域。

機器翻譯(MT):機器翻譯的目的是讓計算機在沒有人工幹預的情況下,將壹種給定語言的文本流暢地翻譯成另壹種語言。這是自然語言處理中最困難的任務之壹,多年來已經用許多不同的方法解決了這個問題。幾乎所有的機器翻譯方法都依賴詞性標註和句法分析作為預處理。

2.2 Python

Python是壹種動態類型的、面向對象的解釋編程語言。雖然它的主要優勢是允許程序員快速開發項目,但是大量的標準庫使得它仍然適用於大型的產品級工程項目。Python的學習曲線非常陡峭,有很多優秀的在線學習資源[11]。

2.3自然語言工具包(Natural Language Toolkit)

雖然Python的大部分函數可以解決簡單的NLP任務,但不足以處理標準的自然語言處理任務。就這樣嗎?NLTK(自然語言處理工具集)誕生的原因。NLTK集成了模塊和語料庫,並以開源許可證發布,允許學生學習自然語言處理和生產研究。使用NLTK最大的優勢是其完整性自包含,不僅為構建常見的自然語言處理任務塊提供了便捷的功能和包,還提供了原始的、經過預處理的標準語料庫版本,用於自然語言處理文獻和課程中的應用。

3使用NLTK

NLTK官網提供了很棒的學習指導文檔和教程[13]。簡單重復那些作者的話,對他們和這篇文章都是不公平的。因此,我將通過處理四個難度系數遞增的NLP任務來介紹NLTK。這些任務都來自於NLTK教程中沒有答案的練習或改變。因此,本文對每項任務的解決和分析都有獨到之處。

3.1 NLTK語料庫

如上所述,NLTK包括幾個在NLP研究領域廣泛使用的實用語料庫。在這壹節中,我們來看三個稍後會用到的語料庫:

布朗語料庫:標準美國英語布朗語料庫被認為是第壹個可用於計算語言學處理的通用英語語料庫[6]。包含1961發布的壹百萬字美式英語文本。它代表了普通英語的壹個樣本,從小說、新聞和宗教文本中取樣。隨後,經過大量的人工標註,標註詞性的版本誕生了。

古騰堡語料庫:古騰堡語料庫來自最大的在線免費電子書平臺?古騰堡計劃?選取了14篇文本,整個語料庫包含170萬字。

停用詞語料庫:除了常規文本之外,另壹類具有重要語法功能的詞,如介詞、補語和限定詞,稱為停用詞。NLTK收集的停用詞語料庫包含來自11種不同語言(包括英語)的2400個停用詞。

3.2 NLTK命名約定

在我們開始使用NLTK處理我們的任務之前,讓我們熟悉壹下它的命名約定。最上面的包是nltk,我們用全限定的點名比如nltk.corpus?然後呢。nltk.utilities?來引用它的內置模塊。任何模塊都可以利用Python的標準結構?從。。。進口。。。?導入頂級命名空間。

3.3任務1:探索語料庫

如上所述,NLTK包含多個NLP語料庫。我們把這個任務設定為探索壹個語料庫。

任務:使用NLTK?語料庫?該模塊讀取古騰堡語料庫中包含的數據。Austen-勸導. txt,回答以下問題:

這個語料庫有多少單詞?

這個語料庫中有多少個獨特的詞?

出現頻率最高的前10個詞出現了多少次?

使用?語料庫?該模塊可以探索內置的語料庫,NLTK還在概率模塊中提供了幾個有用的類和函數,可以用來計算任務中的概率分布。其中壹個是?FreqDist,它可以跟蹤分布中的樣本頻率。清單1?演示如何使用這兩個模塊來處理第壹項任務。

清單1:NLTK內置語料庫的探索。

計算機編程語言

1

2

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#導入古騰堡集

& gt& gt& gt從nltk.corpus導入古騰堡

#這本集子裏有哪些語言素材?

& gt& gt& gt打印gutenberg.fileids()

['austen-emma.txt ',' Austen-勸導. txt ',' austen-sense.txt ',' bible-kjv.txt ',' blake-poems.txt ',' bryant-stories.txt ',' burgess-busterbrown.txt ',' carroll-alice.txt ',' chesterton-ball.txt ',' chesterton-brown.txt ',' chesterton-thursday.txt ',' edgeworth-parents.txt ',' melville-moby_dick.txt ',' Milton-paradistance . txt ',' sha

#導入FreqDist類

& gt& gt& gt從nltk導入頻率分布

#頻率分布實例化

& gt& gt& gtfd = FreqDist()

#統計文本中的單詞示例

& gt& gt& gt在Gutenberg . words(' Austen-勸導. txt '):

...fd.inc(word)

...

& gt& gt& gt打印fd。N() #樣本總數

98171

& gt& gt& gt打印fd。B() #箱或唯壹樣本的數量

6132

#獲取按頻率排序的前10個單詞。

& gt& gt& gt對於fd.keys()[:10]中的word:

...打印word,fd[word]

, 6750

3120

到2775年

。2741

和2739

2564年的

a 1529

在1346

是1330

;1290

答案:簡·奧斯汀的小說《勸導》?總* * *包含98171個單詞和6141個唯壹單詞。此外,最常見的單詞示例是逗號,後跟單詞the。事實上,這項任務的最後壹部分是最有趣的經驗觀察之壹,它完美地說明了單詞的出現。如果對壹個龐大的語料庫進行統計,從高到低記錄每個詞在表中的出現頻率,我們就可以直觀地找到詞頻和詞序在列表中的關系。事實上,Zipf證明了這種關系可以用數學表達式來表示。例如,對於任何給定的單詞,$fr$ = $k$,$f$是詞頻,$r$是單詞排列或排序列表中的詞序,$k$是常數。因此,舉例來說,出現頻率第五的單詞應該是出現頻率第十的單詞的兩倍。在NLP文獻中,上述關系通常被稱為“齊夫定律”。

即使Zipf定律描述的數學關系可能並不完全準確,但對於描述人類語言中單詞的分布仍然非常有用——詞序小的單詞經常出現,而詞序稍大的單詞很少出現,詞序非常大的單詞幾乎不出現。任務1?最後壹部分非常容易通過使用NLTK的圖形可視化,比如?清單1a?如圖。相關?日誌日誌?關系,如圖1,在我們的語料庫中可以清晰的找到對應的擴展關系。