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

如何修改Python代码以处理数据框单列单词并获取所有POS标签?

处理数据框中单单词列的词性标签获取方案

优化后的完整代码

先优化词性标签映射的构建逻辑,再结合Pandas处理数据框:

import nltk
import pandas as pd
from nltk.corpus import brown
from collections import defaultdict

# 首次运行需下载语料
nltk.download('brown')

# 构建单词到所有唯一词性标签的映射字典
word_pos_map = defaultdict(set)
for word, pos in brown.tagged_words():
    word_pos_map[word].add(pos)
# 将集合转为有序列表,保持输出格式统一
word_pos_map = {word: sorted(list(pos_set)) for word, pos_set in word_pos_map.items()}

# 示例数据框(替换为你的实际数据框即可)
df = pd.DataFrame({'word': ['pack', 'run', 'book', 'unknown_word']})

# 为数据框添加词性标签列
df['possible_pos'] = df['word'].map(lambda x: word_pos_map.get(x, []))

print(df)

代码说明

  • 映射效率优化:用set自动去重,比原代码的if pos not in x[word]判断效率更高,最后转成排序后的列表保证输出一致性。
  • 数据框适配:通过pandas.DataFrame.map()快速将单词列映射到对应的词性标签列表,语料库中不存在的单词会返回空列表。
  • 示例输出:运行代码后会得到如下结果:
word possible_pos
0         pack     [NN, VB]
1          run  [NN, VBD, VB]
2         book  [NN, VB, VBN]
3  unknown_word           []

额外适配处理

如果数据框中的单词存在大小写差异(比如Pack和pack),可以统一转为小写后再匹配:

df['possible_pos'] = df['word'].str.lower().map(lambda x: word_pos_map.get(x, []))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:15:39