如何在python中使用NLTK从原始文本中提取地址?

时间:2016-06-10 10:22:08

标签: python nltk stanford-nlp

我有这个文字

  

''嗨,Sam D. Richards先生住在这里,新西44街22号   约克,纽约州12345 。你现在可以联系他吗?如果您需要任何帮助,请致电   我在12345678'''

。如何使用NLTK从上面的文本中提取地址部分?我尝试了Stanford NER Tagger,它只给我New York作为位置。怎么解决这个问题?

3 个答案:

答案 0 :(得分:8)

绝对正则表达式:)

这样的东西
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):号码和街道名称之间的空格

.+:街道名称,任意出现次数的任何字符

,:城市前的逗号和空格

.+:city,任意次数的任何字符

,:状态前的逗号和空格

[A-Z]{2}:从A到Z正好有2个大写字符

[0-9]{5}:5位

re.findall(expr, string)将返回一个包含所有匹配项的数组。

答案 1 :(得分:2)

Pyap不仅适用于此特定示例,而且也适用于文本中包含的其他地址。

text = ...
addresses = pyap.parse(text, country='US')

答案 2 :(得分:1)

结帐libpostal,专用于地址提取的库