文章主题:情感分析, 人工智能, 机器学习, 深度学习
题图为 AI 绘图生成
嗨,你好哈,今天分享一个实践场景——情感分析,通过两种方式来体验大语言模型的魔法。
在人工智能领域中,情感分析是一项关键的应用,其作用在于解读文本的情感属性。例如,我们可以运用情感分析来判断新闻报道的情感倾向,从而得知其是偏向积极还是消极;也可以借助情感分析来洞察社交媒体上用户对于特定话题的情感立场;此外,对于商品评论和电影影评等文本信息,情感分析也能实现观点提取、主题分析和情感挖掘等功能。
在情感分析领域中,我们可以将情感划分为三大类别,分别为积极性(positivity)、消极性(negativity)以及中性性(neutrality)。
传统方案
基于规则的方法基于规则的方法是情感分析领域最早采用的技术之一,其核心是通过人工设定一系列规则来辨别文本所蕴含的情感信息。
优点:可以根据具体应用场景进行灵活的规则设计,且不需要大量的标注数据。
不足之处在于,鉴于情感表达形式的多样性,规则设计需充分考虑各种情感表达手段。相较于其他策略,此方法的鲁棒性与适应性稍逊一筹。
基于情感词典的方法情感词典方法是一种依赖于情感词典来辨别文本情感的技术。这种方法主要通过分析情感词典中的词汇,判断其积极、消极或中性的情感属性,进而计算文本中这些情感词汇的数量以及它们的具体极性。通过这种方式,我们可以较为准确地把握文本的情绪倾向。
优点:可以快速进行情感分析,同时也比较易于实现。
不足之处在于,构建情感词典需要消耗大量的人力投入,同时该词典可能无法全面覆盖所有情感表达形式。此外,情感词典的质量也会对其识别精度产生影响。
传统机器学习方法传统机器学习方法包括朴素贝叶斯、支持向量机(SVM)和随机森林等算法。这些方法的基本思路都是利用已有的标注数据来训练分类器,然后用训练好的分类器来对新的文本进行情感分析。
优点:可以利用大量的标注数据进行训练,从而提高分类器的性能。
缺点:需要手工设计特征,而且对于不同的任务和数据集,需要重新设计特征,训练过程较为耗时。
深度学习方法深度学习方法是目前在情感分析领域中表现最好的方法之一,它可以自动地从原始的文本中学习出表示特征,并且可以处理不同长度的文本。深度学习方法包括循环神经网络(RNN)、长短时记忆网络(LSTM)和卷积神经网络(CNN)等模型。其中,RNN 和 LSTM 可以很好地处理序列数据,而 CNN 可以有效地处理文本中的局部信息。这些模型通常包括一个嵌入层(embedding layer)来将文本转换为向量表示,一个或多个隐藏层来提取特征,最后是一个输出层来预测文本的情感极性。
优点:可以自动地学习出文本中的特征,不需要人工进行特征工程,同时也可以利用大量的未标注数据进行训练,从而提高模型的泛化能力。
缺点:需要大量的标注数据来训练模型,而且训练过程较为复杂和耗时。
示例importjieba
import pandas aspd
from sklearn.feature_extraction.text importCountVectorizer
from sklearn.naive_bayes importMultinomialNB
def analyze_sentiment_zh(text): # 中文分词seg_list = jieba.cut(text)
seg_list = [word for word in seg_list if len(word) > 1]
# 加载情感词典 # pos_words = pd.read_csv(pos_words.csv, header=None)[0].tolist() # neg_words = pd.read_csv(neg_words.csv, header=None)[0].tolist() pos_words = [“好看”,“太好看”,“不枯燥”]
neg_words = [“枯燥”,“不好看”,“太枯燥”]
# 构建语料库corpus = []
for word inseg_list:
if word inpos_words:
corpus.append(positive)
elif word inneg_words:
corpus.append(negative)
else:
corpus.append(neutral)
# 特征提取vectorizer = CountVectorizer()
X = vectorizer.fit_transform(seg_list)
# 训练模型y = corpus
clf = MultinomialNB()
clf.fit(X, y)
# 预测情感X_test = vectorizer.transform([text])
y_pred = clf.predict(X_test)
return y_pred[0]
print(analyze_sentiment_zh(“这本书太好看了,一点也不枯燥”))
print(analyze_sentiment_zh(“这本书太枯燥了,一点也不好看”))
小结这些传统的机器学习算法,想要取得好的效果,除了要知道有哪些算法可以用,还非常依赖特征工程与模型调参两方面的工作经验。如上面的句子通过分词后的结果如下:
这本书太好看了,一点也不枯燥 ——> [本书, 好看, 一点, 枯燥]
这本书太枯燥了,一点也不好看 ——> [本书, 枯燥, 一点, 好看]
想要解决一个简单的情感分析问题,也需要撰写大量文本处理的代码,还要了解针对当前特定场景的技巧,这非常依赖工程师的经验。
OpenAI 情感分析解决方案
GPT 通过学习大量的文本数据,使得它对自然语言的理解具有丰富的语义表示能力,可以根据上下文和语境进行推断和预测。在情感分析任务中,GPT 可以通过对待分析文本的编码和解码,结合预训练好的语义表示,从而有效地提取文本中的情感信息。
此外,GPT 还具有较强的泛化能力和可迁移性,可以适应不同类型的数据和任务,同时还能够进行细粒度的情感分析,如情感强度、情感类型等。这使得 GPT 成为一种在情感分析任务中非常有效的方法。
importopenai
importos
openai.api_key = os.environ.get(“OPENAI_API_KEY”)
def analyze_sentiment(text): model_engine = “text-davinci-002” prompt = (f”The following is a sentiment analysis of the following text:\n” f”Text: {text}\n” f”Sentiment:”)
response = openai.Completion.create(
engine=model_engine,
prompt=prompt,
temperature=0,
max_tokens=1,
n=1,
stop=None,
timeout=60,
)
sentiment = response.choices[0].text.strip()
returnsentiment
print(analyze_sentiment(“这个产品很便宜,但是质量非常好。”))
print(analyze_sentiment(“虽然这个产品有点小问题,但是客服解决得非常及时,服务很好。”))
print(analyze_sentiment(“虽然价格有点高,但是产品真的非常值得购买。”))
print(analyze_sentiment(“虽然产品不是特别耐用,但是颜值非常高,我很满意。”))
print(analyze_sentiment(“虽然我收到的产品与图片有点出入,但是实际效果真的很好。”))
print(“=” * 10)
print(analyze_sentiment(“虽然物流很快,但是包装实在太差了。”))
print(analyze_sentiment(“虽然价格便宜,但是质量真的很一般。”))
print(analyze_sentiment(“虽然售后服务很好,但是产品不太耐用。”))
print(analyze_sentiment(“虽然尺码不太合适,但是材质很舒服。”))
print(analyze_sentiment(“虽然包装非常好,但是产品实际效果很一般。”))
print(“=” * 10)
# 验证上面容易混淆的语料print(analyze_sentiment(“这本书太好看了,一点也不枯燥”))
print(analyze_sentiment(“这本书太枯燥了,一点也不好看”))
结语
总体来说,不同的情感分析方法各有优缺点,在实际应用中需要根据具体的场景和数据情况选择合适的方法。而 GPT 作为一种强大的自然语言处理模型,可以作为情感分析的工具之一,可以通过在训练集上进行微调来实现情感分析的任务。同时,GPT 还可以利用其生成能力,结合其他方法来实现情感分析任务,具有广泛的应用前景。
推荐阅读
安装 Python 开发环境,准备体验 OpenAI 的 API附PDF|ChatGPT 是怎么变得这么强的?——ChatGPT 的前世今生后台回复 230416 获取示例代码AI时代,拥有个人微信机器人AI助手!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!