【 文本到上下文 #4】NLP 与 ML

这篇具有很好参考价值的文章主要介绍了【 文本到上下文 #4】NLP 与 ML。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、说明

        欢迎回到我们的 NLP 博客系列!当我们进入第四部分时,焦点转移到机器学习 (ML) 和自然语言处理 (NLP) 之间的动态相互作用上。在本章中,我们将深入探讨 ML 和 NLP 的迷人协同作用,解开理论概念和实际应用。

        AI、ML 和 NLP 虽然经常互换使用,但具有特定的作用。人工智能模拟人类智能,而NLP允许机器理解和解释语言。机器学习在人工智能的保护伞下,实现了自主学习和改进。这种协同作用使 NLP 任务自动化,提高了准确性和效率。

        以下是本章中您可以期待的内容:

  1. 了解 NLP 中的监督学习和无监督学习: 本节将阐明监督学习和无监督学习在 NLP 背景下的核心区别和独特应用。通过了解这些基本的 ML 方法,您将深入了解它们如何驱动各种 NLP 任务和应用程序。
  2. 情感分析:(监督)ML在NLP中的实际应用:深入研究情感分析的世界,其中监督式 ML 技术用于解释和分类文本数据中的情感。本节将展示如何训练和应用监督学习模型以从文本中提取有意义的见解,强调它们在 NLP 中的实际效用。
  3. 主题建模:(无监督)ML在NLP中的实际应用:探索主题建模,这是一种无监督 ML 应用程序,可发现大型文本语料库中隐藏的主题结构。本部分将演示无监督学习算法如何检测模式和主题,为了解大量文本数据集中存在的潜在主题提供一个窗口。

二、了解 NLP 中的监督学习和无监督学习

        在机器学习领域,有两种基本范式:监督学习和无监督学习。 监督学习涉及在标记数据集上训练模型,其中算法学习将输入数据映射到相应的输出标签。另一方面,无监督学习处理未标记的数据,旨在发现信息中隐藏的模式或分组。

        对于自然语言处理 (NLP) 来说,机器学习就像语言侦探一样——帮助我们理解单词和短语。想象一下,教计算机理解电影评论是在竖起大拇指还是竖起大拇指。这就是我们在NLP中对监督学习所做的。另一方面,无监督学习就像一个熟练的探索者,帮助我们在一堆没有任何标签的文本中找到隐藏的模式。可以把它想象成在一堆文章中揭示主要主题。

        让我们直接进入有趣的区域,从情感分析的快感开始,然后进入主题建模的迷人世界。准备好冒险了吗?让编码奇迹开始吧! 

三、情感分析:(监督)ML在NLP中的实际应用

        ML 在 NLP 中最普遍和最实际的应用之一是情感分析。此任务涉及确定一段文本中表达的情绪,无论是积极的、消极的还是中性的。想象一下,当大规模自动分析情绪时,可以从客户评论、社交媒体帖子或产品反馈中收集到丰富的见解。

        IMDB评论:使用代码进行情感分析

【 文本到上下文 #4】NLP 与 ML,NLP高级和ChatGPT,人工智能,自然语言处理,人工智能

        为了将这些概念变为现实,让我们开始一个现实世界的项目——为 IMDB 评论构建情感分析模型。在此示例中,我们将使用流行的 ML 框架和库(例如 sci-kit learn、pandas)来指导您完成该过程的每个步骤。

# Import necessary libraries
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, classification_report

# Function to load IMDb dataset
def load_data():
    df = pd.read_csv('data/movie.csv')
    return df['text'], df['label']

# Function to preprocess data (split into training and testing sets)
def preprocess_data(text, label):
    X_train, X_test, y_train, y_test = train_test_split(text, label, test_size=0.2, random_state=42)
    return X_train, X_test, y_train, y_test

# Function to vectorize text data using CountVectorizer
def vectorize_text(X_train, X_test):
    vectorizer = CountVectorizer()
    X_train_vec = vectorizer.fit_transform(X_train)
    X_test_vec = vectorizer.transform(X_test)
    return X_train_vec, X_test_vec, vectorizer  # Return the vectorizer as well to test random text 

