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

可否对spaCy NER的displacy展示结果做实体提取及后续分析

spaCy NER 实体提取与地理分析实现方案

完全可以实现该需求。displacy仅作为实体可视化工具使用,你需要的GPE/LOC实体数据本身就存储在spaCy处理后生成的Doc对象中,无需从可视化结果中反向提取。


实体提取存入DataFrame实现

你可以直接遍历spaCy处理后的Doc对象的实体属性,筛选出目标类型实体后批量存入DataFrame,参考代码如下:

import pandas as pd
import spacy

# 替换为你实际使用的spaCy模型,比如中文模型zh_core_web_md
nlp = spacy.load("en_core_web_md")
# 假设你的原始推文存储在tweets列表中
tweets = ["示例推文1", "示例推文2", "..."]
entity_records = []

for tweet_content in tweets:
    doc = nlp(tweet_content)
    # 仅筛选LOC、GPE类型的实体
    for ent in doc.ents:
        if ent.label_ in ("LOC", "GPE"):
            entity_records.append({
                "原推文内容": tweet_content,
                "实体文本": ent.text,
                "实体类型": ent.label_,
                "实体起始位置": ent.start_char,
                "实体结束位置": ent.end_char
            })

# 转换为DataFrame
location_ent_df = pd.DataFrame(entity_records)

后续地理分析建议

  • 数据预处理:先对提取到的实体做清洗,包括去重、实体归一(比如将“上海”“上海市”统一为同一个实体)、错误实体剔除(spaCy存在小概率标注错误,可结合业务规则过滤)
  • 地理坐标转换:可以用你提到的geopy库将实体文本转换为经纬度,参考代码如下:
    from geopy.geocoders import Nominatim
    # user_agent替换为你自定义的应用名称
    geolocator = Nominatim(user_agent="tweet_geo_analysis")
    
    def get_geo_coords(place_name):
        try:
            location = geolocator.geocode(place_name, timeout=10)
            if location:
                return pd.Series([location.latitude, location.longitude])
            return pd.Series([None, None])
        except:
            return pd.Series([None, None])
    
    location_ent_df[["纬度", "经度"]] = location_ent_df["实体文本"].apply(get_geo_coords)
    
  • 可视化实现:拿到坐标后可以用folium绘制点位分布、热力图,直观展示不同地点的提及热度;也可以结合推文的发布时间、发布用户属性做维度拆解,分析不同群体、不同时间段的地点提及偏好
  • 延伸分析:可以做共现分析,统计哪些地点经常在同一条推文中同时出现,挖掘地域关联;也可以搭配情感分析模型,判断用户对不同地点的评价倾向

注意事项

你贴的displacy示例代码存在笔误,LOC的渐变颜色值开头写了~,应该替换为#才能正常生效,修正后的代码如下:

colors = {'LOC': 'linear-gradient(90deg, #aa9cde, #dc9ce7)', 'GPE' : 'radial-gradient(white, blue)'}
options = {'ents' : ['LOC', 'GPE'],'colors':colors} 
spacy.displacy.render(doc, style='ent',jupyter=True, options=options)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:06:02