Реализация PoS с наивным байесовским анализом настроений - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь применить Sentiment Analysis (прогнозирование отрицательных и положительных твитов) на относительно большом наборе данных (10000 строк). До сих пор я достиг только точности ~ 73%, используя Наивный Байес и мой метод, называемый "финальным", показанным ниже, для извлечения функций. Я хочу добавить PoS, чтобы помочь с классификацией, но совершенно не уверен, как это реализовать. Я попытался написать простую функцию с именем «pos» (которую я разместил ниже) и попытался использовать теги на моем очищенном наборе данных в качестве функций, но получил точность только около 52%. Может кто-нибудь привести меня в правильном направлении для реализации PoS для моей модели? Спасибо.

def pos(word):
 return [t for w, t in nltk.pos_tag(word)]


def final(text):

   """
   I have code here to remove URLs,hashtags, 
   stopwords,usernames,numerals, and punctuation.
   """

   #lemmatization
   finished = []
   for x in clean:
      finished.append(lem.lemmatize(x))

   return finished

1 Ответ

0 голосов
/ 06 июля 2018

Вы должны сначала разбить твиты на предложения, а затем токенизировать. NLTK предоставляет метод для этого.

   from nltk.tokenize import sent_tokenize
   sents = sent_tokenize(tweet)

После этого укажите этот список предложений для вашего nltk.pos_tag метода. Это должно дать точные POS-теги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...