NLP,使用 NLTK 的情感分析和使用 ML 方法之间的区别
NLP, difference between using NLTK's sentiment analysis and using ML approach
我最近开始使用 Python 学习 NLP 和 ML。
我从情绪分析开始。
在进行情绪分析时,我无法理解机器学习的作用。
假设我正在使用 NLTK 的 SentimentIntensityAnalyzer 分析推文或新闻标题,并且正在加载与案例相关的词典,因此我得到了极性和消极性、积极性、中性分数。
现在我不明白的是,在什么情况下我应该使用本文中的代码:
或者只是 NLTK 中的 built-in,甚至是 Google 的 BERT?
欢迎对博客或教程进行任何回答或 link!
NLP本质上是ML的一部分,换句话说,就是用ML。它是“计算机和信息科学、人工智能和语言学的交叉学科领域,探索文本或语音中的自然语言”(reference)。
其中一项 NLP 任务可能是您提到的 Sentiment Analysis,为此您可以使用各种 NLP 和 ML 工具。根据您的目的,有各种各样的 NLP 任务及其各自的库,例如情感分析、主题建模和命名实体识别 (NER)。
即使是同一个任务,也有多个 NLP 库。例如,在情感分析的情况下,Huggingface, NLKT, and spaCy 可以实现相同的目的。您可以建议他们的文档,并根据他们的表现和要求决定适合您的任务。
指示性教程:Text Classification in Python Using spaCy, Training your own Sentiment Analyzer with spaCy, Fine-tuning BERT for Sentiment Analysis, Simplifying Sentiment Analysis in Python.
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}
一种机器学习方法,就像您在 link 中概述的那样,它更多地涉及创建特征,通常使用 TF-IDF,但当然不限于。然后在此之上使用机器学习。这种方法依赖于足够好和足够大的训练数据集的可用性。通常特征提取是更重要的部分,并且选择简单的模型,例如逻辑回归。
BERT 是预训练模型,可以进行微调,认为不必如此我发现微调对我的经验有帮助。
BERT的主要优势:
有了足够的训练数据,BERT 可以非常强大,有了足够的训练数据,它应该能够正确地得到我 post 开头的一个例子。这是一个巨大的优势。
由于 BERT 已经过预训练,因此可能需要相对较少的训练样本才能给出合理的良好结果。
由于 BERT 不需要(或需要的更少)特征工程,因此在 ML 工程工作方面可以快速获得良好的初始结果。
BERT 的主要限制是:
学习曲线,主要是从概念上理解它是如何工作的。使用 BERT 并不难。
BERT 的训练和预测速度很慢。即使对于小型数据集,您也几乎必须至少使用中等 GPU。
缺乏透明度。真的很难知道为什么基于 BERT 的模型会提示它所提示的内容。
我最近开始使用 Python 学习 NLP 和 ML。 我从情绪分析开始。 在进行情绪分析时,我无法理解机器学习的作用。
假设我正在使用 NLTK 的 SentimentIntensityAnalyzer 分析推文或新闻标题,并且正在加载与案例相关的词典,因此我得到了极性和消极性、积极性、中性分数。 现在我不明白的是,在什么情况下我应该使用本文中的代码:
或者只是 NLTK 中的 built-in,甚至是 Google 的 BERT?
欢迎对博客或教程进行任何回答或 link!
NLP本质上是ML的一部分,换句话说,就是用ML。它是“计算机和信息科学、人工智能和语言学的交叉学科领域,探索文本或语音中的自然语言”(reference)。
其中一项 NLP 任务可能是您提到的 Sentiment Analysis,为此您可以使用各种 NLP 和 ML 工具。根据您的目的,有各种各样的 NLP 任务及其各自的库,例如情感分析、主题建模和命名实体识别 (NER)。
即使是同一个任务,也有多个 NLP 库。例如,在情感分析的情况下,Huggingface, NLKT, and spaCy 可以实现相同的目的。您可以建议他们的文档,并根据他们的表现和要求决定适合您的任务。
指示性教程:Text Classification in Python Using spaCy, Training your own Sentiment Analyzer with spaCy, Fine-tuning BERT for Sentiment Analysis, Simplifying Sentiment Analysis in Python.
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}
一种机器学习方法,就像您在 link 中概述的那样,它更多地涉及创建特征,通常使用 TF-IDF,但当然不限于。然后在此之上使用机器学习。这种方法依赖于足够好和足够大的训练数据集的可用性。通常特征提取是更重要的部分,并且选择简单的模型,例如逻辑回归。
BERT 是预训练模型,可以进行微调,认为不必如此我发现微调对我的经验有帮助。
BERT的主要优势:
有了足够的训练数据,BERT 可以非常强大,有了足够的训练数据,它应该能够正确地得到我 post 开头的一个例子。这是一个巨大的优势。
由于 BERT 已经过预训练,因此可能需要相对较少的训练样本才能给出合理的良好结果。
由于 BERT 不需要(或需要的更少)特征工程,因此在 ML 工程工作方面可以快速获得良好的初始结果。
BERT 的主要限制是:
学习曲线,主要是从概念上理解它是如何工作的。使用 BERT 并不难。
BERT 的训练和预测速度很慢。即使对于小型数据集,您也几乎必须至少使用中等 GPU。
缺乏透明度。真的很难知道为什么基于 BERT 的模型会提示它所提示的内容。