Ответ 1
Некоторые случайные предложения.
Добавьте шаг предварительной обработки и удалите стоп-слова типа this
, a
, of
, and
и т.д.
How often is there a basketball fight
Сначала вы удаляете некоторые слова остановки, вы получаете
how often basketball fight
Рассчитать tf-idf оценка для каждого слова (лечить каждый твит в качестве документа, чтобы вычислить оценку, вам нужен весь корпус в чтобы получить частоту документа.)
Для предложения, такого как выше, вы вычисляете оценку tf-idf для каждого слова:
tf-idf(how)
tf-idf(often)
tf-idf(basketball)
tf-idf(fight)
Попробуйте добавить дополнительные функции для вашего классификатора
- средний балл tf-idf
- средний показатель tf-idf
- max tf-idf оценка
Кроме того, попробуйте pos-tagger и создайте категорированное предложение для каждого твита.
>>> import nltk >>> text = nltk.word_tokenize(" How often is there a basketball fight") >>> nltk.pos_tag(text) [('How', 'WRB'), ('often', 'RB'), ('is', 'VBZ'), ('there', 'EX'), ('a', 'DT'), ('basketball', 'NN'), ('fight', 'NN')]
Затем у вас есть дополнительные функции, которые можно попробовать, связанные с pos-тегами.
Некоторые другие функции, которые могут быть полезны, см. в документе - qtweet (это документ для идентификации вопроса). h3 >
- содержит ли твит любой URL-адрес
- содержит ли твит любой адрес электронной почты или номер телефона.
- возникает ли какое-либо сильное чувство, такое как
!
. - можно ли вводить слова униграммы в контексты твитов.
- указывает ли твит другое имя пользователя
- будет ли твит ретвитом
- содержит ли твит какой-либо хэштег
#
FYI, автор qtweet предпринял попытку 4 разных классификатора, а именно: Random Forest, SVM, J48 и Logistic regression. Лучшим среди них был случайный лес.
Надеюсь, они помогут.