Обучалка иностранным словам
От: Roman Pushkin Россия  
Дата: 14.03.06 14:26
Оценка:
Уважаемые коллеги,

Возник вопрос — как лучше реализовать обучалку иностранным словам. Пишу на .NET, все слова буду хранить в локальной БД Access. Думаю использовать следующую структуру.

Объект "Слово".

Объект слово представляет собой соответствие (набор соответствий) определенного слова из одного языка к определенному слову из другого языка. Тут все понятно.

Объект "Категория".

Этот объект может включать в себя любое количество объектов "Слово" или любое количество объектов "Категория". Ну это тоже понятно, для того, чтобы при необходимости можно было составить древовидную структуру из тех слов, которые ты будешь изучать.


Дальше — сложнее.

Необходимо как-то организовать учет слов. В идеале (а так и нужно делать) необходимо каждый раз точно знать на какое слово ты ответил правильно, на какое слово ты ответил не правильно. И какое количество раз. Это позволит составить необходимую статистику, на которой как раз и будет основано изучение слов. Будут чаще показываться те слова, на которые ты хуже всего отвечаешь.

А теперь самое интересное. Где и как хранить эту статистику. Если мы начинаем хранить статистику в объекте "Слово", то это порождает следующие проблемы:

— Объект "Слово" будет содержать в себе информацию о каком-либо пользователе, хотя она там не нужна, т.к. отношения к этому объекту она имеет косвенное.
— Не получится сделать профили пользователей. Т.е. каждый создаваемый объект "Слово" будет содержать уже статистику для какого-либо непонятного пользователя. Если создавать объекты "Слово" со статистикой для каждого пользователя в профайле, это существенно увеличит объем базы.


Внимание, вопрос! Как и где хранить статистику? Я думал создать какой-нибудь супер-пупер-мега объект "KnowledgeBase", который будет содержать в себе эти данные.

Может быть существует более грамотное решение с точки ООП до которого я не догадался? Буду благодарен за любые предложения и ответы.
.
Re: Обучалка иностранным словам
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 14.03.06 14:37
Оценка:
Здравствуйте, Roman Pushkin,

Мне кажется, что Вы не с того конца начали проектирование. Т.е. начали классификацию со слов, когда нужно начинать с обучающего процесса. См., например, статью: http://www.triz-ri.ru/themes/method/creative/creative57.asp. В ней говорится о такой ошибке.

Относительно Вашего вопроса... Начните с того, что опишите схему обучающего процесса. Проиллюстрируйте ее какими-нибудь конкретными примерами. Когда такая схема будет составлена, то и абстракции будет легче выявить. Если у Вас это не получится, выложите описание схемы на форуме. Подумаем вместе.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[2]: Обучалка иностранным словам
От: Roman Pushkin Россия  
Дата: 14.03.06 15:44
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Относительно Вашего вопроса... Начните с того, что опишите схему обучающего процесса.


Спасибо за линк, я понял, что моя архитектура — полное дерьмо Постараюсь сделать лучше. Особенно порадовала ссылка http://www.triz-ri.ru/themes/school/school31.asp

Как раз по теме.
.
Re: Обучалка иностранным словам
От: Roman Pushkin Россия  
Дата: 16.03.06 07:59
Оценка:
Вот, набросал примерную архитектуру.

    Item
     |
 База знаний
     |
   Знания
   |    |
   |  Учитель
   |    |
Ввод  Вывод


Объект «База знаний» содержит в себе слова, разделенные на категории. Эти данные хранятся где-нибудь в Access.

Объект «Знания» представляет собой объект, который будет создаваться для каждого пользователя. Для каждого Item из базы знаний в объекте «Знания» хранятся показатели:
— Сколько раз был задан этот вопрос
— Сколько раз успешно на него ответили
— Сколько раз ответили неверно

Объект «Учитель» тесно взаимодействует с объектом «Знания». Учитель знает, на какие вопросы пользователь ответил хорошо, на какие плохо и решает, какие данные нужно закрепить и подать на объект «Вывод».

