我正在使用 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 很大时?任何关于优化此或解释列表理解用法的指导都将不胜感激!
此代码创建一个新列,其中包含带有“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
除此之外,尝试阅读有关 python spacy 的内容。它对于 NLP 非常有用,比如 Post 标签过滤器