python - 从列表的列表中提取第 n 个元素

标签 python list nltk wordnet pos-tagger

<分区>

我通过使用 nltk .tokenize()、.pos_tag() 和 wordnet .synsets() 获得了以下输出。输出是文档的每个标记和 wordnet 自己的词性标记的潜在匹配列表列表(这里我们有 4 个标记,因此有 4 个匹配列表):

[[Synset('document.n.01'),
  Synset('document.n.02'),
  Synset('document.n.03'),
  Synset('text_file.n.01'),
  Synset('document.v.01'),
  Synset('document.v.02')],
 [Synset('be.v.01'),
  Synset('be.v.02'),
  Synset('be.v.03'),
  Synset('exist.v.01'),
  Synset('be.v.05'),
  Synset('equal.v.01'),
  Synset('constitute.v.01'),
  Synset('be.v.08'),
  Synset('embody.v.02'),
  Synset('be.v.10'),
  Synset('be.v.11'),
  Synset('be.v.12'),
  Synset('cost.v.01')],
 [Synset('angstrom.n.01'),
  Synset('vitamin_a.n.01'),
  Synset('deoxyadenosine_monophosphate.n.01'),
  Synset('adenine.n.01'),
  Synset('ampere.n.02'),
  Synset('a.n.06'),
  Synset('a.n.07')],
 [Synset('trial.n.02'),
  Synset('test.n.02'),
  Synset('examination.n.02'),
  Synset('test.n.04'),
  Synset('test.n.05'),
  Synset('test.n.06'),
  Synset('test.v.01'),
  Synset('screen.v.01'),
  Synset('quiz.v.01'),
  Synset('test.v.04'),
  Synset('test.v.05'),
  Synset('test.v.06'),
  Synset('test.v.07')]]

如果我想编写一个函数(可能是一个循环)来仅提取每个标记的第一个匹配项并将输出生成为一个新列表,例如以下(使用上面的示例):

[Synset('document.n.01'), Synset('be.v.01'), Synset('angstrom.n.01'), Synset('trial.n.02')]

编写这样一个函数最灵活的方法是什么?以便它可以扩展到其他标记化文档(带有 pos 标记)?

谢谢。

最佳答案

使用列表理解。

[token[0] for token in data if token]

关于python - 从列表的列表中提取第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45951825/

相关文章:

python - Pandas hub_table 与 aggfunc 在不同数据上的工作方式有所不同

python - 我可以在 Python 的后台线程上放置断点吗?

Python内联elif可能吗?

python - 如何将变量从 NodeJs 插入到 python 脚本中?

C# list<string> in a list<string>[] .toList()

c++ - C++中带列表的树数据结构

python - CondaHTTPError - 安装 NLTK 时出现 SSL 错误

css - 对齐元素列表

python - 在 Python 3 中已存在 NLTK 时在 Python 2.7 中安装它

python - 如何使用 NLTK 搭配获取 trigrams 的 PMI 分数? Python