所以我有4个不同的字典,d1,d2,d3,d4,我都创建了元组对,以了解该术语在我的文本中的常见程度。这些不同词典中的每一个都由实体类型标记,这就是为什么它们都在不同词典中的原因。然后,我可以对字典进行排序并找到出现次数最多的字典。尽管现在我已经找到了所有这些实体类型中发生率最高的所有,但我希望在所有这些实体类型中找到发生率最高的情况。
我现在不能以相同的方式对它进行排序,因为它是列表,而不是字典,我也不能简单地将前面的字典加在一起。
def t(tokens, pos, ner):
entities={}
in_entity=False
for i, (token,tag) in enumerate (zip(tokens,pos)):
if tag == ner:
if in_entity:
entity+=" "+token
else:
entity=token
in_entity=True
elif in_entity:
entities[entity]=entities.get(entity,0)+1
in_entity = False
return entities
1a = t(tokens,ner,"A")
top_1a = sorted(1a.items(), key=operator.itemgetter(1), reverse= True) [:10]
print (top_1a)
2b = t(tokens,ner,"B")
top_2b = sorted(2b.items(), key=operator.itemgetter(1), reverse= True) [:10]
print (top_2b)
3c = t(tokens,ner,"C")
top_3c = sorted(3c.items(), key=operator.itemgetter(1), reverse= True) [:10]
print (top_3c)
4d = t(tokens,ner,"D")
top_4d = sorted(4d.items(), key=operator.itemgetter(1), reverse= True) [:10]
print (top_4d)
最重要的是,这些命令可以完美地将我的词典排在最有前10位的有序列表中。尽管现在我想要所有现在列表中的前10名。
top_o = top_1a + top_2b + top_3c + top_4d
top_fin = sorted(top_o.items(), key=operator.itemgetter(1), reverse = True) [:10]
print(top_fin)
我已经尝试过,尽管它不再是字典,但是列表.items无效。 top_o成功打印(每个列表分别作为一个较大的列表排序),尽管我现在如何再次对其重新排序?