Я работаю научным сотрудником в Центре исследований и разработок Tata, Индия. Я изучаю доступные интерфейсы естественного языка для базы данных. Во время изучения MS English Query я обнаружил, что определенный тип отношений не дает соответствующего ответа.
Наша схема выглядит следующим образом:
Schema:
Customer ( customer_id , customer_name, customer_address)
Transaction ( transaction_id , customer_id_1, customer_id_2, amount)
CUSTOMER
cuctomer_id customer_name customer_address
1 John abc
2 Rohit pqr
3 Mark xyz
TRANSACTION
transaction_id customer_id_1 customer_id_2 amount
1 1 2 200
2 1 3 300
3 2 1 300
Здесь customer_id_1 и customer_id_2 ссылаются на Customer.customer_id.
Более двух атрибутов таблицы ссылаются на один и тот же атрибут первичного ключа в другой таблице.
Запрос: «Дайте мне все сделки между Джоном и Рохитом»
Предприятия, которые мы сделали, были Клиент и транзакция; для данного запроса на английском языке были установлены следующие отношения между клиентами и транзакциями-
Relationship Type : Noun Verb
Relationship: Transaction are
Preposition Clause: between Customer(customer_id_1)
Preposition Clause: and Customer_1(customer_id_2)
Здесь мы определили две разные роли клиентов (через 2 соединения path-customer_id_1 и customer_id_2)
Выходные данные, которые мы ожидаем, были транзакциями с trasaction_id как 1 и 3, но он соединялся только с customer_id_1 и давал результат как
Expected Output-
transaction_id customer_id_1 customer_id_2 amount
1 1 2 200
3 2 1 300
Actual Output-
transaction_id customer_id_1 customer_id_2 amount
1 1 2 200
2 1 3 300
Это происходит из-за неоднозначности между default и and, и мы определили в предложении предлога ..
Мы также пытались создать еще одну связь
1)
Relationship Type : Noun Verb
Relationship: Transaction are
Preposition Clause: by Customer(customer_id_1)
Preposition Clause: to Customer_1(customer_id_2)
2)
Relationship Type : Noun Verb
Relationship: Transaction are
Preposition Clause: by Customer(customer_id_2)
Preposition Clause: to Customer_1(customer_id_1)
Результат, который мы ожидаем, это транзакции с trasaction_id равными 1 и 3, здесь потребовалось объединение для customer_id_1 иcustomer_id_2,
Но использовались только отношения 1, а не 1 и 2, поэтому вывод был следующим:
Expected Output-
transaction_id customer_id_1 customer_id_2 amount
1 1 2 200
3 2 1 300
Actual Output-
transaction_id customer_id_1 customer_id_2 amount
1 1 2 200
Существует ли обходной путь для создания отношений, которые позволили бы MSEQ понять вышеупомянутый запрос?
Надеюсь, кто-нибудь поможет нам, предложив подходящее решение.