Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用NLTK从原始文本中提取地址?_Python_Nltk_Stanford Nlp_Street Address - Fatal编程技术网

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

如何在python中使用NLTK从原始文本中提取地址?,python,nltk,stanford-nlp,street-address,Python,Nltk,Stanford Nlp,Street Address,我有这篇课文 “嗨,山姆·D·理查兹先生住在这里,纽约西22街44号 纽约州约克市12345。你现在能联系他吗?如果你需要帮助,打电话给我 请拨打12345678“给我打电话 。如何使用NLTK从上述文本中提取地址部分?我试过Stanford NER Tagger,它只给我New York作为位置。如何解决这个问题?当然是正则表达式:) 差不多 import re txt = ... regexp = "[0-9]{1,3} .+, .+, [A-Z]{2} [0-9]{5}" address

我有这篇课文

“嗨,山姆·D·理查兹先生住在这里,纽约西22街44号 纽约州约克市12345。你现在能联系他吗?如果你需要帮助,打电话给我 请拨打12345678“给我打电话


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

当然是正则表达式:)

差不多

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位数字,地址号

(空格)
:号码和街道名称之间的空格

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

:城市前面的逗号和空格

+
:城市,任意出现次数的任意字符

:状态前的逗号和空格

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

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


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

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

text = ...
addresses = pyap.parse(text, country='US')
Checkout,一个专用于地址提取的库


它无法从原始文本中提取地址,但可能有助于完成相关任务

大多数人会定期尝试。除此之外,在SO上进行简短的搜索将为您提供大量信息。谢谢!这给了我一个开始。请接受这个答案。这个技巧,在phphere中,它是一个相当可靠的。在我自己实现之后,我会在这里把它输入到一个答案中,并附上总结。深刻清晰的解释。在这里,我可以学习这个带有细节的正则表达式。BPOSTAL用于规范化已经被标识为地址的字符串,这是一个完全不同的任务。