1

Я понимаю, что scikit поддерживает n-граммы с помощью Vectorizer. Но это только строки. Я хотел бы использовать статистическую модель языка (https://en.wikipedia.org/wiki/Language_model), как этот: http://www.nltk.org/_modules/nltk/model/ngram.html.Использование языковых моделей для взвешивания терминов

Итак, я хочу, чтобы векторный указатель использовал вероятность в виде веса термина, а не tf-idf или просто количество токенов. Есть ли причина, почему это не поддерживается scikit? Я относительно неопытен с языковым моделированием, поэтому я не уверен, что этот подход является хорошей идеей для классификации текста.

ответ

0

Это зависит от того, что вы подразумеваете под term. Если - как обычно - термин - это просто слово, то вероятностная модель будет работать так же, как ... простое взвешивание tf (даже без idf!). Зачем? Безупречная эмпирическая оценка P(word) составляет всего # word/# all_words, а как # all_words является постоянной, тогда вес становится только #word, что очень просто срочная частота. Итак, в этом смысле, scikit делает то, что вам нужно.

Хорошо, возможно, вы хотите рассмотреть контекст? Тогда какой контекст? Вы хотите анализировать самостоятельно P(pre-word1, word) и использовать его как взвешенную сумму для word? Тогда почему не P(word, post-word1)? Почему не P(pre-word2, pre-word1, word, post-word1, post-word2) и т. Д.? Почему бы не включить некоторый весовой коэффициент, основанный на униграммах, когда биграмы недоступны? Ответ довольно прост, как только вы переходите к использованию языковых моделей в качестве схем взвешивания, количество возможных интродукций растет экспоненциально, и нет «типичного» подхода, который стоит реализовать как «стандарт» для библиотеки, которая равна , а не библиотека НЛП.