Speech and Language Processing之Naive Bayes and Sentiment Classification

1、情感分类

       情感分析最简单的版本是一个二元分类任务,评论的单词提供了很好的线索。例如,考虑以下从电影和餐馆的正面和负面评论中提取的短语。像great, abundant, awesome, pathetic, awful和ridiculous这样的词都是非常有用的线索。

       垃圾邮件检测是另一个重要的商业应用,即将电子邮件分配到垃圾邮件或非垃圾邮件两类之一的二进制分类任务。许多词法和其他特征可用于执行这种分类。例如,你可能会对含有“在线制药”或“免费”或“亲爱的赢家”等短语的电子邮件产生相当合理的怀疑。

      分类的目标是选取单个观测值,提取一些有用的特征,从而将观测值分类到一组离散类中。对文本进行分类的一种方法是使用手写规则。在语言处理的许多领域中,手写的基于规则的分类器构成了最先进的系统,或者至少是其中的一部分。

      然而,规则可能是脆弱的,因为情况或数据会随着时间的推移而变化,而且对于某些任务,人类不一定擅长制定规则。语言处理中的大多数分类都是通过监督机器学习完成的,这将是本章其余部分的主题。在监督学习中,我们有一个输入观察数据集,每个数据集都与一些正确的输出(“监督信号”)相关联。该算法的目标是学习如何从一个新的观测映射到一个正确的输出。

2、贝叶斯分类 

       在本节中,我们将介绍多项朴素贝叶斯分类器,之所以称为贝叶斯分类器,是因为它是一种贝叶斯分类器,它对特征如何相互作用做出了简化(朴素)假设。

       分类器如下图所示。我们把一个文本文档当作一个词袋来表示,也就是说,它是一组无序的词,忽略它们的位置,只保留它们在文档中的频率。在图中的示例中,我们没有表示“I love this movie”和“I would recommend it”等所有短语中的单词顺序,而是简单地注意到单词I在整个摘录中出现了5次,单词love、recommend和movie出现了一次,以此类推。

 

        如上图,朴素贝叶斯其实就是上面这样一个概率分类器,在给定d下,最大化某个分类的概率。

        上面的推理过程其实很简单,首先是由原来的条件概率简化,因为P(d)对于确定的一个d是固定不变的,所以它并不影响最终类别c,所以可以省略,然后条件概率P(d|c)又可以转联合概率,最终,这个仍旧难以计算,那么就需要简化了。

        如上,这两个假设首先就是词袋模型,也就是我们认为词顺序无关,只考虑这个词的频率,再者就是贝叶斯假设,条件独立,概率之间不影响,可以把前面的公式展开。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
You can choose a classifier to use in the pipeline depending on your specific task and the nature of your data. Some commonly used classifiers for document classification include logistic regression, support vector machines (SVM), and naive Bayes. For example, if you want to use logistic regression as your classifier, you can replace the asterisks with `LogisticRegression(random_state=0)`. The `random_state` parameter ensures that the results are reproducible. The complete code would look like this: ``` from sklearn.linear_model import LogisticRegression X_train = df.loc[:25000, 'review'].values y_train = df.loc[:25000, 'sentiment'].values X_test = df.loc[25000:, 'review'].values y_test = df.loc[25000:, 'sentiment'].values from sklearn.pipeline import Pipeline from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import GridSearchCV tfidf = TfidfVectorizer(strip_accents=None, lowercase=False, preprocessor=None) param_grid = [{'vect__ngram_range': [(1, 1)], 'vect__stop_words': [stop, None], 'vect__tokenizer': [tokenizer, tokenizer_porter], 'clf__penalty': ['l1', 'l2'], 'clf__C': [1.0, 10.0, 100.0]}, {'vect__ngram_range': [(1, 1)], 'vect__stop_words': [stop, None], 'vect__tokenizer': [tokenizer, tokenizer_porter], 'vect__use_idf':[False], 'vect__norm':[None], 'clf__penalty': ['l1', 'l2'], 'clf__C': [1.0, 10.0, 100.0]}, ] lr_tfidf = Pipeline([('vect', tfidf), ('clf', LogisticRegression(random_state=0))]) gs_lr_tfidf = GridSearchCV(lr_tfidf, param_grid, scoring='accuracy', cv=5, verbose=2, n_jobs=-1) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITIRONMAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值