-2
私は映画のセンチメント分析を書いていますが、コードには1つのエラーがあります。これは、基数10のint()の無効なリテラルです。コードはムービーレビューとスコアを含む別々のテキストファイルを読み込みます。 ex)4この映画は素晴らしかったです。助けてくれてありがとう!編集:エラーがここに表示されます:ライン38、スコア= INT(lineSplits [0] .strip())基数10のint()の無効なリテラルはどういう意味ですか?
import re
class WordStatistic:
def __init__(self, keyword, averageScore = 0, occurences = 0):
self.keyword = keyword
self.averageScore = averageScore
self.occurences = occurences
def getWord(self) :
return self.keyword
def getAverageScore(self) :
return self.averageScore
def getOccurences(self) :
return self.occurences
def addNewScore(self, newScore) :
oldScoreSum = self.averageScore * self.occurences
self.occurences = self.occurences + 1
self.averageScore = (oldScoreSum + newScore)/(self.occurences)
def printWordStatistic(self) :
print ("Word : ", self.keyword)
print ("Occurences : ", self.occurences)
print ("Average Score : ", self.occurences, "\n\n")
# "teaching" the code
wordDictionary = {}
fileInstance = open("movieReviews.txt",'r')
fileText = fileInstance.read()
# formatting and splitting
reviewSplits = fileText.split("movieReviews")
for review in reviewSplits :
review = review.strip()
if review == "" :
continue
lineSplits = review.split("\n")
score = int(lineSplits[0].strip())
for i in range(1, len(lineSplits)) :
wordSplits = re.split("\t| ", lineSplits[i])
for word in wordSplits :
if word == "" :
continue
# If it is already present, then update the score and count
# Otherwise just add the new entry to the dictionary
if wordDictionary in(word) :
wordStatistic = wordDictionary.get(word)
wordStatistic.addNewScore(score)
else :
wordStatistic = WordStatistic(word, score, 1)
wordDictionary[word] = wordStatistic
# print the stats of the words
def printAllWordStatistic(wordDictionary) :
for wordStatistic in wordDictionary.values() :
wordStatistic.printWordStatistic()
# rating the actual review
def calculateAverageOfReview(review) :
review.replace("\t", " ")
review.replace("\n", " ")
wordSplits = review.split(" ")
averageScore = 0.0
totalCount = 0;
for word in wordSplits :
if wordDictionary in (word) :
averageScore += wordDictionary.get(word).getAverageScore()
totalCount = totalCount + 1
if totalCount != 0 :
return averageScore/totalCount
return -1
# getting user input and append multi lines of case of multi line review
while (True) :
print ("\nEnter a review : ");
multiLines = []
while True:
line = input()
if line:
multiLines.append(line)
else:
break
inputReview = '\n'.join(multiLines)
averageScore = calculateAverageOfReview(inputReview)
if averageScore != -1 :
if averageScore >= 2.50 :
print ("Positive Review");
else :
print ("Negative Review");
else :
print ("Unable to rate the review");
if input("\nDo you want to continue ? (Y/N) : ") != "Y" :
print ("Quitting the session.");
exit()
文字列中の文字のうちの1つが '1234567890。+ - 'にないことを意味します。すなわち、基数10の算術に現れない文字列に文字が現れる。 –
これは、一文の質問のためのコードの大部分です。 –
問題を1行または2行に絞り込むことができます。今、あなたの[MCVE]を提示してください。 –