使用自然语言处理从推文中提取地址

我正在开发一个Twitter机器人,它会监听如下所示的推文:

Hey @twitterbot, 我正在寻找123 Main Street, New York附近的餐馆

或者,另一个例子:

@twitterbot, Yonge & Dundas, Toronto附近有什么?我饿了!

然后它会回复这些问题所期望的数据类型。我已经解决了大部分问题,但我在一个不应该很难的事情上卡住了;从推文中提取地址。

我会将地址转发给一个地理编码服务来获取经纬度,所以我无需以任何方式格式化或准备地址;我只需要将它从不相关的文本中隔离出来,比如“我正在寻找附近的餐馆”或“我饿了!”。

有没有可以在一段文本中执行地址识别功能的NLP工具?有没有其他方法的建议?因为Google的地理编码器可以处理如此广泛的地址格式(甚至像“多伦多的伊顿中心”这样的兴趣点也算作地址),我无法使用正则表达式来提取地址。

换句话说,我只想删除任何不属于地址的文本。

我寻找的地址需要适用于美国/加拿大。

在StackOverflow上有一些类似的问题,但我找不到任何解决这个确切问题的答案。因为Google的地理编码器非常宽容,解决方案不必完美,它只需要去除足够的干扰,使Google明白我在说什么即可。

我对NLP非常新手,所以我很感激任何关于这个主题的指导。


回答:

如何从文本中解析自由格式的街道/邮政地址,并将其分解成组件回答了“有没有办法将地址从周围的文本中隔离出来并分解成各个部分?”这个问题——这基本上与你的问题相同(除了你不关心将其分解成各个部分——只需将其与文本的其余部分隔离即可)。

SmartyStreets也有一个很好的演示,网址是https://smartystreets.com/demo?mode=extract,但遗憾的是不是免费的解决方案。

另一个快速的想法——由于Twitter帖子限制在140个字符内,并且通常包含很少的词(你的两个例子分别有9个和12个词),你可以设想直接强行解决。例如,要获取“@twitterbot, Yonge & Dundas, Toronto附近有什么?我饿了!”中的位置,你可以将以下所有内容发送给Google地理编码器——

what’s near Yonge & Dundas, Toronto? I’m hungry!

what’s near Yonge & Dundas, Toronto? I’m

what’s near Yonge & Dundas, Toronto?

what’s near Yonge & Dundas,

等等,对于所有可能的由完整词组成的子字符串。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注