# Function to train a Naive Bayes classifier
def train_model(X_train_vec, y_train):
    classifier = MultinomialNB()
    classifier.fit(X_train_vec, y_train)
    return classifier

# Function to evaluate the trained model
def evaluate_model(classifier, X_test_vec, y_test):
    y_pred = classifier.predict(X_test_vec)
    accuracy = accuracy_score(y_test, y_pred)
    report = classification_report(y_test, y_pred)
    return accuracy, report

# Main function
def main():
    # Step 1: Load data
    text, label = load_data()

    # Step 2: Preprocess data
    X_train, X_test, y_train, y_test = preprocess_data(text, label)

    # Step 3: Vectorize text data
    X_train_vec, X_test_vec, vectorizer = vectorize_text(X_train, X_test)  # Capture the vectorizer

    # Step 4: Train the model
    classifier = train_model(X_train_vec, y_train)

    # Step 5: Evaluate the model
    accuracy, report = evaluate_model(classifier, X_test_vec, y_test)

    # Display results
    print(f"Accuracy: {accuracy:.2f}")
    print("Classification Report:\n", report)

    # Test random text with the trained model
    test_text = ["This movie was fantastic!", "I didn't like the plot."]
    test_text_vec = vectorizer.transform(test_text)
    predictions = classifier.predict(test_text_vec)
    print("\nTest Text Predictions:", predictions)

if __name__ == "__main__":
    main()
Accuracy: 0.85
Classification Report:
               precision    recall  f1-score   support

           0       0.83      0.89      0.86      3966
           1       0.88      0.82      0.85      4034

    accuracy                           0.85      8000
   macro avg       0.85      0.85      0.85      8000
weighted avg       0.85      0.85      0.85      8000


Test Text Predictions: [1 0]

        项目步骤:

  1. 加载 IMDb 数据集:我们首先加载我们的 IMDb 数据集,该数据集由电影评论和相应的情感标签(正面或负面)组成。
  2. 数据预处理: 然后,通过使用 scikit-learn 库将数据拆分为训练集和测试集,对数据进行预处理。这一步对于训练和评估模型的性能至关重要。
  3. 文本矢量化:使用 scikit-learn 的 CountVectorizer 将电影评论文本转换为数字特征。此过程将原始文本数据转换为适合机器学习算法的格式。
  4. 训练模型:我们使用 scikit-learn 中的 MultinomialNB 类训练朴素贝叶斯分类器,这是文本分类任务的常用选择。此步骤涉及教导模型识别矢量化文本数据中的模式。
  5. 模型评估:在测试集上对经过训练的模型进行评估,以评估其准确性和性能。我们使用准确性分数和分类报告等指标来衡量模型对看不见的数据的泛化程度。
  6. 使用随机文本进行测试:为了证明该模型在现实世界中的适用性,我们用随机的电影评论文本对其进行了测试。这展示了我们的情感分析模型在训练数据之外进行预测的灵活性。

        建立IMDB情感分析模型不仅可以深入了解电影评论中表达的情感,还可以作为NLP和文本分类的极好介绍。该项目演示了准备数据、训练模型和评估其性能的分步过程,为那些涉足令人兴奋的自然语言处理领域的人们提供了一个实际示例。

四、主题建模:(无监督)ML在NLP中的实际应用

        在自然语言处理 (NLP) 中的无监督学习领域,主题建模仍然是一个迷人的应用程序。这种技术使我们能够在文本文档集合中挖掘潜在的主题,在不依赖预定义标签的情况下揭示潜在的主题。

        使用代码对研究文章进行主题建模

        现在,让我们深入研究我们的第二个 NLP 项目——为研究文章制作主题建模工作。在本例中,我们将采用无监督学习技术来提取非结构化文本中的隐藏对话,重点关注“TITLE”和“ABSTRACT”列。

# Import necessary libraries
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd

# Function to load research articles dataset
def load_data():
    df = pd.read_csv('data/research_articles.csv')
    return df['TITLE'] + ' ' + df['ABSTRACT']
    
# Function to vectorize text data using TfidfVectorizer
def vectorize_text_tfidf(text):
    vectorizer = TfidfVectorizer(max_df=0.95, min_df=2, stop_words='english')
    X_vec = vectorizer.fit_transform(text)
    return X_vec, vectorizer
    
