练习 - 使用神经网络分析文本的情绪
当你将自己的文本输入到模型中并查看其表现时,真正的测试就来了,也就是说,模型量化该文本中表达的情绪的擅长程度。 在本单元中,你将编写一个 Python 函数,该函数接受文本字符串作为输入,将其传递给模型,并返回情绪得分。 然后,你将使用该函数来分析各种文本字符串中表达的情绪。
将以下代码添加到笔记本末尾的单元格中并运行该单元格:
import string import numpy as np def analyze(text): # Prepare the input by removing punctuation characters, converting # characters to lower case, and removing words containing numbers translator = str.maketrans('', '', string.punctuation) text = text.translate(translator) text = text.lower().split(' ') text = [word for word in text if word.isalpha()] # Generate an input tensor input = [1] for word in text: if word in word_dict and word_dict[word] < top_words: input.append(word_dict[word]) else: input.append(2) padded_input = sequence.pad_sequences([input], maxlen=max_review_length) # Invoke the model and return the result result = model.predict(np.array([padded_input][0]))[0][0] return result
这些语句定义名为
analyze
的函数,它接受字符串作为输入,并返回从 0.0 到 1.0 的数字,用于量化该字符串中表达的情绪。 数字越大,情绪越正面。 该函数清理输入字符串,将其转换为引用load_data
函数所创建字典中的字词的整数列表,最后调用模型的predict
函数对文本进行情绪评分。使用笔记本执行以下语句:
analyze('Easily the most stellar experience I have ever had.')
输出是使用从 0.0 到 1.0 的数字表示的输入文本中表达的情绪。 你是否同意模型的评估结果?
现在,请尝试以下语句:
analyze('The long lines and poor customer service really turned me off.')
该模型如何量化此文本中表达的情绪?
通过使用自己的输入字符串测试模型来完成本练习。 结果并不完美,但你应该发现该模型在量化情绪方面相当胜任。 尽管该模型使用电影评论进行训练,但其并不限于分析电影评论。 这是有道理的,因为在表达喜欢或不喜欢某部电影的语言与表达对其他不相关主题的感受的字词之间存在固有的相似性。