我試圖使用RegexpTokenizer令牌化文本。NLTK - nltk.tokenize.RegexpTokenizer - 正則表達式不按預期方式工作
代碼:
from nltk.tokenize import RegexpTokenizer
#from nltk.tokenize import word_tokenize
line = "U.S.A Count U.S.A. Sec.of U.S. Name:Dr.John Doe J.Doe 1.11 1,000 10--20 10-20"
pattern = '[\d|\.|\,]+|[A-Z][\.|A-Z]+\b[\.]*|[\w]+|\S'
tokenizer = RegexpTokenizer(pattern)
print tokenizer.tokenize(line)
#print word_tokenize(line)
輸出: ' ''。'
[ 'U', 'S', 'A', '計數', 'U','。','S','。','A','。','Sec','。','of','U','。','S','。 ','Name',':','Dr','。','John','Doe','J','。','Doe','1.11','1,000','10',' ' - ',' - ','20','10',' - ','20']
預期輸出:
[ 'USA', '伯爵', '美國', '秒', '中', '美國', '名', '' '' ,'Dr','','John','Doe','J.','Doe','1.11','1,000','10',' - ',' - ','20',' '10',' - ','20']
爲什麼令牌標記還會使我預期的標記「美國」,「美國」? 我該如何解決這個問題?
我的正則表達式:https://regex101.com/r/dS1jW9/1
'[USA \。] {4,} | [\ w] +''也會匹配'............'。不需要在字符類中放入一個'\ w'並在字符類內部轉義一個點。 –
同意 - 但隨着測試數據給出(我懶得想一個更好的解決方案)這是我給的:) –