Sentiwordnet извлекает положительные и отрицательные оценки
Я хочу проверить, есть ли слово в Sentiwordnet или нет, если да, я хочу извлечь положительные и отрицательные оценки, не учитывая его POS. Некоторые слова существуют в лексиконе более одного раза, в зависимости от их POS. Тем не менее, я хочу извлечь только наибольшее значение положительных или отрицательных оценок, поскольку не имеет значения, что это за POS, и мне нужен только один результат для каждого слова в конце. Если слово не существует в Sentiwordnet, я хотел бы присвоить ему значение 0.
Я просмотрел руководство nltk, но мне нужно назначить выбрать POS слова. И я попытался извлечь вручную из текстового файла из Sentiwordnet, но я не знаю, как извлечь только один окончательный счет за слово.
def get_positive(word):
file = open("SentiWordNet_3.0.0_20130122.txt")
for line in file:
if not line.startswith("#"):
cols = line.split("\t")
words_lists = cols[4].split(" ") #column 4 is the synset, words are separated by " "
words = [w.split("#")[0] for w in words_lists] #split by # because some row has more than one word since it is synset
if word in words:
scores.append("{0}".format(cols[2])) #column 2 is the positive scores
sentence="Alice is pretty funny"
for i in sentence.split():
get_positive(i)
print(scores)
>>>['0.875'#pretty, '0'#pretty, '0.125' #pretty, '0.125' #funny, '0.5' #funny, '0' #funny, '0' #funny, '0' #funny]
используя приведенный выше код, я могу извлечь несколько положительных оценок, однако результаты возвращают список оценок для всего предложения.* Обратите внимание, что только "0,875", "0", "0,125" для "довольно", в то время как другие для "смешных". Я не могу сравнить и выбрать наивысший положительный балл для слова, если я использую приведенный выше код, а также я не могу присвоить 0 словам, не найденным в лексиконе.
Я ищу окончательный вывод, где:
scores= ['0','0','0.875','0.5'] # only four scores because there are only 4 words in the sentence
#first two indexes are '0' because 'Alice' and 'is' are not in the lexicon