You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新闻聚合APP开发:如何从新闻网站提取文章关联地理位置?

从新闻文章中提取关联地理位置的可行方案

1. 基于文本内容的地名实体识别(NER)

直接分析抓取到的新闻正文或标题,无需用户权限:

  • 使用开源NER工具:比如spaCy的预训练模型,可精准识别GPE(地缘政治实体,含国家、州、城市等),示例代码:
    import spacy
    nlp = spacy.load("en_core_web_sm")
    doc = nlp("USA Today reports a new policy launched in Massachusetts")
    for ent in doc.ents:
        if ent.label_ == "GPE":
            print(ent.text)  # 输出 Massachusetts
    
  • 针对新闻场景优化:可选用Hugging Face中经新闻语料微调的BERT类NER模型,进一步提升地名识别准确率。

2. 解析新闻页面的结构化元数据

多数正规新闻站会在页面中嵌入地理位置相关的结构化数据:

  • 提取Meta标签:查找如<meta property="article:location" content="Massachusetts">这类字段,直接通过网页抓取模块解析HTML获取。
  • 解析JSON-LD数据:页面头部的application/ld+json脚本通常包含新闻的结构化信息,示例解析逻辑:
    import json
    from bs4 import BeautifulSoup
    
    # 假设soup为抓取页面解析后的BeautifulSoup对象
    script_tags = soup.find_all("script", type="application/ld+json")
    for script in script_tags:
        try:
            data = json.loads(script.string)
            data = data[0] if isinstance(data, list) else data
            if "location" in data:
                print(data["location"].get("name"))  # 提取地点名称
        except:
            continue
    

3. 从新闻URL提取隐含地理标识

部分新闻网站的URL会包含地理信息,可通过正则匹配提取:

import re
url = "https://www.usatoday.com/massachusetts/news/local/2024/05/20/..."
match = re.search(r"/([a-zA-Z-]+)/news/", url)
if match:
    location = match.group(1).replace("-", " ").title()
    print(location)  # 输出 Massachusetts

4. 替代Geo-Location API的方案

若需将识别到的地名转换为经纬度,可改用服务器端调用地理编码API:在APP客户端识别出地名后,传至你的后端服务器,由服务器调用无需用户权限的地理编码服务(如OpenStreetMap Nominatim),再将结果返回给APP,规避客户端权限问题。


内容的提问来源于stack exchange,提问作者DIXIT GOGOI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:01:53