Объект «Вывод» отвечает за вывод на экран вопросов.

Объект «Ввод» отвечает за ответы пользователя. Этот объект влияет на «Знания». От того, как ответит пользователь, зависят его «Знания».

Что скажете?
.
Re: Обучалка иностранным словам
От: Roman Pushkin Россия  
Дата: 17.03.06 09:00
Оценка:
Еще необходимо ввести т.н. LearningRules для каждого раздела. Например, ты не сможешь перейти к следующему разделу, если полностью или частично не закончил этот. Поэтому необходимо "Базу знаний" разделить на Категории и Слова. LearningRules как раз будут применяться к определенной категории.
.
Re[2]: Обучалка иностранным словам
От: Roman Pushkin Россия  
Дата: 17.03.06 09:36
Оценка:
Т.к. категория — это древовидная структура, то полезно будет ее запихнуть в XML файл. Также необходимо сделать так, чтобы обучалка иностранным словам поддерживала любое количество языков для обучения. Вот примерная структура XML файла с описанием:

<categories>
 <category name="english">
  <category name="Раздел 1" learningRule="rule1" wordProvider="provider1" />
 </category>
</categories>

<learningRules>
 <learningRule name="rule1" requiredCompleteRate="90%" showBeforeAsk="true" />
 <!-- тут requiredCompleteRate - необходимый процент который требуется чтобы перейти к следующей категории
          showBeforeAsk - проводить ли процесс обучения перед тем как спрашивать -->
</learningRules>

<wordProviders>
 <wordProvider name="provider1" type="xml"> <!-- тут можно будет выбирать тип, xml, access или sql server -->
  <word .... />
  <word .... />
 </wordProvider>
</wordProviders>


Ну вот, нарисовалось что-то вроде этого. Что скажете?
.
Re[2]: Обучалка иностранным словам
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 20.03.06 19:23
Оценка:
Здравствуйте, Roman Pushkin, Вы писали:

RP>Что скажете?


Архитектуру трудно оценить, потому что не понятно, для чего (для решения каких задач, какого уровня сложности) будет предназначена разрабатываемая программа. Мне представляется, что сперва нужно определиться с назначением и уровнем сложности системы, а затем уж думать об архитектуре.

Если Вы не возражаете, то двинемся в этом направлении…

Как правило, процесс обучения какому-либо предмету состоит из одного или нескольких курсов. Например, для английского языка:

1. Beginner.
2. Pre-Intermediate.
3. Intermediate.
4. Upper Intermediate.
5. И т.д. Наверняка что-нибудь пропустил.

Курс имеет определенный уровень сложности и рассчитан на определенный уровень начальных (входных) знаний ученика.

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

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

Урок состоит из частей. Например, в моем учебнике это:

1. Presentation (объяснение материала-1).
2. Practice (упражнение на материал-1).
3. Presentation (объяснение материала-2).
4. Practice (упражнение на материал-2).
5. Skills development (выработка умений, навыков).

Последний раздел тоже состоит из подразделов (разных видов заданий):

1. Listening (прослушивание записи).
2. Vocabulary (заучивание новых слов).
3. Reading (чтение статьи).
4. Speaking (беседа с другим учеником или учителем).
5. Writing (письменное упражнение).

Формы пояснения материала, как и упражнения, могут быть разными.

Где-то внизу всей этой иерархии находятся слова.

Соответственно, прежде чем приступать к разработке архитектуры, Вы должны:

1. Решить, будет ли у Вас один курс для каждого языка, или же несколько.
2. Расписать архитектуру курса и архитектуру уроков.
3. Предложить пользователю интерфейс (API, например, в виде XML или языка предметной области) для создания курса.
4. Отобрать способы презентации материала и различные виды упражнений.
5. Разработать систему для оценки знаний ученика или, по крайней мере, разработать API для описания такой системы.
6. Желательно, используя результаты по п.п. 1 – 5, создать демонстрационный курс для тестирования и презентации программы.

После того, как у Вас будут результаты по п.п. 1 – 6, можно будет приступать к архитектуре.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.