Я использую Наивный Байес для категоризации текста это, как я создал начальные веса для каждого члена в указанной категории:Реализация Наивного Байес текст категоризации, но я продолжаю получать нули
- term1: количество раз, срок 1 существует/количество документов в Категорияа
- term2: количество раз термина 2 существует/количество документов в Категорияа
term3: число раз термин 3 существует/количество документов в Категорияа
term1: количество раз срок 1 существует/количество документов в categoryB
- term2: число раз термин 2 существует/количество документов в categoryB
- term3: число раз термин 3 существует/количество документов в categoryB
с новым тестом-документом настраивают весы на основе того, существует ли этот термин в тестовом документе или нет:
- tERM1: существует в тестовом документе, поэтому я использую один и тот же вес для categoryA_term1, как выше
- term2: не существует в тестовом документе поэтому я использую 1-вес для categoryA_term2
term3: не существует в тестовом документе поэтому я использую 1-вес для categoryA_term3
TERM1: существует в тестовом документе, поэтому я использую один и тот же вес для categoryB_term1, как описано выше
- term2: не существует в тестовом документе поэтому я использую 1-вес для categoryB_term2
- term3: существует в тестовом документе, поэтому я использую такой же вес для категории B_term2, как указано выше
Затем я умножаю веса для каждой категории. Это работает, когда я создаю фиктивные поезда/тестовые документы по одному предложению, но когда я реализую реальные документы для учебных/тестовых документов, я постоянно получаю нуль, когда я их объединяю. Это потому, что вероятности настолько малы, что после умножения стольких небольших чисел python просто сходится к нулю? Я так застрял, и я просто продолжаю сталкиваться с тем же нулевым вопросом :(Я был бы очень признателен за вашу помощь!
Удостоверьтесь, что вы не умножаетесь на любые нулевые условия. Метод, который вы описали, может легко привести к потерям нуля. –
Ну, я проверяю, существует ли термин в test_document, и если этот термин существует, я даю ему вес, который я вычислил ранее из набора тренировок, если вес не находится в тестовом документе, тогда я даю ему 1-вес. Я игнорирую термины, которые я еще не придавал весу, то есть термины, которые не существуют в моей сумке слов. Таким образом, нулевой срок не должен существовать. Я также просто дважды проверял, и у меня нет нулей ни в одном из моих весов. – hope288
Вам также нужно убедиться, что вес не равен 1, потому что '1 - weight' будет равен нулю. Тем не менее, вероятно, это проблема с недостаточным потоком, умножая слишком много крошечных чисел. @DouglasZare предоставил отличный способ решить эту проблему. –