【问题标题】:How can I extract address from raw text using NLTK in python?如何在 python 中使用 NLTK 从原始文本中提取地址?
【发布时间】:2016-06-10 10:22:08
【问题描述】:

我有这段文字

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

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

【问题讨论】:

  • 大多数人都会尝试常规的expressions。除此之外,在 SO 上的简短搜索将为您提供大量 inspiration
  • 谢谢!这让我有了一些开始。
  • 请采纳答案
  • patrick,那个在 php 中
  • 这是一个非常可靠的python, nltk write up。在我自己实现之后,我会在此处将其输入到带有摘要的答案中。

标签: python nltk stanford-nlp street-address


【解决方案1】:

绝对是正则表达式:)

类似

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 正好 2 个大写字符

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

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

【讨论】:

  • 深入清晰的解释。我可以在哪里学习这个正则表达式的详细信息
  • 有什么方法可以使用 Node.js,而不是 python @Alex 从文本中检测地址
  • @Lakshmi 是同样的方法,只是复制正则表达式
  • 我总是觉得 regex101.com 很有帮助
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • Libpostal 用于规范化已经被识别为地址的字符串,这是一个完全不同的任务。
    猜你喜欢
    • 2013-05-30
    • 1970-01-01
    • 2020-10-09
    • 2015-10-18
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多