За последние 24 часа нас посетили 22694 программиста и 1047 роботов. Сейчас ищут 609 программистов ...

Алгоритм подсчёта словарного запаса

Тема в разделе "Решения, алгоритмы", создана пользователем pautinaweb, 15 май 2020.

Метки:
  1. pautinaweb

    pautinaweb Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    29
    Симпатии:
    1
    Задумал сделать тест на знание английских слов, но уже пару дней не могу понять как такое лучше реализовать.

    Что я имею:
    100000 слов разделенных на 100 групп в каждой из которых 100 слов.
    Все слова отсортированы по частоте их употребления и соответственно сложности
    Каждая группа имеет отсчет от 1 - 100 все отсортировано также по частотности

    Что сделано:
    Из каждой группы я беру по одному случайному слову и того пользователю выводится 100 слов в тесте.
    Дальше пользователь отмечает чекбоксы (те слова который он знает) и жмет на кнопку готово и дальше должен происходить расчет.

    Что мне нужно:
    Я хочу как то примерно рассчитать сколько человек знает слов исходя из переданных из формы с чекбоксами данных.

    Код (Text):
    1. Процент правильных ответов: 16% из 100%
    2.  
    3. Array
    4. (
    5.     [0] => 1
    6.     [1] => 2
    7.     [2] => 3
    8.     [3] => 5
    9.     [4] => 6
    10.     [5] => 10
    11.     [6] => 11
    12.     [7] => 12
    13.     [8] => 13
    14.     [9] => 14
    15.     [10] => 15
    16.     [11] => 26
    17.     [12] => 27
    18.     [13] => 28
    19.     [14] => 33
    20.     [15] => 36
    21.     [16] => 38
    22. )
    Процент выбранных слов определить не проблема, но хочется как то рассчитать сколько слов знает человек, так как у меня есть выбранные слова где в значении массива есть еще и сложность слова (номер категории).
    Хотелось бы услышать каков должен быть алгоритм и куда копать дальше.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    1) 100 групп в каждой из которых 100 слов != 100000
    2) показывай структуру таблиц со словами
     
  3. pautinaweb

    pautinaweb Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    29
    Симпатии:
    1
    Да действительно нулем ошибся не 100000, а 10000 слов.
    В структуре чего то необычного нет
    Код (Text):
    1. ID       WORD      CATEGORY
    2. _________________________
    3.  
    4. 1        the            1
    5. 2        of             1
    6. ..............................
    7. 5000     stern          50
    8. ..............................
    9. 10000    croak          100
     
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    3) регистрация пользователей имеется?
     
  5. pautinaweb

    pautinaweb Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    29
    Симпатии:
    1
    Пока нет, но наверное сделаю после.
    Сейчас меня больше всего интересует формула расчета сколько человек примерно знает английских слов.
    залил для примера тест сюда https://poliglot16.ru/vocabulary-en/
     
  6. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @pautinaweb, ты получил идентификаторы ответов, теперь сделай запрос в БД и выбери информацию по этим словам, в частности интересует категория сложности.
    Самый простой вариант это 1 категория - 1 очко, 100 категория - 100 очков. Просто суммируй эти категории (это можно сделать даже в БД)
    например вот так
    PHP:
    1. $where = !empty($answer) ? " WHERE `ID` IN(" . implode(',',$answer . ")" : "";
    2. $query = "SELECT SUM(`CATEGORY`) AS `COUNT` FROM `table_name`" . $where;
    не забудь привести к типу integer элементы массива ответов $answer и удалить пустые если появятся
     
  7. pautinaweb

    pautinaweb Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    29
    Симпатии:
    1
    Да проблема у меня в другом, я не могу придумать по какому алгоритму мне высчитать примерное знание слов пользователем, как это сделано например тут http://testyourvocab.com.
    Запросы к базе мне делать незачем, так как все данные мне и так приходят, после того как пользователь прошел тест и указал слова которые он знает.
    Что делать с балами, что бы подсчитать примерное количество слов как на том сайте?
     
  8. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @pautinaweb, я вот одного не пойму, посему ты хочешь посчитать примерное количество слов, если ты знаешь точное количество слов? Или тебе на основании количества слов из ста, надо высчитать количество слов из 10000?
     
  9. pautinaweb

    pautinaweb Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    29
    Симпатии:
    1
    Да, я хочу создать тест чтобы любой человек мог узнать свой словарный запас языка (сколько английских слов он примерно знает)
    Не носитель английского языка, а просто тот кто учит язык знает примерно 5000 - 9000 слов в среднем, (новичок 1000-3000 слов)
    Понятно что для того чтобы точно узнать надо пройти тест на все 10000 слов, но это очень долго будет, поэтому я хочу чтобы это можно было узнать ответив на тест из 100 слов. Конечно это не совсем точно будет, но хотя бы так.
     
  10. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    типа если я ответил на последние 50 слов котрые имеют больший вес правильно, то я знаю 7500 слов из 10000? это же полный бред
    при таком подходе числа можешь писать от балды, ничего общего с реальными данными у них нет
     
    #10 Valick, 15 май 2020
    Последнее редактирование: 15 май 2020
  11. pautinaweb

    pautinaweb Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    29
    Симпатии:
    1
    Ну если последние ты отметил все, а начальные ты не знаешь, то это точно бред будет, так как если ты знаешь и отметил последние, ты наверняка знаешь и более простые слова. Скорее всего будет с точность наоборот, наиболее часто употребляемые слова люди будут знать, а те которые редко встречаются их знать будет гораздо реже
     
  12. pautinaweb

    pautinaweb Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    29
    Симпатии:
    1
    Решил сделать просто (так как ничего умного не придумал)
    Посчитал максимально возможную сумму в массиве
    Подсчитал пропорцию которая получилась и прибавил медиальное значение к ней.
    После этого получаю примерное количество слов которые знает человек.
    Попробовать пройти тест можно здесь http://poliglot16.ru/test-vocabulary/en/
     
  13. brevis

    brevis Активный пользователь

    С нами с:
    23 июл 2019
    Сообщения:
    69
    Симпатии:
    20
  14. pautinaweb

    pautinaweb Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    29
    Симпатии:
    1
    Да я это читал ранее, но какой то формулы расчета результатов они не дают там к сожалению