我在获取元组中的项目时遇到了一些困难的问题。我有一个元组列表,它看起来像这样(包含一个单词和一个标签):
[('An', 'DET'),
('autumn', 'NOUN'),
('evening', 'NOUN'),
('.', '.'),
('In', 'ADP'),
('an', 'DET'),
('old', 'ADJ'),
('woodshed', 'NOUN'),
('The', 'DET'),
('long', 'ADJ'),
('points', 'NOUN'),
('of', 'ADP'),
('icicles', 'NOUN'),
('Are', 'NOUN'),
('sharpening', 'VERB'),
('the', 'DET'),
('wind', 'NOUN'),
('.', '.')....]
我想做的是遍历这些元组,并确定下一个单词标签基于前一个单词标签的可能性。例如,如果我想确定“ DET”出现在“ NOUN”前面的次数,我想遍历元组并确定,例如:
“名词”前面出现“ DET”的次数
到目前为止,我已经尝试过了:
prob = 0.0
for item in tuples:
if item[1] == "DET" and item + 1[1] == "NOUN"
return prob
该if
说法显然是不正确的。有人知道我可以做什么才能访问下一个项目吗?
将单词成对组合的最简单方法是使用itertools模块zip(seq, seq[1:])
的配方部分中所示的方法。
收集计数最简单的方法是使用collections.Counter()
。
将它们放在一起看起来像这样:
>>> from collections import Counter
>>> Counter((f, s) for (_, f), (_, s) in zip(tuples, tuples[1:]))
Counter({('ADJ', 'NOUN'): 2, ('NOUN', 'ADP'): 2, ('NOUN', 'NOUN'): 2,
('DET', 'NOUN'): 2, ('DET', 'ADJ'): 2, ('ADP', 'NOUN'): 1,
('NOUN', 'VERB'): 1, ('NOUN', 'DET'): 1, ('VERB', 'DET'): 1,
('ADP', 'DET'): 1})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句