| 47 | |
| 48 | #compute synthesized CS for the query table |
| 49 | def computeSynthColumnSemantics(input_table, synth_type_kb): |
| 50 | #synthInvertedIndex = {} |
| 51 | all_column_semantics = {} |
| 52 | col_id = 0 |
| 53 | for (columnName, columnData) in input_table.iteritems(): |
| 54 | sem = {} |
| 55 | #creating the lookup table for data lake tables |
| 56 | if genFunc.getColumnType(input_table[columnName].tolist()) == 1: |
| 57 | #print(table_name) |
| 58 | input_table[columnName] = input_table[columnName].map(str) |
| 59 | valueList = genFunc.preprocessListValues(input_table[columnName].unique()) |
| 60 | hit_found = 0 |
| 61 | #find bag of semantics for each column |
| 62 | for value in valueList: |
| 63 | if value in synth_type_kb: |
| 64 | item = synth_type_kb[value] |
| 65 | hit_found += 1 |
| 66 | for temp in item: |
| 67 | semName = temp[0] |
| 68 | semScore = temp[-1] |
| 69 | if semName in sem: |
| 70 | sem[semName] +=semScore |
| 71 | else: |
| 72 | sem[semName] = semScore |
| 73 | for every in sem: |
| 74 | sem[every] = sem[every]/hit_found |
| 75 | |
| 76 | if str(col_id) in all_column_semantics: |
| 77 | print("red flag!!!") |
| 78 | else: |
| 79 | all_column_semantics[str(col_id)] = sem |
| 80 | col_id += 1 |
| 81 | return all_column_semantics |
| 82 | |
| 83 | #compute synthesized relationship semantics for the query table |
| 84 | def computeSynthRelation(inputTable, subjectIndex, synthKB): |