def members_letter(request, letter): member_index = defaultdict(lambda: defaultdict(list)) for fs in VerbNetFrameSet.objects.prefetch_related( 'verbnet_class', 'verbnet_class__levin_class', Prefetch('verbtranslation_set', queryset=VerbTranslation.objects.filter(verb__startswith=letter), to_attr='filtered_verbs')): if fs.removed: continue for verbtranslation in VerbTranslation.all_valid(fs.filtered_verbs): member_index[verbtranslation.verb][fs.verbnet_class.levin_class.number].append(fs) for verb in member_index: for levin_group in member_index[verb]: member_index[verb][levin_group] = sorted(member_index[verb][levin_group], key=lambda fs: LooseVersion(fs.name)) member_index[verb] = OrderedDict(sorted(member_index[verb].items(), key=lambda kv: LooseVersion(kv[0]))) member_index = OrderedDict(sorted(member_index.items(), key=lambda kv: locale.strxfrm(kv[0]))) return render(request, 'member_index.html', { 'member_index': member_index, 'active_letter': letter, 'letter_list': [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] })
def test_black(self): VerbTranslation(frameset=self.frameset, verb='translation_child-1', category_id=3, category='dicovalence', validation_status=VerbTranslation.STATUS_VALID).save() VerbTranslation(frameset=self.frameset, verb='translation_child-2', category_id=3, category='dicovalence', validation_status=VerbTranslation.STATUS_INFERRED).save() self.assertEqual(len(VerbTranslation.all_valid(self.frameset.verbtranslation_set.all())), 1)
def test_red(self): VerbTranslation(frameset=self.frameset, verb='translation_child-1', category_id=1, category='ladl', validation_status=VerbTranslation.STATUS_VALID).save() VerbTranslation(frameset=self.frameset, verb='translation_child-2', category_id=1, category='ladl', validation_status=VerbTranslation.STATUS_INFERRED).save() # When validated verbs exist, the inferred one are not consider valid self.assertEqual(len(VerbTranslation.all_valid(self.frameset.verbtranslation_set.all())), 1)
def count_verbs(): unique_validated_verbs, unique_members = set(), set() num_framesets, num_classes, num_validated_verbs, num_members = 0, 0, 0, 0 for vn_class in VerbNetClass.objects.prefetch_related( 'verbnetframeset_set', 'verbnetframeset_set__verbnetmember_set', 'verbnetframeset_set__verbtranslation_set').all(): num_classes += 1 for vn_fs in vn_class.verbnetframeset_set.all(): num_framesets += 1 for t in VerbTranslation.all_valid(vn_fs.verbtranslation_set.all()): unique_validated_verbs.add(t.verb) num_validated_verbs += 1 for m in vn_fs.verbnetmember_set.all(): unique_members.add(m.lemma) num_members += 1 return num_members, unique_members, num_validated_verbs, unique_validated_verbs, num_classes, num_framesets
def export_subclass(db_frameset, classname): global handled_frames, total_frames element_name = 'VNCLASS' if db_frameset.parent is None else 'VNSUBCLASS' class_word_name = classname.split('-')[0] assert re.match('^[-0-9.]+$', '-'.join(classname.split('-')[1:])) element_id = '-'.join([class_word_name, db_frameset.name]) xml_vnclass = ET.Element(element_name, {'ID': element_id}) # LADL/LVF if db_frameset.ladl_string: xml_vnclass.set('ladl', db_frameset.ladl_string) if db_frameset.lvf_string: xml_vnclass.set('lvf', db_frameset.lvf_string) # Members xml_members = ET.SubElement(xml_vnclass, 'MEMBERS') db_translation_list = VerbTranslation.all_valid(db_frameset.verbtranslation_set.all()) member_list = sorted( [db_translation.verb for db_translation in db_translation_list], key=sort_key) for member in member_list: ET.SubElement(xml_members, 'MEMBER', {'name': member}) # Roles xml_role_list = ET.SubElement(xml_vnclass, 'THEMROLES') for db_role in db_frameset.verbnetrole_set.all(): role, *selrestr_split = db_role.name.split(' ') xml_role = ET.SubElement(xml_role_list, 'THEMROLE', {'type': role}) if selrestr_split: xml_role.append(role_selrestr(selrestr_split)) # Frames xml_frames = ET.SubElement(xml_vnclass, 'FRAMES') for db_frame in db_frameset.verbnetframe_set.filter(removed=False): frame = ET.SubElement(xml_frames, 'FRAME') ET.SubElement(frame, 'DESCRIPTION', primary=db_frame.syntax, syntax=db_frame.roles_syntax) # Example examples = ET.SubElement(frame, 'EXAMPLES') example = ET.SubElement(examples, 'EXAMPLE') example.text = db_frame.example # Syntax syntax = ET.SubElement(frame, 'SYNTAX') syntax.text = db_frame.roles_syntax total_frames += 1 output = io.StringIO() print(example.text, file=output) try: parsed_frame = merge_primary_and_syntax(db_frame.syntax, db_frame.roles_syntax, output) syntax = xml_of_syntax(parsed_frame) ET.tostring(syntax) frame.remove(frame.find('SYNTAX')) frame.append(syntax) handled_frames += 1 except Exception as e: print('Oops') print(output.getvalue()) print(e) print() pass # Semantics semantics = ET.SubElement(frame, 'SEMANTICS') semantics.text = db_frame.semantics if db_frameset.children.filter(removed=False): xml_subclass_list = ET.SubElement(xml_vnclass, 'SUBCLASSES') for db_childfs in db_frameset.children.filter(removed=False): xml_subclass = export_subclass(db_childfs, classname=classname) xml_subclass_list.append(xml_subclass) return xml_vnclass