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

Потому что вопрос нашего исследования звучит так: «Существует ли заметная связь между предшествующими знаниями и шаблоном чтения?» байесовская природа алгоритма хорошо подходит в том смысле, что алгоритм будет пытаться точно классифицировать представление набора слов для каждого эксперимента (также известное как чтение образца текста). Это означает, что алгоритм будет хорошо различать, различаются ли подмножества слов, на которых больше всего фиксируется взгляд, у человека, который знаком со знаниями, представленными в тексте, и у человека, который ничего не знает о тексте. тема представленного образца текста.

Еще одна причина, по которой мы решили использовать наивный байесовский метод, заключается в том, что количество точек данных на начальном этапе будет небольшим, поскольку мы планируем собрать данные от 20 человек, что в сумме соответствует 60 точкам данных. Соответственно, мы планировали использовать три образца абзаца (каждый длиной около 100 слов), взятые из Википедии. Мы выбрали следующие тексты: Французская революция, Статуи Моаи и Чемпионат мира по футболу.

Ниже показана наша собственная реализация наивного байесовского алгоритма:

def NaiveBayes (bagOfexperiment, X_train, y_train):
    bagofBags = createBagofBags(X_train,y_train)
    total_unique_words = getTotalUniqueWords(X_train)
    outputDict = dict.fromkeys(bagOfbags.keys())
    N = len(X_train)
    for category in bagOfbags.keys():
        genreBag = bagOfbags[category]
        total_size_of_class = returnSizeofCategory(category, bagofBags) # count(c)
        N_c = returnNc(category, X_train)
        prior = np.log(float(N_c/N))
        for word in bagOfexperiment:
            try:
                word_count_in_class = genreBag[word] # count(w,c)
            except:
                word_count_in_class = 0
            for i in range(int(bagOfexperiment[word])):
                P_w_c = float(word_count_in_class + 1)/float(total_size_of_class + total_unique_words)
                prior += np.log(P_w_c)
        #print('Value for ',genre,': ',prior)
        outputDict[category] = prior
    max_key = max(outputDict, key=outputDict.get)
    return max_key

Что делает эту реализацию уникальной, так это то, что она использует представление «мешок мешков слов», которое мы придумали. По сути, это вложенный словарь Python, в котором набор слов каждого эксперимента (см. Неделю 3 для справки) хранится в своих соответствующих классах, что представляет собой предварительный уровень знаний в диапазоне от 1 до 5. Эти данные будут собираться у испытуемых. после того, как они закончат чтение образца текста, попросив испытуемых оценить свои знания по теме текста, который они только что прочитали.

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

Редактировать: с этого момента Али Утку Айдын будет публиковать еженедельные записи в блоге. Вот запись в блоге о Неделе 5, написанная им: Неделя 5 — Отслеживание взгляда и предварительные знания | Али Утку | январь 2023 г. | Средний