Как вычислить вероятность совместного появления из матрицы совместного появления? - PullRequest
0 голосов
/ 03 апреля 2020

Я построил матрицу совместного вхождения с scikit CountVectorizer и некоторой линейной алгеброй из предложений:

docs = ['I loved the movie',
        'I hated the movie',
        'a great movie. good acting',]

, а сама матрица совместного вхождения:

        act good great hate love movi
  act    [0   1    1    0     0    1]
  good   [1   0    1    0     0    1]
  great  [1   1    0    0     0    1]
  hate   [0   0    0    0     0    1]
  love   [0   0    0    0     0    1]
  movi   [1   1    1    1     1    0]

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

Я реализую алгоритм из научной статьи c, которая запрашивает:

... - это вероятность того, что слово Wj сосуществует в классе Ci ...

Таким образом, вопрос заключается в следующем: из заданной матрицы совпадений Как рассчитать вероятность того, что слово встречается в некотором классе Ci (скажем, матрица выше относится к классу Ci)?

Моя точка зрения - если я вычислю сумму каждого строка, представляющая число совпадений для каждого отдельного слова Wj:

 [3],
 [3],
 [3],
 [1],
 [1],
 [5]

. И если я суммирую эту новую матрицу, я получу число 16. Теперь, если я разделю предыдущую 1D матрицу на 16, я получить новую 1D матрицу:

 [0.1875]
 [0.1875]
 [0.1875]
 [0.0625]
 [0.0625]
 [0.3125]

Это правильная линия мысли? Представляет ли эта последняя матрица вероятность одновременного появления? Для большего контекста я реализую версию Наивного байесовского классификатора спама. Научная статья c здесь здесь . Соответствующая информация на страницах 3 и 4. Большое спасибо.

...