如何从Pandas DataFrame的字段中提取场所/站点类型词汇?
从Pandas DataFrame字段中提取场所类型词汇的解决方案
这类特定类型名词提取需求,优先使用自定义关键词匹配方案即可实现高准确率的结果,通用NLP工具/TF-IDF方法不适用于这类小范围特定实体识别场景,具体实现步骤如下:
实现代码
- 首先自定义场所类型关键词集合,可根据自己的需求灵活增删词条:
# 自定义场所关键词表,完全匹配你的预期输出需求 place_set = {'HOSPITAL', 'CAMPUS', 'STADIUM', 'TOWER', 'CASINO', 'CENTER', 'ARENA'}
- 用Pandas内置的
isin()方法直接筛选匹配的词汇:
# 筛选并转换为列表 target_places = df[df['Words'].isin(place_set)]['Words'].tolist() print(target_places)
运行后输出结果为:
['HOSPITAL', 'CAMPUS', 'STADIUM', 'TOWER', 'CASINO', 'CENTER', 'ARENA']
扩展场景(模糊匹配)
如果后续你的Words字段存在多词组合的内容(比如"CENTRAL HOSPITAL"),需要模糊匹配包含关键词的条目,可以使用正则匹配的方式:
import re # 生成正则匹配规则,忽略大小写 pattern = re.compile('|'.join(place_set), re.IGNORECASE) target_places = df[df['Words'].str.contains(pattern)]['Words'].tolist()
原有方案失效原因
- TF-IDF需要基于大规模标注语料统计词的权重,才能区分不同类型的名词,单份小数据集无法得到有效结果
- TextBlob的名词短语提取只能识别通用名词,无法区分你需要的场所类名词和地名、普通名词(比如示例中的
COUNTY、CRANBERRY也属于名词,会被一同提取)
内容的提问来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

