hi explain the following jupyter notebook code to a noob data scientist line by line
Explain the followin
## Sentiment Analysis 

#!pip install textblob

import pandas as pd
import nltk
from textblob import TextBlob
from collections import Counter
import matplotlib.pyplot as plt

#"This movie is not very good, I loved the sound "
blob = TextBlob("This movie great ")
blob.sentiment

blob.sentiment\_assessments.assessments

### Check the link to understand polarity calculations 
https://planspace.org/20150607-textblob\_sentiment/

https://github.com/sloria/TextBlob/blob/eb08c120d364e908646731d60b4e4c6c1712ff63/textblob/en/en-sentiment.xml

# Let us work with Trip advisor data 
text = open("E:\\GIM Computer\\GIM\\GIM\_Courses\\BDA Course\\Year 22-23\\NLP 2022-23\\Sessions\\Session 15\\Tripadvisor\_Reviews.txt", encoding="utf-8").read()
### Overall Sentiment 

blob = TextBlob(text)
blob.sentiment 

#Display all sentences separately 
blob.sentences

len(blob.sentences)

# List of all sentiment words 
blist = blob.sentiment\_assessments.assessments
blist

### Collection of all the positive Sentiment sentences 

psentence = []
for p in range(len(blob.sentences)):
 if blob.sentences[p].sentiment\_assessments.assessments != []:
 pl = blob.sentences[p].sentiment\_assessments.assessments[0][1]
 if pl > 0:
 psentence.append(blob.sentences[p])
 
print(psentence[0:25])
# Number of positive sentences 
len(psentence)

### Collection of all the positive Sentiment words¶

senti\_pos = []
for i in range(len(blist)):
 plt = blist[i][1]
 if plt > 0:
 senti\_pos.append(blist[i][0])

senti\_pos
#len(senti\_pos)

psenti = []
for i in range(len(senti\_pos)):
 plist = senti\_pos[i]
 for j in range(len(plist)):
 psenti.append(plist[j])
 
psenti
#len(psenti)

len(set(psenti))

ngram\_freq = nltk.FreqDist() #WE INITIALIZED A FREQUENCY COUNTER

for ngram in nltk.ngrams(psenti, 1):
 ngram\_freq[ngram] += 1
ngram\_freq.most\_common(297)
ngram\_freq.plot(30)

### Collection of all the negative Sentiment sentences¶

nsentence = []
for p in range(len(blob.sentences)):
 if blob.sentences[p].sentiment\_assessments.assessments != []:
 pl = blob.sentences[p].sentiment\_assessments.assessments[0][1]
 if pl < 0:
 nsentence.append(blob.sentences[p])
 
print(nsentence[0:25])

# Number of negative sentiment sentences 
len(nsentence)

### Collecting all the negative Sentiment words

senti\_neg = []
for i in range(len(blist)):
 plt = blist[i][1]
 if plt < 0:
 senti\_neg.append(blist[i][0])
 

# Number of sentences containing negative sentiments 
len(senti\_neg)

len(senti\_pos)

nsenti = []
for i in range(len(senti\_neg)):
 nlist = senti\_neg[i]
 for j in range(len(nlist)):
 nsenti.append(nlist[j])
 

len(set(nsenti))

ngram\_freq = nltk.FreqDist() #WE INITIALIZED A FREQUENCY COUNTER

for ngram in nltk.ngrams(nsenti, 1):
 ngram\_freq[ngram] += 1
ngram\_freq.most\_common(188)

ngram\_freq.plot(30)

### Probability distribution of 'positive' and 'negative' sentiment words 

### # Positive Table 

pw = Counter(psenti)
T = len(psenti) + len(nsenti)
 
dfp = pd.DataFrame.from\_dict(pw, orient='index').reset\_index()
dfp.columns = ["PosWords", "Frequency"]
dfp["Probability"] = dfp["Frequency"]/T
dfp.sort\_values( by="Frequency", ascending=False, inplace = True)
pdf = dfp[dfp['Frequency'] > 50]
pdf

### Negative table 

nw = Counter(nsenti)
T = len(psenti) + len(nsenti)
 
