NLTK實現文本切分


之前已經了解了使用nltk庫,將文本作為參數傳入相應函數進行切分的方法,下面看看使用正則表達式如何來進行文本切分。

1. 使用正則表達式切分

1.1 通過RegexpTokenizer 進行切分。先導入 RegexpTokenizer 模塊,然后構建一個與文本中的標識符相匹配的正則表達式。將此正則表達式作為參數傳入RegexpTokenizer ,同時實例化一個對象,使用此對象對文本進行切分。

from nltk.tokenize import RegexpTokenizer

# RegexpTokenizer() 參數是將要匹配的字符串的正則表達式,返回值是所有匹配到的字符串組成的列表
tokenizer = RegexpTokenizer("\w+")
print(tokenizer.tokenize("Don't hesitate to ask questions!"))

運行結果:

['Don', 't', 'hesitate', 'to', 'ask', 'questions']

1.2 使用 regexp_tokenize 切分。

from nltk.tokenize import regexp_tokenize
sentence = "My name is QWE, and I'm 22 years old."
print(regexp_tokenize(sentence, pattern= '\w+|\$[\d\.]+|\S+'))

運行結果:

['My', 'name', 'is', 'QWE', ',', 'and', 'I', "'m", '22', 'years', 'old', '.']

1.3 以空格為分界點進行切分

from nltk.tokenize import RegexpTokenizer

tok = RegexpTokenizer('\s+', gaps= True)
print(tok.tokenize("Don't hesitate to ask questions"))

1.4 篩選以大寫字母開頭的單詞

from nltk.tokenize import RegexpTokenizer
sentence = "My name is QWE, and I'm 22 years old.I'm from China"
capt = RegexpTokenizer('[A-Z]\w+')
print(capt.tokenize(sentence))

結果:

['My', 'QWE', 'China']

(看起來都像是直接用正則匹配的。。)

1.5 使用WhitespaceTokenizer可以通過返回元組形式的序列來進行切分,該序列為標識符在語句中的位置和偏移量。

from nltk.tokenize import WhitespaceTokenizer
sentence = " She secured 90.56 % in class X \n. She is a meritorious student\n"
print(list(WhitespaceTokenizer().span_tokenize(sentence)))

結果:

[(1, 4), (5, 12), (13, 18), (19, 20), (21, 23), (24, 29), (30, 31), (33, 34), (35, 38), (39, 41), (42, 43), (44, 55), (56, 63)]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM