如何从包含 Python 元组列表的 DataFrame 列中过滤和提取特定的 POS 标签?

问题描述 投票:0回答:1

我正在使用 Python 中的 DataFrame,其中有一列名为

'POS_TAGS'
。此列中的每个条目都是一个元组列表,其中每个元组包含一个单词及其词性 (POS) 标记。以下是
'POS_TAGS'
列中的数据结构示例:

[
    [('word1', 'NN'), ('word2', 'VB'), ('word3', 'NN')],
    [('word4', 'JJ'), ('word5', 'NN')],
    ...
]

我想从此列中提取具有特定 POS 标签的所有单词(例如,

'NN'
表示名词)并将它们存储在列表中。我怎样才能有效地做到这一点?

我尝试过使用列表理解,但我不确定我是否正确或有效地处理了这个问题。

代码尝试

# Example code attempt
target_tag = 'NN'
all_words_with_target_tag = [
    word for row in df['POS_TAGS'] for word, tag in row if tag == target_tag
]

这是正确的做法吗?是否有更好的方法来处理此类任务,特别是当 DataFrame 很大时?任何关于优化此或解释列表理解用法的指导都将不胜感激!

python dataframe list tuples
1个回答
0
投票

此代码创建一个新列,其中包含带有“NN”帖子标签的单词:

import pandas as pd
post = [[('word1', 'NN'), ('word2', 'VB'), ('word3', 'NN')],[('word4', 'JJ'), ('word5', 'NN')]]
df = pd.DataFrame({'TEXT':['text'],'POST':[post]})
df['WORDS_NN'] = df['POST'].map(lambda post_data : [p[0] for line in post_data for p in line if p[1]=='NN'])
df

enter image description here

除此之外,尝试阅读有关 python spacy 的内容。它对于 NLP 非常有用,比如 Post 标签过滤器

© www.soinside.com 2019 - 2024. All rights reserved.