Пометить предложение на основе помеченных предложений - PullRequest
0 голосов
/ 30 октября 2018

Я создаю систему, способную помечать предложение на основе предыдущих помеченных предложений. У меня есть корпус со структурой Известные вопросы .

Известные вопросы:

city_name Какой самый популярный город в Испании?

amount_of_people Сколько человек в центре города?

Новые задания:

Какой самый популярный город в Италии?

Сколько человек на стадионе?

Какой город ближе всего к Нью-Йорку?

Пример тегов:

city_name

amount_of_people

желаемый результат:

city_name Какой самый популярный город в Италии?

amount_of_people Сколько человек на стадионе?

city_name Какой ближайший город к Нью-Йорку?

У меня есть 30 тегов и 350 предложений. Есть ли какая-либо среда Python или известный алгоритм для анализа корпусов и пометки нового предложения на корпусах?

1 Ответ

0 голосов
/ 30 октября 2018

Как правило, это должно рассматриваться как задача машинного обучения классификации. Вы можете использовать любое количество подходов от Наивного Байеса до Многослойного Перцептрона до DNN на основе softmax. Я настоятельно рекомендую использовать один из вышеперечисленных для таких задач, но, учитывая, что у вас есть только 350 вопросов, я понятия не имею, могут ли классификаторы учиться на таком небольшом количестве данных без экспериментов.

Однако, если вы хотите приблизиться к этому, используя методы, основанные на правилах, я бы предложил использовать парсинг зависимостей . Предполагается, что все ваши данные состоят из грамматически правильно сформулированных вопросов и что между тегами и вопросами существует семантическая связь.

Давайте используем синтаксический анализатор Стэнфордской зависимости здесь для вопроса: What is the nearest city to New York?.

UNIVERSAL DEPENDENCIES:

root(ROOT-0, What-1)
cop(What-1, is-2)
det(city-5, the-3)
amod(city-5, nearest-4)
nsubj(What-1, city-5)
case(York-8, to-6)
compound(York-8, New-7)
nmod(city-5, York-8)

Как видите, nsubj (номинальный субъект) говорит нам о связи между «Что» и «городом» (более подробно о зависимостях здесь ). Таким образом, каждый раз, когда у вас есть «город» как nsubj слова «что» (скажем), вы можете выделить тег city_name для вопроса.

Аналогичным образом, если «люди» находятся в nsubj вопроса (и «многие» в amod), возможно, вы могли бы выделить тег amount_of_people для этого вопроса.

Вы должны были бы соблюдать и находить лучшие правила на основе зависимостей для каждого из 30 тегов аналогичным образом, и это определенно должно помочь.

...