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

我正在开发一个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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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