标记引擎。存储并绘制标记云。
cs.tags的Python项目详细描述
概述
这个包提供了一个引擎,允许用户为项目分配标记。
云引擎
如果要绘制标记云或检索与标记相关的其他信息,请使用此包。
>>> from cs.tags.clouds import CloudsEngine
云引擎存储每个用户分配给项的标记。标签、用户和项目信息按照模型存储,以加快检索速度。这意味着数据结构将尽可能快地包含预先计算好的标记云,这些标记云是预先准备好要绘制的。
>>> clouds_engine = CloudsEngine() >>> clouds_engine <CloudsEngine tags=0>
在请求中,云引擎不包含任何内容:
>>> clouds_engine.getCloud() ([], 0, 0)
每个用户都可以向引擎添加分配给给定项的标记集。对于此建议,update()方法维护项和标记之间以用户为中心的关系:
>>> clouds_engine.update(item=1, user='Nando Quintana', tags=['simple','green','energy']) >>> clouds_engine.update(item=2, user='Nando Quintana', tags=['complex','energy']) >>> clouds_engine.update(item=3, user='Erral', tags=['mineral','sources']) >>> clouds_engine.update(item=3, user='Nando Quintana', tags=['nuclear','power'])
现在,引擎可以根据当前的更新返回标记云信息:
>>> clouds_engine.getCloud() ([('energy', 2), ('complex', 1), ('green', 1), ('mineral', 1), ('nuclear', 1), ('power', 1), ('simple', 1), ('sources', 1)], 9, 8)
getCloud()方法返回这种特殊的数据结构。显示的信息由一个标记列表和两个数字组成。标记列表实际上是一个元组列表,它包含字符串标记和云中的权重。第二个数字表示标记项的数量,第三个数字表示云中标记的数量。
< P>可选地,您可以在标签云中包含最大的标记数量:>>> clouds_engine.getCloud(n=5) ([('energy', 2), ('complex', 1), ('green', 1), ('mineral', 1), ('nuclear', 1)], 9, 5)
如果要绘制由单个用户发布的标记云,可以告诉getCloud()方法您要用作筛选器的用户:
>>> clouds_engine.getCloud(users='Nando Quintana') ([('energy', 2), ('complex', 1), ('green', 1), ('nuclear', 1), ('power', 1), ('simple', 1)], 7, 6)
您还可以按项目筛选云:
>>> clouds_engine.getCloud(items=3, users='Nando Quintana', n=5) ([('nuclear', 1), ('power', 1)], 2, 2)
或者向引擎询问与单个项目相关的标记云:
>>> clouds_engine.getCloud(items=3, n=5) ([('mineral', 1), ('nuclear', 1), ('power', 1), ('sources', 1)], 4, 4)
内隐知识
您可以从引擎中提取更多信息。例如,可以使用插入到公共项中的标记绘制云线。这样做,您可以从用户标记习惯中构建隐含的知识。
>>> clouds_engine.update(item=4, user='Nando Quintana', tags=['nuclear','power']) >>> clouds_engine.update(item=5, user='Nando Quintana', tags=['nuclear','flower','power']) >>> clouds_engine.update(item=5, user='Erral', tags=['black','power'])>>> clouds_engine.getRelatedTags(tag='power') ([('nuclear', 3)], 3, 1)
从标记行为中可以建立的其他信息是项目之间的关系:
>>> clouds_engine.getRelatedItems(item=3) ([(4, 2), (5, 2)], 4, 2)
因此,在本例中,item3与item4和其他的2在同一个item5中有2标记。
与标记和项的情况一样,您还可以根据标记历史记录发现用户之间的隐式关系:
>>> clouds_engine.getRelatedUsers(user='Erral') ([('Nando Quintana', 1)], 1, 1)
结果表明,Erral和Nando Quintana有一个共同的标记。