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

ngr*_*grj 8 python nltk stanford-nlp

我有这个文字

"嗨,Sam D. Richards先生住在这里,44 West 22nd Street,New York,NY 12345.你现在可以联系他吗?如果您需要帮助,请致电12345678'''

.如何使用NLTK从上面的文本中提取地址部分?我试过了Stanford NER Tagger,这只给我一个New York位置.怎么解决这个?

Ale*_*lex 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']
Run Code Online (Sandbox Code Playgroud)

说明:

[0-9]{1,3}:1到3位数字,地址编号

(space):数字和街道名称之间的空格

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

,:城市前的逗号和空格

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

,:国家面前的逗号和空格

[A-Z]{2}:从A到Z的2个大写字母

[0-9]{5}:5位数

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


小智 5

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

text = ...
addresses = pyap.parse(text, country='US')
Run Code Online (Sandbox Code Playgroud)