python 文本情感分析
时间: 2024-12-27 08:27:48 浏览: 5
### 使用Python实现文本情感分析
#### 基础知识概述
情感分析属于自然语言处理(NLP)的一个分支,旨在识别并提取文档中表达的情绪倾向。这项技术广泛应用于市场调研、产品反馈监测等领域[^2]。
#### 数据预处理阶段
为了提高后续建模的效果,在正式进入模型训练之前通常要对原始语料做一系列清理工作,比如去除停用词(stop words removal),转换大小写(normalization), 分割句子(sentence tokenization)以及单词分割(word segmentation)[^4].
#### 构建简单的情感分类器
对于初学者来说,可以从基于规则的方法入手尝试建立最简易版本的情感检测系统;随着理解加深再逐步过渡到更复杂的统计学算法或是深度神经网络架构上。下面给出一段采用朴素贝叶斯作为核心组件来完成二元(正面/负面)情绪判断的小例子:
```python
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from nltk.corpus import movie_reviews
import random
def load_data():
docs = []
labels = []
for category in movie_reviews.categories(): # 获取类别名列表 ['neg', 'pos']
fileids = movie_reviews.fileids(category)
for fid in fileids:
doc = " ".join(movie_reviews.words(fid))
docs.append(doc)
labels.append(category)
return docs, labels
if __name__ == "__main__":
documents, sentiments = load_data()
vectorizer = CountVectorizer(analyzer='word')
X = vectorizer.fit_transform(documents).toarray()
y = [0 if label=='neg' else 1 for label in sentiments]
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3,random_state=random.randint(0,10))
clf = MultinomialNB().fit(X_train, y_train)
predicted = clf.predict(X_test)
accuracy = sum(predicted==y_test)/len(y_test)*100
print(f"The model's prediction accuracy is {accuracy:.2f}%.")
```
此段程序首先加载了电影评论数据集,并将其划分为特征矩阵X与标签向量Y两部分。接着运用`CountVectorizer()`函数将每篇影评转化为数值型表示形式以便于计算机理解和计算。之后调用了scikit-learn库内的多项式分布下的朴素贝叶斯估计器MultinomialNB()来进行监督学习过程中的参数拟合操作。最后输出测试集中预测正确的比例即为该系统的性能指标之一—准确率。
#### 利用第三方库简化开发流程
除了上述自定义方式外,还可以借助像TextBlob 或者 SnowNLP这样的高级API快速搭建原型系统。这里以SnowNLP为例说明如何仅需几行命令就能获取中文字符串对应的好恶程度得分:
```python
from snownlp import SnowNLP
text = u"这家餐厅的服务态度真好"
s = SnowNLP(text)
print(s.sentiments)
```
这段代码会返回介于0至1之间的小数用来表征输入文本所传达出来的积极与否的程度,其中越接近1代表越是乐观的态度而靠近0则意味着消极悲观的看法[^3]。
阅读全文