2016-06-10 29 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)将返回找到的所有出现的数组。

相关问题