我有一个(标记,标记)元组列表,如下所示:
token_tags =
[('book', 'noun'),
('run', 'noun'),
(',', ','),
('book', 'verb'),
('run', 'adj'),
('run', 'verb')]
我试图找出令牌首次被标记为'名词'然后作为一个动词'在列表中的下列外观中。所以,我不应该算“跑步”。因为它被标记为其名词'之间的形容词。和'动词'分配。有关如何做到这一点的任何建议吗?
我已将元组转换为dict,如下所示
d = {}
for x, y in token_tags:
d.setdefault(x, []).append(y)
所以,现在d包含:
{'book': ['noun', 'verb'], 'run': ['noun', 'adj', 'verb'], ',': [',']}
我已经尝试过常规表达来解决这个问题,但没有奏效。
答案 0 :(得分:0)
现在你已经把它放在一本字典中,计算一对出现的时间很简单,想法是在列表中取两个连续元素并检查它们是否是欲望对,例如
>>> data = {'book': ['noun', 'verb'], 'run': ['noun', 'adj', 'verb'], ',': [',']}
>>> result={}
>>> for token, tag_list in data.items():
count = 0
for i in range(1,len(tag_list)):
if tag_list[i-1]=="noun" and tag_list[i]=="verb":
count = count + 1
result[token] = count
>>> result
{',': 0, 'book': 1, 'run': 0}
>>>