【问题标题】:NLP, difference between using NLTK's sentiment analysis and using ML approachNLP,使用 NLTK 的情感分析和使用 ML 方法的区别
【发布时间】:2020-09-25 16:38:55
【问题描述】:

我最近开始使用 Python 学习 NLP 和 ML。 我从情绪分析开始。 在进行情绪分析时,我无法理解机器学习的作用。

假设我正在使用 NLTK 的 SentimentIntensityAnalyzer 分析推文或新闻标题,并且我正在加载与案例相关的词典,因此我得到了极性和消极、积极、中性的分数。 现在我不明白的是,在这种情况下我应该使用本文中的代码:

Sentiment with ML toturial

或者只是像 NLTK 中的内置,甚至像 Google 的 BERT 这样的东西?

欢迎任何答案或博客或教程的链接!

【问题讨论】:

    标签: python machine-learning nlp nltk sentiment-analysis


    【解决方案1】:

    SentimentIntensityAnalyzer是专门为分析情绪而打造的工具,使用方便,但会漏掉一些情况,例如:

    In [52]: from nltk.sentiment.vader import SentimentIntensityAnalyzer                                                
    
    In [53]: sia = SentimentIntensityAnalyzer()                                                                         
    
    In [54]: sia.polarity_scores("I am not going to miss using this product.")                                          
    Out[54]: {'neg': 0.0, 'neu': 0.829, 'pos': 0.171, 'compound': 0.1139}
    

    一种机器学习方法,就像您在链接中概述的那样,它更侧重于创建功能,通常使用 TF-IDF,但当然不限于此。然后在此之上使用机器学习。这种方法依赖于足够好的和足够大的训练数据集的可用性。通常特征提取是更重要的部分,并且选择了一个简单的模型,例如逻辑回归。

    BERT 是经过预训练的模型,可以进行微调,我认为不一定非要如此。我发现微调对我的经验有帮助。

    BERT的主要优势:

    1. 有了足够的训练数据,BERT 可以非常强大,有了足够的训练数据,它应该能够正确地在我的文章开头得到一个例子。这是一个巨大的优势。

    2. 由于 BERT 已经过预训练,它可能需要相对较少数量的训练样本才能给出良好合理的结果。

    3. 因为 BERT 不需要(或需要少得多)特征工程,它可以在 ML 工程工作方面快速获得良好的初始结果。

    BERT 的主要限制是:

    1. 学习曲线,主要是从概念上理解它是如何工作的。使用 BERT 并不难。

    2. BERT 的训练和预测速度很慢。即使对于小型数据集,您也几乎必须至少使用中等 GPU。

    3. 缺乏透明度。真的很难知道为什么基于 BERT 的模型会暗示它所暗示的内容。

    【讨论】:

      【解决方案2】:

      NLP 本质上是 ML 的一部分,或者换句话说,使用 ML。它是“计算机和信息科学、人工智能和语言学的跨学科领域,探索文本或演讲中的自然语言”(reference)。

      其中一个 NLP 任务可以是您提到的 Sentiment Analysis,您可以为此使用各种 NLP 和 ML 工具。有各种各样的 NLP 任务及其各自的库,具体取决于您的目的,例如情感分析、主题建模和命名实体识别 (NER)。

      即使是同一任务,也有多个 NLP 库。例如,在情感分析的情况下,HuggingfaceNLKTspaCy 可以实现相同的目的。您可以建议他们的文档,并根据他们的表现和要求决定哪些适合您的任务。

      指示性教程:Text Classification in Python Using spaCyTraining your own Sentiment Analyzer with spaCyFine-tuning BERT for Sentiment AnalysisSimplifying Sentiment Analysis in Python

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-16
        • 2015-02-19
        • 1970-01-01
        • 2011-11-30
        • 2023-03-23
        • 2018-09-27
        • 2020-02-01
        相关资源
        最近更新 更多