自然语言处理之情感分析

本项目的目标是基于用户提供的评论,通过算法自动去判断其评论是正面的还是负面的情感。比如给定一个用户的评论:

  • 评论1: “我特别喜欢这个电器,我已经用了3个月,一点问题都没有!”
  • 评论2: “我从这家淘宝店卖的东西不到一周就开始坏掉了,强烈建议不要买,真实浪费钱”

对于这两个评论,第一个明显是正面的,第二个是负面的。 我们希望搭建一个AI算法能够自动帮我们识别出评论是正面还是负面。

情感分析的应用场景非常丰富,也是NLP技术在不同场景中落地的典范。比如对于一个证券领域,作为股民,其实比较关注舆论的变化,这个时候如果能有一个AI算法自动给网络上的舆论做正负面判断,然后把所有相关的结论再整合,这样我们可以根据这些大众的舆论,辅助做买卖的决策。 另外,在电商领域评论无处不在,而且评论已经成为影响用户购买决策的非常重要的因素,所以如果AI系统能够自动分析其情感,则后续可以做很多有意思的应用。

情感分析是文本处理领域经典的问题。整个系统一般会包括几个模块:

  • 数据的抓取: 通过爬虫的技术去网络抓取相关文本数据
  • 数据的清洗/预处理:在本文中一般需要去掉无用的信息,比如各种标签(HTML标签),标点符号,停用词等等
  • 把文本信息转换成向量: 这也成为特征工程,文本本身是不能作为模型的输入,只有数字(比如向量)才能成为模型的输入。所以进入模型之前,任何的信号都需要转换成模型可识别的数字信号(数字,向量,矩阵,张量...)
  • 选择合适的模型以及合适的评估方法。 对于情感分析来说,这是二分类问题(或者三分类:正面,负面,中性),所以需要采用分类算法比如逻辑回归,朴素贝叶斯,神经网络,SVM等等。另外,我们需要选择合适的评估方法,比如对于一个应用,我们是关注准确率呢,还是关注召回率呢?

1. 数据读取

import re
import pandas as pd
import numpy as np

def process_file():
    """
    读取训练数据和测试数据,并对它们做一些预处理
    """    
    global train_comments
    global train_labels
    global test_comments
    global test_labels    
    
    train_pos_file = "data/train_positive.txt"
    train_neg_file = "data/train_negative.txt"
    test_comb_file = "data/test_combined.txt"

    df_pos=generate_dataframe(train_pos_file)
    df_neg=generate_dataframe(train_neg_file)
    df_com=generate_dataframe(test_comb_file)
    
    # TODO: 读取文件部分,把具体的内容写入到变量里面
    train_comments = list(df_pos.append(df_neg)['Comment'])
    train_labels = list(df_pos.append(df_neg)['Label'])
    test_comments = list(df_com['Comment'])
    test_labels=list(df_com['Label'])
        
def generate_dataframe(filepath):
    
    """
    generate a dataframe to store the comments and labels
    
    """
   
    _comments =
  • 7
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值