Построение удобочитаемых предложений на основе опроса - PullRequest
6 голосов
/ 27 марта 2010

Ниже приводится опрос участников курса для оценки преподавателя в конце курса.

Communication Skills
1. The instructor communicated course material clearly and accurately.
Yes No
2. The instructor explained course objectives and learning outcomes.
Yes No
3. In the event of not understanding course materials the instructor was available outside of class.
Yes No
4. Was instructor feedback and grading process clear and helpful?
Yes No
5. Do you feel that your oral and written skills have improved while in this course?
Yes No

Мы хотели бы обобщить выбор каждого участника на основе выбранных им вариантов.

Если предоставленные ответы были [Нет, Нет, Да, Да, Да]. Затем мы подытожим это следующим образом: «Преподаватель не смог четко сформулировать цели курса и результаты обучения, но был доступен и, как правило, полезен вне класса. Обратная связь с преподавателем и процесс оценки были ясными и полезными, и я чувствую, что мои устные и письменные навыки улучшились благодаря этому курсу.

В зависимости от выбора, выбранного участником, резюме будет совершенно другим. Это приводит ко многим ответам, основанным на выбранных вариантах и ​​количестве таких вопросов в опросе. Вопросы обычно предоставляются обучающей организацией. Как вы придумаете общее решение, чтобы оно могло быть эффективно переведено в удобочитаемую форму? Я ищу инструменты или библиотеки (на основе Java), предложения, которые помогут мне создать такой читабельный вывод. Я бы хотел как можно больше скрыть сложность от конечных пользователей.

Ответы [ 7 ]

6 голосов
/ 29 марта 2010

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

"Преподаватель изложил материал курса четко и точно. Кроме того, преподаватель объяснил цели курса и результаты обучения. Однако, в случае непонимания материалов курса преподаватель был недоступен за пределами класса."

и так далее. Все, что вам нужно сделать, это проверить, совпадает ли ответ на вопрос n с вопросом n-1, чтобы решить, какое соединительное слово использовать. НТН

1 голос
/ 06 апреля 2010

Я бы порекомендовал нечто похожее на то, что предложил Ювал, с парой небольших модификаций, чтобы сделать язык более естественным.

Подготовка

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

Тема: Инструктор

Positive: «четко и точно рассказали материалы курса», «объяснили цели курса и результаты обучения», «были доступны вне класса для объяснения материалов курса», «предоставили обратную связь и оценки, которые были понятными и полезными»

Отрицательный: «не передавал материал четко или точно», «не объяснял целей курса или результатов обучения», «не был доступен за пределами класса для объяснения материалов курса», «не давал обратной связи и оценки, которые были ясными или полезными»

Тема: я / я

Positive: «чувствую, что мои устные и письменные навыки улучшились во время этого курса»

Отрицательный: «Не чувствую, что мои устные и письменные навыки улучшились во время этого курса»

Объединение заявлений

Согласные заявления

Когда утверждения 1-4 все согласованы (либо все положительные, либо все отрицательные), вам нужно только объединить их очень простым способом: "Инструктор {Statement1}, {Statement2}, {Statement3} и {Statement4 }. "

Если утверждение 5 согласуется с утверждениями 1-4, завершите его словами: «В целом, я {утверждение5}»

Если утверждение 5 не соответствует, завершите его словами: «Тем не менее, я все еще {Statement5}»

Не согласные заявления

Сложные вещи случаются, когда некоторые характеристики положительны, а некоторые отрицательны. Конечный результат должен выглядеть следующим образом: «Инструктор {оператор1} и {оператор2}, но {оператор3} и {оператор4}. В целом, я {оператор5}».

По сути, у нас есть 2 группы утверждений; в моем примере операторы 1 и 2 находятся в первой группе, операторы 3 и 4 - во второй. Чтобы сделать эту работу, группы должны содержать согласованные заявления; каждая группа должна быть положительной или отрицательной. Измените порядок заявлений, чтобы согласовать каждую группу. Затем мы скомбинируем операторы группы следующим образом: «Инструктор {group_statement}, но {other_group_statement}»

Если в группе только один оператор, используйте отдельный оператор в качестве оператора группы. Если в группе несколько операторов, связывайте все операторы, кроме последнего, запятой. Свяжите окончательное утверждение в группе с "и"

Использование английского «но» имеет тенденцию придавать большее значение тому, что следует после него, чем до него: если мы заканчиваем с положительной группой, все утверждение звучит положительно, а если мы заканчиваем с отрицательной группой, то все утверждение звучит гораздо более негативно. Вам решать, как вы хотите подчеркнуть утверждения, но я бы порекомендовал упорядочить их так, чтобы они соответствовали утверждению 5, и закончил словами «В целом, я {заявление5}». Если вы решите заказать его таким образом, который не согласуется с утверждением 5, вам следует закончить словами «Тем не менее, я все еще {Statement5}».

Это должно помочь вам начать работу, и при необходимости вы можете внести несколько изменений.

1 голос
/ 30 марта 2010

Рассматривали ли вы какие-либо проекты по обработке естественного языка, такие как http://opennlp.sourceforge.net/?

1 голос
/ 29 марта 2010

К сожалению, я не думаю, что есть общее решение этой проблемы. Мало того, что трудно / невозможно выяснить, какие вопросы связаны и как их сгруппировать и добавить такие слова, как «но», «и» и «однако», где это уместно, но и формулировку, которую вы пытаетесь создать, нет. явное преобразование. Возьмите вопрос 4: Если ответчик ответил «нет», полученное в результате утверждение было бы «либо обратная связь с инструктором была неясной, либо бесполезной, либо процесс оценки инструкторов был неясным или бесполезным», предполагая, что исходный вопрос был полностью проанализирован. Я сомневаюсь, что это то, что вы ищете. Я также хотел бы отметить, что ваше резюме, при условии, что оно содержит какую-то форму каждого ответа, на самом деле рецензент не будет читать быстрее. Вы можете недооценивать как естественную неоднозначность английского языка, так и специфику желаемого результата.

0 голосов
/ 05 апреля 2010

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

0 голосов
/ 05 апреля 2010

Попробуйте взглянуть на реализацию функции Matlab "почему" в качестве примера.

0 голосов
/ 29 марта 2010

Самое простое решение этой проблемы - большой блок if else, однако это может быть не то, что вы ищете.

Если вам нужно несколько уникальных ответов без n! если еще заявления, попробуйте заставить каждый ответ генерировать одну или две отправки. Если у вас есть положительный и отрицательный ответ на предыдущий ответ и, если он контрастирует, добавьте суффикс «Однако» или что-то в этом духе.

Надеюсь, это было полезно.

...