MCPcopy Create free account
hub / github.com/BIT-DataLab/LakeBench / match_entity_from_yago

Function match_entity_from_yago

union/TUS/Usem_run.py:26–89  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

24
25
26def match_entity_from_yago():
27
28 #创建虚拟表,用以执行全文搜索
29 conn, cursor = get_yagoTypes_from_tsv()
30
31 #先一把所有表的所有行都映射到yago中的类,使用match,全文搜索
32 floder_path = 'benchmark'
33 save_floder_path = 'benchmarkSem'
34 for file_name in os.listdir(floder_path):
35 if file_name not in os.listdir('benchmarkSem'):
36 file_path = os.path.join(floder_path, file_name)
37 df = pd.read_csv(file_path)
38 saved_data = {}
39 #取出每一列,将列的每个值都先映射到实体,选出最多三个实体,把这个实体映射到类中
40 for column in df.columns:
41 values = df[column].to_list()
42 #把所有的值都处理成小写,并用空格来代替标点符号
43 for i in range(len(values)):
44 values[i] = process_string(values[i])
45 values = [s for s in values if s!=" " and s!=""]
46 counter = Counter(values)
47 #统计值出现的次数,形成一个字典
48 values_set= set(values)
49 classes_of_thisColumn = []
50 for value in values_set:
51 search_keywords = value
52 query = f'''select entity
53 from yagoEntitys
54 where entity match '{search_keywords}'
55 order by bm25(yagoEntitys) desc
56 limit 3;'''
57 try:
58 cursor.execute(query)
59 results = cursor.fetchall()
60 #找到了这个value匹配的实体名称,还要依次把相应的taxonomy_class类找出来
61 for result in results:
62 query = f'''SELECT distinct taxonomy_class
63 FROM yagoTypejoinclasses
64 WHERE entity = '{result[0]}';
65 '''
66 cursor.execute(query)
67 temp = cursor.fetchall()
68 for i in range(len(temp)):
69 temp[i] = temp[i][0]
70
71 #根据列中value出现的次数,添加相应个数的class值
72 classes_of_thisColumn += temp * counter[value]#列表*一个数,是把列表扩大几倍
73 #查询返回的是一个元组,需要把元组中的[0]拿出来,然后放进classes_of_thisColumn, 并且需要distinct
74 except sqlite3.Error:
75 continue
76
77 #把这个列的属于的所有类都存到字典中
78 saved_data[column] = classes_of_thisColumn
79
80 #创建DataFrame对象,把saved_data字典加载到这里面,最后使用to_csv将这个表对应的sem表保存
81 saved_data = fill_zero(saved_data)
82 saved_df = pd.DataFrame(saved_data)
83 saved_file_path = os.path.join(save_floder_path, file_name)

Callers 1

Usem_run.pyFile · 0.70

Calls 4

get_yagoTypes_from_tsvFunction · 0.90
process_stringFunction · 0.90
closeMethod · 0.80
fill_zeroFunction · 0.70

Tested by

no test coverage detected