首页 > 解决方案 > NLTK - 从布朗语料库中获取 PoS 标签列表

问题描述

在 NLTK Brown Corpus 中,每个单词都与其对应的 PoS 标签一起呈现,如下所示('AT, 'NP-TL'...标签在哪里):

nltk.corpus.brown.tagged.words()

[('The', 'AT'), ('Fulton', 'NP-TL'), ...]

我想获得所有这些标签的列表(每行一个标签),而不是它们伴随的单词。例如:

AT
NP-TL
...

有谁知道我需要使用的功能才能只访问标签而不是单词?

标签: python

解决方案


您只需要一个映射来访问元组的每个第二个元素,这与 nltk 无关

你可以用 for 循环来做到这一点

l = [('The', 'AT'), ('Fulton', 'NP-TL')]
expected_list = [tuple[1] for tuple in l]

此理解列表存储列表中存在的每个元组的第二个元素(即标记)

您也可以使用地图和 lambda 函数来完成。映射正在将 lambda 函数应用于列表的每个元素(这里你得到每个元组的第二个元素)

在python3中,一个map是返回一个map对象,如果想作为list使用,需要转换成list

l = [('The', 'AT'), ('Fulton', 'NP-TL')]
expected_list = list(map(lambda x: x[1], l))

获取列表后,您可以使用 print(*) 方法轻松地将所有答案打印在新行上(仅限 Python3)

print(*expected_list, sep='\n')

推荐阅读