《python自然語言處理》第三章 加工原料文字

2022-07-10 06:57:12 字數 3566 閱讀 1104

1. 編寫程式訪問本地和網路上的檔案(後的語言材料)

2.把文件分割成單獨的詞和標點符號(加工原料文字)

3.編寫程式產生格式化的輸出,把結果儲存在乙個檔案中

圖處理流程:

開啟乙個url,讀裡面html格式的內容,去除標記,並選擇字元的切片,然後分詞,是否轉換為nltk.text物件是可選擇的。我們也可以將所有詞彙小寫並提取詞彙表。

在這條流程後面還有很多操作。要正確理解它,這樣有助於明確其中提到的每個變數的型別。使用type(x)我們可以找出任一python物件x的型別,如type(1)是因為1是乙個整數。

當我們載入乙個url或檔案的內容時,或者當我們去掉html標記時,我們正在處理字串,也就是python的資料型別:

>>>raw=open('

document.txt

').read()>>>type(raw)

'str

'>

當我們將乙個字串分詞,會產生乙個(詞的)鍊錶,這是python的型別。規範化和排序鍊錶產生其它鍊錶:

>>>tokens=nltk.word_tokenize(raw)>>>type(tokens)

'list

'>

>>>words=[w.lower()forwintokens]>>>type(words)

'list

'>

>>>vocab=sorted(set(words))>>>type(vocab)

'list

'>

from

__future__ import division

import nltk, re, pprint

from urllib.request import

urlopen

url = r'

'raw =urlopen(url).read()

raw = raw.decode('

utf-8')

print(raw)

#此時 type(raw) 是

#

tokens = nltk.word_tokenize(raw)

#此時 type(tokens) 為

text=nltk.text(tokens)

#此時 type(text) 為 ,從這個鍊錶建立乙個nltk文字,可以使用第一章語言處理方法

from bs4 import beautifulsoup
url="

"html =urlopen(url).read()

raw =beautifulsoup(html)

#會將html文件中的所有標籤清除,返回乙個只包含文字的字串

print

(raw.get_text)

#按照標準縮排格式輸出

print(raw.prettify())

在python中使用正規表示式,需要使用importre匯入re函式庫。還需要乙個用於搜尋的詞彙鍊錶;我們再次使用詞彙語料庫(2.4節),對它進行預處理消除某些名稱。

import re

wordlist=[w for w in nltk.corpus.words.words('en')if w.islower()]

# $美元符號 ,它是正規表示式中有特殊用途的符號,用來匹配單詞的末尾

[w for w in wordlist if re.search('ed$',w)]

# 用空格分隔文字

re.split(r' ',raw)

# 遇到空白字元分開

re.split(r'\s+',raw)

# 遇到換行分開

使用nltk庫wordnetlemmatizer詞形歸併

對於任何乙個 nlp 流水線,如果想要對相同語義詞根的不同拼寫形式都做出統一回覆的話,那麼詞形歸併工具就很有用,它會減少必須要回覆的詞的數目,即語言模型的維度。利用詞形歸併工具,可以讓模型更一般化,當然也可能帶來模型精確率的降低,因為它會對同一詞根的不同拼寫形式一視同仁。

from nltk.stem import

wordnetlemmatizer

lemmatizer =wordnetlemmatizer()

#預設其為名詞

print(lemmatizer.lemmatize("

better

") )

#如果需要得到更精確的詞元,需要告訴 wordnetlemmatizer 你感興趣的詞性是什麼。

print(lemmatizer.lemmatize("

better

", pos="a"

) )print(lemmatizer.lemmatize("

goods

", pos="n"

) )new_tokens = [nltk.wordnetlemmatizer().lemmatize(t)for t in tokens]

1.訪問單個字元(索引)

2.訪問子字串(切片)

3.輸出字串

4.更多操作

#以讀檔案的模式開啟乙個檔案物件,使用python內建的open()函式,傳入檔名和標

示符f=open('

c:\\users\\yafang\\desktop\\doc.txt')

print

(f.read())

for line in

f:

print(line.strip())#

strip()方法刪除輸入行結尾的換行符

如果檔案放在這,就不用寫路徑

python 自然語言處理第三章

1.訪問檔案 a.本地檔案 import os file open path 指標 file.read 得到字串 for line in file 遍歷檔案的每一行 b.網路檔案 from urllib import urlopen file urlopen url file.read 2.分詞 t...

Python第三章 異常處理

章節練習 try 檢測範圍 except exception as reason 出現異常後的處理 try f open test.txt print f.read f.close except oserror print 開啟檔案出錯 開啟檔案出錯 try f open test.txt prin...

C語言第三章

main.c project1 created by sihan guo on 2019 06 13.include int main int argc,const char ar else 迴圈結構 當型 int icount 5 while icount 0 直到型迴圈結構 這個迴圈結構至少執行...