# Function to train a Latent Dirichlet Allocation (LDA) model
def train_lda_model(X_vec, num_topics):
    lda_model = LatentDirichletAllocation(n_components=num_topics, random_state=42)
    lda_model.fit(X_vec)
    return lda_model
    
# Function to display the top words for each topic
def display_topics(model, feature_names, num_top_words):
    topics = {}
    for topic_idx, topic in enumerate(model.components_):
        topics[f"Topic {topic_idx+1}"] = [feature_names[i] for i in topic.argsort()[:-num_top_words - 1:-1]]
    return topics
    
# Main function for Topic Modeling
def main_topic_modeling(text, num_topics=5, num_top_words=10):
    # Step 1: Vectorize text data using TfidfVectorizer
    X_vec, vectorizer = vectorize_text_tfidf(text)
    
    # Step 2: Train a Latent Dirichlet Allocation (LDA) model
    lda_model = train_lda_model(X_vec, num_topics)
    
    # Step 3: Display the top words for each topic
    feature_names = vectorizer.get_feature_names_out()
    topics = display_topics(lda_model, feature_names, num_top_words)
    
    # Display the topics
    print(f"\nTop {num_top_words} words for each topic:")
    for topic, words in topics.items():
        print(f"{topic}: {', '.join(words)}")

if __name__ == "__main__":
    text_data = load_data()
    main_topic_modeling(text_data, num_topics=5, num_top_words=10)
Top 10 words for each topic:
Topic 1: quantum, energy, spin, model, magnetic, phase, field, time, temperature, wave
Topic 2: learning, data, model, network, networks, based, algorithm, models, neural, problem
Topic 3: mn, doping, floquet, fese, t_c, soc, kitaev, semimetals, mos2, verma
Topic 4: qa, nmf, hedging, opioid, password, gerrymandering, hashtags, triad, fuzzing, sequent
Topic 5: mathbb, prove, group, mathcal, finite, groups, theorem, spaces, algebra, space

        项目步骤:

  1. 加载研究文章数据集:首先加载包含研究文章的数据集,重点关注“TITLE”和“ABSTRACT”列。
  2. 使用 TfidfVectorizer 进行文本矢量化:使用 TfidfVectorizer 将研究文章文本转换为数字特征,同时考虑每个文档中单词的重要性。
  3. 训练潜在狄利克雷分配 (LDA) 模型:使用 LDA 算法来揭示研究文章中隐藏的主题。LDA 假定每个文档都是主题的混合体,并且每个主题都是单词的混合体(有关更多信息,请访问链接)。
  4. 显示每个主题的热门词:通过展示与每个发现的主题相关的热门词来可视化结果。

        冒险进行研究文章的主题建模项目不仅可以增强我们对文章内容的理解,还可以强调NLP中无监督学习的灵活性。该项目提供了从文本矢量化到揭示潜在主题的顺序过程的实际探索,为进入自然语言处理这一有趣领域的爱好者提供了宝贵的见解。

五、结论

        总之,我们对机器学习(ML)和自然语言处理(NLP)的探索已经阐明了它们的不同作用。ML 作为更广泛的 AI 的一个子集,为自主学习提供动力,而 NLP 则解释和理解语言。

        通过监督学习,我们解开了情感分析,从IMDB评论中提取情感。过渡到无监督学习,主题建模揭示了研究文章中隐藏的主题。

        最后,我们的旅程延伸到 NLP 的深度学习基础。请继续关注我们对神经网络、递归神经网络 (RNN) 和长短期记忆 (LSTM) 网络的探索——这是我们正在进行的 NLP 与 ML 探索的激动人心的篇章。文章来源地址https://www.toymoban.com/news/detail-807047.html

