首页 > 解决方案 > 从数组列表中提取具有特定标签的单词

问题描述

我想从列表中获取只有“NNP”标签的单词,如下所示:

[[('Original', 'JJ'), [('尊敬的', 'RB'), (',', ',')], [('侦探', 'NNP'), ('.', '.'), ('H.', 'NNP'), ('!', '.'), ('Thompson', 'NNP'), ('#', '#'), ('1032' , 'CD')]]

我试过了:

nouns = [word for (word, pos) in pos_sentences if pos == 'NNP']
Traceback (most recent call last):

  File "<ipython-input-187-0de3a4db4bba>", line 1, in <module>
    nouns = [word for (word, pos) in pos_sentences if pos == 'NNP']

  File "<ipython-input-187-0de3a4db4bba>", line 1, in <listcomp>
    nouns = [word for (word, pos) in pos_sentences if pos == 'NNP']

ValueError: too many values to unpack (expected 2)

我只想要带有标签“NNP”的单词,但不知道像这样遍历列表的方法

标签: pythonlistpos-tagger

解决方案


首先展平列表:

import functools
pos_sentences = functools.reduce(lambda x, y: x + y, pos_sentences) # Flattens the list
nouns = [word for (word, pos) in pos_sentences if pos == 'NNP'] # Do as you did before


推荐阅读