2016-06-10 28 views
3

我有這樣的文字如何在python中使用NLTK從原始文本中提取地址?

'''嗨,山姆D.理查茲先生住在這裏,44西22街,新 紐約,NY 12345。你現在可以聯繫他嗎? '如果您需要任何幫助,請致電 我12345678'''

。如何使用NLTK從上述文本中提取地址部分?我試過Stanford NER Tagger,它只給我New York作爲位置。如何解決這個問題?

+2

大多數人會試一試[正則表達式](https://docs.python.org/2/howto/regex.html)。除此之外,對SO的簡短搜索會給你很多[靈感](http://stackoverflow.com/questions/14087116/extract-address-from-string)。 – patrick

+0

謝謝!這給了我一些開始。 – ngrj

+0

接受答案請 – Alex

回答

3

絕對正則表達式:)

喜歡的東西

import re 

txt = ... 
regexp = "[0-9]{1,3} .+, .+, [A-Z]{2} [0-9]{5}" 
address = re.findall(regexp, txt) 

# address = ['44 West 22nd Street, New York, NY 12345'] 

說明:

[0-9]{1,3}:1至3位數,地址號碼

(space):在之間的空間號碼和街道名稱

.+:街道名稱,任意數量出現

,任何字符:逗號和城市之前的空間

.+:城市,對任何出現次數

,的任何字符:一個逗號和一個空格前的狀態

[A-Z]{2}:正好兩個大寫字母從A到Z

[0-9]{5}:5位

re.findall(expr, string)將返回找到的所有出現的數組。

相關問題