dfn = pd.DataFrame.from\_dict(nw, orient='index').reset\_index()
dfn.columns = ["NegWords", "Frequency"]
dfn["Probability"] = dfn["Frequency"]/T
dfn.sort\_values( by="Frequency", ascending=False, inplace = True)
ndf = dfn[dfn['Frequency'] > 5]
ndf
안녕하세요, 멍청한 데이터 과학자에게 다음 주피터 노트북 코드를 한 줄씩 설명해주세요.다음 내용을 설명합니다.## 감성 분석 #!pip 설치 텍스트 블롭임포트 팬더를 PD로import nltkfrom textblob import TextBlob컬렉션에서 카운터 임포트matplotlib.pyplot을 plt로 가져옵니다.#"이 영화는 별로지만, 사운드는 좋았어요"blob = TextBlob("이 영화 좋았어요")blob.sentimentblob.sentiment\_assessments.assessments### 극성 계산을 이해하려면 링크를 확인하세요. https://planspace.org/20150607-textblob\_sentiment/https://github.com/sloria/TextBlob/blob/eb08c120d364e908646731d60b4e4c6c1712ff63/textblob/en/en-sentiment.xml# 트립 어드바이저 데이터로 작업해 보겠습니다. text = open("E:\\GIM Computer\\GIM\\GIM\\GIM\_Courses\\BDA Course\\Year 22-23\\NLP 2022-23\\Sessions\\Session 15\\Tripadvisor\_Reviews.txt", encoding="utf-8").read()### 전체 감정 blob = TextBlob(text)blob.sentiment #모든 문장을 개별적으로 표시 blob.sentenceslen(blob.sentences)# 모든 감성어 목록 blist = blob.sentiment\_assessments.assessmentsblist모든 긍정 감성어 문장 모음 ### sentence = []for p in range(len(blob.sentences)): if blob.sentences[p].sentiment\_assessments.assessments != []: pl = blob.sentences[p].sentiment\_assessments.assessments[0][1] pl > 0이면 psentence.append(blob.sentences[p]) print(psentence[0:25])# 긍정적 문장 수 len(psentence)### 모든 긍정 감성어 모음¶senti\_pos = []for i in range(len(blist)): plt = blist[i][1] if plt > 0: senti\_pos.append(blist[i][0])senti\_pos#렌(senti\_pos)senti = []for i in range(len(senti\_pos)): plist = senti\_pos[i] for j in range(len(plist)): psenti.append(plist[j]) psenti#len(psenti)len(set(psenti))ngram\_freq = nltk.FreqDist() #주파수 카운터를 초기화했습니다.for ngram in nltk.ngrams(psenti, 1): ngram\_freq[ngram] += 1ngram\_freq.most\_common(297)ngram\_freq.plot(30)### 모든 부정 감성어 문장 모음¶##nsentence = []for p in range(len(blob.sentences)): if blob.sentences[p].sentiment\_assessments.assessments != []: pl = blob.sentences[p].sentiment\_assessments.assessments[0][1] pl < 0: nsentence.append(blob.sentences[p]) print(nsentence[0:25])# 부정 감성어 문장 수 len(nsentence)### 부정 감성어 모두 수집하기senti\_neg = []for i in range(len(blist)): plt = blist[i][1] if plt < 0: senti\_neg.append(blist[i][0]) # 부정적인 감성을 포함하는 문장 수 len(senti\_neg)len(senti\_pos)nsenti = []for i in range(len(senti\_neg)): nlist = senti\_neg[i] for j in range(len(nlist)): nsenti.append(nlist[j]) len(set(nsenti))ngram\_freq = nltk.FreqDist() #주파수 카운터를 초기화했습니다.for ngram in nltk.ngrams(nsenti, 1): ngram\_freq[ngram] += 1ngram\_freq.most\_common(188)ngram\_freq.plot(30)### '긍정' 및 '부정' 감성어의 확률 분포 ### # 긍정 표 pw = 카운터(psenti)T = len(psenti) + len(nsenti) dfp = pd.DataFrame.from\_dict(pw, orient='index').reset\_index()dfp.columns = ["PosWords", "Frequency"]dfp["확률"] = dfp["빈도"]/Tdfp.sort\_values( by="Frequency", ascending=False, inplace=True)pdf = dfp[dfp['Frequency'] > 50]pdf### 음수 테이블 nw = 카운터(nsenti)T = len(psenti) + len(nsenti) dfn = pd.DataFrame.from\_dict(nw, orient='index').reset\_index()dfn.columns = ["부정어", "빈도"]dfn["확률"] = dfn["빈도"]/Tdfn.sort\_values( by="Frequency", ascending=False, inplace=True)ndf = dfn[dfn['Frequency'] > 5]ndf