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

如何解决Pandas提取德语POS标注名词时的解包错误?

解决德语POS标注名词提取的ValueError问题

你的错误根源在于每个标注元组包含三个元素(原始词、标准化词、POS标签),但你在列表推导式里只尝试拆成两个变量word, tag,导致Python报错“too many values to unpack (expected 2)”。

修复方案一:直接正确拆包三个元素

如果你想提取标准化后的名词(比如元组里的第二个值,像Waffe),可以直接在推导式里拆出三个变量,只保留需要的部分:

import pandas as pd

data = {"tagged": [[("waffe", "Waffe", "NN"), ("haus", "Haus", "NN")], [("groß", "groß", "ADJD"), ("bereich", "Bereich", "NN")]]}
df = pd.DataFrame(data=data)

# 提取标准化名词(第二个元素),过滤NN/NE标签
df["nouns"] = df["tagged"].apply(lambda x: [std_word for raw_word, std_word, tag in x if tag in ["NN", "NE"]])

修复方案二:先移除元组的第一个元素再处理

如果你确实想先删除每个元组的第一个值,再进行后续提取,可以先对每个元组做切片处理:

import pandas as pd

data = {"tagged": [[("waffe", "Waffe", "NN"), ("haus", "Haus", "NN")], [("groß", "groß", "ADJD"), ("bereich", "Bereich", "NN")]]}
df = pd.DataFrame(data=data)

# 先去掉每个元组的第一个元素,再提取名词
df["nouns"] = df["tagged"].apply(
    lambda x: [word for word, tag in (item[1:] for item in x) if tag in ["NN", "NE"]]
)

两种方案都能正常运行,最终df["nouns"]列会得到过滤后的名词列表:

0    [Waffe, Haus]
1        [Bereich]
Name: nouns, dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:15:37