Python Forum
Creating new column with a input string - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Creating new column with a input string (/thread-33302.html)



Creating new column with a input string - drunkenneo - Apr-14-2021

Hi,

I am new to python and strugling with a code, i know its been clearly thrown the error still i am failing to get it might anyone can help

from textblob import TextBlob

sentence = input("Enter sentence:")

def sentiment_analysis(inputSentence):
 def getSubjectivity(text):
   return TextBlob(text).sentiment.subjectivity
  
 #Create a function to get the polarity
 def getPolarity(text):
   return TextBlob(text).sentiment.polarity
  
 #Create two new columns ‘Subjectivity’ & ‘Polarity’
 inputSentence ['TextBlob_Subjectivity'] =  inputSentence['inputSentence'].apply(getSubjectivity)
 inputSentence ['TextBlob_Polarity'] = inputSentence['inputSentence'].apply(getPolarity)
 
 def getAnalysis(score):
  if score < 0:
    return 'Negative'
  elif score == 0:
    return 'Neutral'
  else:
    return 'Positive'
 inputSentence ['TextBlob_Analysis'] = inputSentence['TextBlob_Polarity'].apply(getAnalysis)
 return inputSentence

sentiment_analysis(sentence)
giving me following error:

Output:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-21-5220518db4bc> in <module> ----> 1 sentiment_analysis(sentence) <ipython-input-20-0d8612b5763c> in sentiment_analysis(inputSentence) 8 9 #Create two new columns ‘Subjectivity’ & ‘Polarity’ ---> 10 inputSentence ['TextBlob_Subjectivity'] = inputSentence['inputSentence'].apply(getSubjectivity) 11 inputSentence ['TextBlob_Polarity'] = inputSentence['inputSentence'].apply(getPolarity) 12 TypeError: string indices must be integers
I want if user inputs a text, it should be populating with polarity and subjectivity along with text so i can do some analysis in it.

I went online which i can overcome using Vader, still i am eager to know how to accomplish my logic.

Thanks in advance


RE: Creating new column with a input string - supuflounder - Apr-14-2021

The code you are showing and the code that produced the error message are not the same code. For example, the error is shown on line 10, but that line is line 14 in the source you show. So there is no way to know what is going on. Make sure that the code and the output you get correspond.

As I read the code, you are using TextBlob-style operations on a string. This makes no sense. If you wanted to
inputSentence ['TextBlob_Subjectivity'] =  inputSentence['inputSentence'].apply(getSubjectivity)
then inputSentence must be a TextBlob, which it is not. The error message is correct. You are trying to subscript a string using an invalid subscript.


RE: Creating new column with a input string - drunkenneo - Apr-14-2021

(Apr-14-2021, 07:38 AM)supuflounder Wrote: The code you are showing and the code that produced the error message are not the same code. For example, the error is shown on line 10, but that line is line 14 in the source you show. So there is no way to know what is going on. Make sure that the code and the output you get correspond.

As I read the code, you are using TextBlob-style operations on a string. This makes no sense. If you wanted to
inputSentence ['TextBlob_Subjectivity'] =  inputSentence['inputSentence'].apply(getSubjectivity)
then inputSentence must be a TextBlob, which it is not. The error message is correct. You are trying to subscript a string using an invalid subscript.

Yes, this code was written part by part in jupyter notebook, i had rearranged for it to post. for the record, Sentiment analysis definition is a separate code, which is throwing error when calling it at run time "sentiment_analysis(sentence)".