基于Pandas实现从词性标注(POS tagging)还原为句子
用Pandas将词性标注数据集还原为完整句子
给定包含pos_token列的数据集,其中每个单元格存储着(词汇,词性)的元组列表,我们需要提取词汇部分并拼接成完整句子,以下是具体实现方案:
核心逻辑
每个元组的第一个元素是目标词汇,只需遍历pos_token中的所有元组,提取第一个值后用空格连接即可。
情况1:pos_token为Python列表/元组对象
如果数据集加载后pos_token列已经是原生的Python列表或元组结构,直接使用apply处理:
import pandas as pd # 构造示例数据集 sample_data = { 'pos_token': [[('No', 'DT'), ('you', 'PRP'), ('lying', 'VBG')]] } df = pd.DataFrame(sample_data) # 生成sentence列 df['sentence'] = df['pos_token'].apply(lambda x: ' '.join(token[0] for token in x))
情况2:pos_token为字符串格式
如果pos_token是以字符串形式存储的(比如从CSV/Excel加载后显示为"[(No, DT), (you, PRP), (lying, VBG)]"),需要先用ast.literal_eval将字符串转换为Python对象,再处理:
import pandas as pd import ast # 构造字符串格式的示例数据集 sample_data = { 'pos_token': ["[(No, 'DT'), (you, 'PRP'), (lying, 'VBG')]"] } df = pd.DataFrame(sample_data) # 转换字符串为列表后生成句子 df['sentence'] = df['pos_token'].apply( lambda x: ' '.join(token[0] for token in ast.literal_eval(x)) )
执行上述代码后,sentence列将得到示例中的结果:No you lying。
内容的提问来源于stack exchange,提问作者kunturs
相关产品推荐
相关产品推荐

