情感分析器设计

情感分析器设计

        情感分析是NLP最受欢迎之一,其主要目的就是判断一段文字是否是积极的。当然,有些是中性的。情感分析在营销活动、社交媒体、电子商务客户分析等应用广泛,而这些都间接反馈很多问题,而当数据量很大时,人工无法完成分类,这时机器学习大显身手!

        下面,我们来看看如何来进行情感分析器设计:

        这里,我们用nltk.corpus下moive_reviews关于电影影评包作为数据标注,当然,首先要下载数据。

        然后,将库中数据进行提取,预处理积极和消极词汇,由于在库中数据positive和negative分成1000段,而每一段中含有很多单词,我们分类进行标注,而每一个单词都标注为True,且用字典方式进行存放,然后进行大类标注。提取特征后,生成训练集(因为完全相同的文字不一定都存在,否则,就不是机器学习了,直接变为查找了,是不是?)。为了,评估模型,分为训练集和测试集,评估模型可行性,接着,利用分类器进行训练,用户输入数据就可以直接预测了,我们得到语句对应的情感是积极或者消极的概率。

    (1)      提取情感标记,为了提取方式,定义函数:

    def extract_features(word_list):

        return dict([(word, True)for word in word_list])

    positive_fileids = movie_reviews.fileids('pos')

    negative_fileids = movie_reviews.fileids('neg')

    features_positive = [(extract_features(movie_reviews.words(fileids=[f])),'Positive')  for f in positive_fileids]   

    features_negative = [(extract_features(movie_reviews.words(fileids=[f])),'Negative') for f in negative_fileids]

     print(len(features_positive),len(negative_fileids))

(2)训练集和测试集分割,我们选70%(总量为1000),大家自己可以定义,后面评估用。

    features_train = features_positive[:700] + features_negative[:700]

    features_test = features_positive[700:] + features_negative[700:]

(3)我们选择贝叶斯分类器:classifier= NaiveBayesClassifier.train(features_train)

(4)对算法和模型进行评估(精确值accuracy,nltk已经提供我们选择分类器之后的评估):

   input_data="It is an amazing movie"

  probdist = classifier.prob_classify(extract_features(Input_data.split()))

  pred_sentiment = probdist.max()

   大家也可以选择最大熵分类器观察分类效果。大家,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值