到了这里,关于【 文本到上下文 #4】NLP 与 ML的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 调用Chatgpt API,并实现联系上下文

    相信很多人在调用的时候出现了一些问题,直接进行调用好像不行了。得需要点懂得都懂的东西。但使用懂得都懂的东西调用openai这个库的时候会报一个这样的错误:SSLEOFError 因此直接使用 requests 来访问端口,并向其添加代理的方式实现访问。效果如下: 实现代码如下: 通

    2024年02月11日
    浏览(55)
  • 大语言模型之十六-基于LongLoRA的长文本上下文微调Llama-2

    增加LLM上下文长度可以提升大语言模型在一些任务上的表现,这包括多轮长对话、长文本摘要、视觉-语言Transformer模型的高分辨4k模型的理解力以及代码生成、图像以及音频生成等。 对长上下文场景,在解码阶段,缓存先前token的Key和Value(KV)需要巨大的内存开销,其次主流

    2024年02月06日
    浏览(42)
  • ChatGPT 和 Elasticsearch:分面、过滤和更多上下文

    作者:Luca Wintergerst 在最近的一篇博客文章中,我们讨论了 ChatGPT 和 Elasticsearch® 如何协同工作以帮助更有效地管理专有数据。 通过利用 Elasticsearch 的搜索功能和 ChatGPT 的上下文理解,我们演示了如何改进结果。 在这篇文章中,我们讨论如何通过添加分面(facets)、过滤和附

    2024年02月12日
    浏览(37)
  • 如何使用API来向ChatGPT提交上下文数据

    使用API向ChatGPT提交上下文数据,这可能需要一些开发工作。以下是一些可以帮助您开始的建议: 确定API端点和请求方法:您需要确定向ChatGPT提交上下文数据的API端点和请求方法。通常,这些信息可以在API文档中找到。 确定需要提供的上下文数据:在向ChatGPT提交上下文数据

    2023年04月23日
    浏览(48)
  • 【人工智能】LLM大模型中的词嵌入和上下文理解技术实例讲解,附具体的代码例子

    词嵌入(Word Embeddings)可以将高维的文本数据转换成低维的稠密向量表示,在进行自然语言处理任务时,这样的表示方式可以帮助算法理解词语之间的相似性以及上下文关系。以下是一个使用 TensorFlow 和 Keras 实现 Word2Vec 词嵌入模型的代码实例。 使用 TensorFlow 和 Keras 的 Word

    2024年02月07日
    浏览(80)
  • 在word的文本框内使用Endnote引用文献,如何保证引文编号按照上下文排序

    如下图所示,我在word中插入了一个文本框(为了插图),然后文本框内有引用,结果endnote自动将文本框内的引用优先排序,变成文献[1]了,而事实上应该是[31]。请问如何能让文本框内的排序也自动按照整个文章从上到下的顺序来呢?[引用自这里] 文本框中不支持尾注(和脚

    2024年02月13日
    浏览(56)
  • 现有大语言模型(ChatGPT)的上下文理解能力还是假象吗?

    人工智能的一个重要方面是人机交互智能,人机交互智能的核心在于机器对自然语言的理解,而机器翻译是衡量这种理解的有效方式。 按照目前LLM的技术路线,仅仅靠计算语言形式的概率能否产生人类式理解还是未知,但我们知道人类式理解是能够反语言形式概率的,这可以

    2023年04月15日
    浏览(36)
  • 三分钟4行命令构建chatgpt webapp,支持高并发以及上下文对话功能

    个人主页:https://yang1he.gitee.io 干货会越来越多的,欢迎来玩 纯纯不是标题党,昨天找了一下午,有用flask框架的,有还得qtdesinger框架的,这不纯纯骗小白吗,最近比较常用streamlit,所以萌发了能不能用这个做个简单的app.说干就干 你的chatgpt秘钥,说多了我这篇问这个那就发不

    2023年04月16日
    浏览(32)
  • 神经数据库:用于使用 ChatGPT 构建专用 AI 代理的下一代上下文检索系统 — (第 2/3 部分)

    书接上回理解构建LLM驱动的聊天机器人时的向量数据库检索的局限性 - (第1/3部分)_阿尔法旺旺的博客-CSDN博客 其中我们强调了( 1 )嵌入生成,然后( 2 )使用近似近邻( ANN )搜索进行矢量搜索的解耦架构的缺点。我们讨论了生成式 AI 模型生成的向量嵌入之间的余弦相似

    2024年02月15日
    浏览(46)
  • 【python】flask执行上下文context,请求上下文和应用上下文原理解析

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月26日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包