def test_sinreich_window_size_2(): group_one =\ {1: [('I', 'desire.v.01'), ('desire.v.01', 'to'), ('to', 'travel.v.01'), ('travel.v.01', 'the')], 2: [('the', 'canine.n.02')]} group_two =\ {1: [('I', 'desire.v.01'), ('desire.v.01', 'to'), ('to', 'travel.v.01'), ('travel.v.01', 'the')], 2: [('XXX', 'XXXX')]} # here both groups differ at the last window # this should make, # # for window_size 2 # # common arcs: 4 # uncommon arcs: 2 # similarity --> 4/6 = 0.67 # # for window size 1 # should be 1.0 relationship_similarity =\ sinreich_relationship_similarity_measure(group_one, group_two) assert relationship_similarity[ 2] == 4 / 6, "Window size 2 of 2 test doesn't match!" assert relationship_similarity[ 1] == 1.0, "Window size 1 of 2 test doesn't match!"
def test_sinreich_window_size_1(): group_one =\ {1: [('I', 'desire.v.01'), ('desire.v.01', 'to'), ('to', 'travel.v.01'), ('travel.v.01', 'the'), ('the', 'canine.n.02')]} group_two =\ {1: [('I', 'desire.v.01'), ('desire.v.01', 'to'), ('to', 'travel.v.01'), ('travel.v.01', 'the'), ('XXX', 'XXXX')]} # here group two differs on the last entry. # this should make, # # common arcs: 4 # uncommon arcs: 2 # similarity --> 4/6 = 0.67 relationship_similarity =\ sinreich_relationship_similarity_measure(group_one, group_two) assert relationship_similarity[ 1] == 4 / 6, "Window size 1 test doesn't match!"
def get_similarity(file_path, file_name, delete_list=[None], statement_type="rhetorical"): with open(os.path.join(file_path, file_name), "r") as file_object: dialogs = json.load(file_object) utterances = dialogs["utterances"] # to save typing user_dialog =\ " ".join( [text["text"] for text in utterances if text['speaker']=='USER']) assistant_dialog =\ " ".join( [text["text"] for text in utterances if text['speaker']=='ASSISTANT']) user_dialog_concepts =\ AutoMap(text=user_dialog, delete_list=delete_list).get_statements()[statement_type] assistant_dialog_concepts =\ AutoMap(text=assistant_dialog, delete_list=delete_list).get_statements()[statement_type] dialog_similarity =\ sinreich_relationship_similarity_measure( user_dialog_concepts, assistant_dialog_concepts) return dialog_similarity[1] # directionaly concept pair similarity
def test_sinreich_same_groups(): group_one =\ {1: [('I', 'desire.v.01'), ('desire.v.01', 'to'), ('to', 'travel.v.01'), ('travel.v.01', 'the'), ('the', 'canine.n.02')], 2: [('I', 'to'), ('desire.v.01', 'travel.v.01'), ('to', 'the'), ('travel.v.01', 'canine.n.02')], 3: [('I', 'travel.v.01'), ('desire.v.01', 'the'), ('to', 'canine.n.02')], 4: [('I', 'the'), ('desire.v.01', 'canine.n.02')], 5: [('I', 'canine.n.02')]} relationship_similarity =\ sinreich_relationship_similarity_measure(group_one, group_one) assert all((1.0 == score for window_size, score in relationship_similarity.items())),\ ("Same groups failed to be 1.0 at all window sizes for " "Sinreich similarity measure!")
def test_sinreich_window_size_3_with_gap(): group_one =\ {3: [('A', 'B')], 1: [('I', 'desire.v.01'), ('desire.v.01', 'to'), ('to', 'travel.v.01'), ('travel.v.01', 'the')], 2: []} group_two =\ {3: [('A', 'C')], 1: [('I', 'desire.v.01'), ('desire.v.01', 'to'), ('to', 'travel.v.01'), ('travel.v.01', 'the')], 2: []} # here both groups differ at the last window # this should make, # # for window_size 2 # # common arcs: 4 # uncommon arcs: 2 # similarity --> 4/6 = 0.67 # # for window size 1 # should be 0 relationship_similarity =\ sinreich_relationship_similarity_measure(group_one, group_two) assert relationship_similarity[ 3] == 4 / 6, "Window size 3 of 3 test doesn't match!" assert relationship_similarity[ 2] == 1.0, "Window size 2 of 3 test doesn't match!" assert relationship_similarity[ 1] == 1.0, "Window size 1 of 3 test doesn't match!"