当前位置:首页 > AI > 正文内容

从零开始学机器学习——入门NLP

邻居的猫1个月前 (12-09)AI1556

首要给咱们介绍一个很好用的学习地址:https://cloudstudio.net/columns

今日咱们将深化探讨天然言语处理(Natural Language Processing, NLP)这一范畴。天然言语处理是人工智能的一个重要子范畴,首要重视怎么使机器了解和处理人类的言语,然后可以履行比如拼写查看、机器翻译等多种使命。

现在,天然言语处理的运用场景适当广泛,咱们了解的智能帮手如Siri和Alexa便是典型的比如。接下来的课程中,咱们将首要完成一个根底版的谈天机器人,随后逐渐剖析怎么优化和提高机器人的智能体现,使其愈加挨近于人类的考虑办法。

那么,咱们就从这儿开端吧!

谈天机器人

在咱们学习天然言语处理(NLP)的进程中,把握以下技能将是十分重要的:

  1. Python 3:作为一种功用强壮且易于学习的编程言语,Python 3 是进行天然言语处理的首选言语,它具有丰厚的库和结构,可以有用支撑各类 NLP 使命。
  2. 您喜爱的 Python IDE:挑选一个合适自己的集成开发环境(IDE)可以大大提高编程功率,无论是 PyCharm、Jupyter Notebook 仍是 VS Code,找到最合适自己的东西是至关重要的。
  3. TextBlob:这是一个建立在两个广受欢迎的库——天然言语东西包(NLTK)和 Pattern 之上的库。TextBlob 运用这两个库的强壮功用,使文本剖析和处理变得愈加简略直观。它供给了一个用户友爱的 API,适用于各种天然言语处理使命,包括情感剖析、文本分类、翻译等。TextBlob 是一个十分合适快速开发和原型制造的东西,特别合适需求处理文本数据的项目。

无脑版谈天

一开端就企图完成一个功用完美的谈天机器人,对咱们这些初学者来说显然是不现实的。因而,咱们将采纳逐渐推进的办法,先完成一个根底版别的谈天机器人,看看能否在此根底上进行不断优化,终究朝着咱们抱负中的智能机器人的方针行进。

现在,咱们将着手完成一个最简略的谈天机器人。这个机器人将经过随机回应来与用户进行互动,直到用户挑选完毕对话停止。

代码完成

import random

# This list contains the random responses (you can add your own or translate them into your own language too)
random_responses = ["That is quite interesting, please tell me more.",
                    "I see. Do go on.",
                    "Why do you say that?",
                    "Funny weather we've been having, isn't it?",
                    "Let's change the subject.",
                    "Did you catch the game last night?"]

print("Hello, I am Marvin, the simple robot.")
print("You can end this conversation at any time by typing 'bye'")
print("After typing each answer, press 'enter'")
print("How are you today?")

while True:
    # wait for the user to enter some text
    user_input = input("> ")
    if user_input.lower() == "bye":
        # if they typed in 'bye' (or even BYE, ByE, byE etc.), break out of the loop
        break
    else:
        response = random.choices(random_responses)[0]
    print(response)

print("It was nice talking to you, goodbye!")

Hello, I am Marvin, the simple robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?

I am good thanks
That is quite interesting, please tell me more.

ok, lets talk about music
Why do you say that?

because I like music!
Why do you say that?

bye
It was nice talking to you, goodbye!

其实,这个进程仍是相对简略的,因而在这儿就不需求过多解说了。不过,咱们可以从中发现一些风趣的问题。

首要,你以为这些随机回应可以“诈骗”人类,让人类误以为机器人实际上了解了他们的意思吗?这是一个引人深思的问题,涉及到人机交互的实质。

其次,为了让机器人更有用地回运用户,它需求具有哪些功用呢?例如,机器人是否需求具有上下文了解才能,以便更好地盯梢对话的主题和方向?

此外,假如机器人真的可以“了解”一个语句的意思,那么它是否也需求“记住”前面语句的意思,以便在对话中保持一致性和连贯性?

关于大多数天然言语处理(NLP)使命,程序必须将文本进行分化、查看,并存储处理成果或与相关规矩和数据集进行穿插引证。这些使命使程序员可以提取文本中术语和单词的意义、意图或频率等信息。

接下来,咱们将看看NLP专家们所面对的一些问题。尽管咱们现在或许不需求深化了解这些底层常识,但对这些应战有一个大约的印象是有利的。究竟,把握东西的运用才是咱们当时的首要方针。经过实践,咱们将逐渐堆集经历,深化探究更杂乱的概念和技能。

NLP 常见的使命

其实,咱们的首要方针仅仅是对文本进行有用的剖析和处理。经过了解这些天然言语处理使命,咱们期望可以提取出有价值的信息,并得出咱们所寻求的定论。

  1. 符号化
    • 将文本拆分为符号或单词,需考虑标点符号和言语特性。例如:将语句“猫在窗台上睡觉。”拆分为符号:["猫", "在", "窗台", "上", "睡觉", "。"]。
  2. 嵌入
    • 将文本数据转换为数字方式,使类似意义的单词集合在一同。例如:将单词“王子”和“国王”转换为数字向量,使它们在高维空间中更挨近,由于它们有类似的意义。
  3. 解析和词性标示
    • 为每个符号化的单词标示词性(如名词、动词、形容词等)。例如:这一句话:“聪明的学生答复了问题。”,标示“学生=名词”,“答复=动词”。
  4. 单词和短语频率
    • 计算文本中每个单词或短语的呈现频率。例如:在文本中计算“猫”的频率,假如呈现了5次,则记载为“猫: 5”。
  5. N 元语法
    • 将文本分割成固定长度的单词序列(unigram、bigrams、trigrams等)。例如:在语句“我爱吃苹果。”中,生成的二元语法(bigrams)为:["我爱", "爱吃", "吃苹果"]。
  6. 名词短语提取
    • 辨认语句中的名词短语,一般作为主语或宾语。例如:在语句“美丽的花朵怒放。”中,提取名词短语“美丽的花朵”。
  7. 情感剖析
    • 剖析文本的心情倾向,评价其活跃或消沉程度。例如:剖析语句“这个电影太棒了!”得出活跃的心情评分,例如0.8(活跃)。
  8. 词形变化
    • 获取单词的奇数或复数方式。这一块在英文中其实更好了解由于他们有专门的写法,假如中文的话,例如:将单词“狗”的复数方式转换为“狗狗们”。
  9. 词形复原
    • 找出单词的词根或中心词。例如:将单词“飞”、“翱翔”、“飞翔”都复原为词根“飞”。
  10. WordNet(词网)
    • 一个包括近义词、反义词和详细信息的数据库,对言语东西的构建十分有用。例如:查询“快乐”这个词,得到其近义词如“快乐”、“愉快”,以及反义词如“哀痛”。

这么一看,即使是一句简略的话,咱们也需求进行很多的处理才干得出有用的定论,这样才干让机器做出像人类相同的答复。但是,走运的是,Python供给了很多天然言语处理(NLP)库和依靠包,供咱们自由挑选。这些东西的存在使得咱们无需深化杂乱的底层完成,只需经过简略的API调用,就能快速剖析文本并获取成果,真实省去了重复造轮子的费事。

接下来,咱们可以以方才根底的无脑版谈天机器人为起点,进一步添加情感剖析和名词提取的功用。情感剖析将使机器人可以辨认用户的心情状况,而名词提取则可以协助它捉住对话中的要害内容。这样一来,咱们就能更有用地回运用户的问题,使得沟通变得愈加流通和天然。

情感剖析版谈天

咱们方才介绍过了TextBlob库,这儿不再赘述了,假如你期望深化学习这个强壮的天然言语处理库,这儿也有入门链接,协助你更好地了解它的用法。

现在,咱们可以简略完成一个谈天机器人的代码。这个机器人的首要意图是首要剖析输入的这句话,判别其心情是活跃仍是消沉。假如用户的输入中提到了某些名词,咱们将把这些名词融入到机器人的回复中,并自动向用户问询相关内容,以营造出更天然、赋有情感的沟通气氛。

代码完成

接下来,让咱们来看看详细的代码完成:

import random
from textblob import TextBlob
from textblob.np_extractors import ConllExtractor
import nltk

# 下载 NLTK 资源
nltk.download("punkt_tab")
nltk.download('conll2000')

extractor = ConllExtractor()

def main():   
    print("Hello, I am Marvin, the friendly robot.")
    print("You can end this conversation at any time by typing 'bye'")    
    print("After typing each answer, press 'enter'")
    print("How are you today?")

    while True:
        # wait for the user to enter some text
        user_input = input("> ")

        if user_input.lower() == "bye":            
            # if they typed in 'bye' (or even BYE, ByE, byE etc.), break out of the loop
            break
        else:
            # Create a TextBlob based on the user input. Then extract the noun phrases
            user_input_blob = TextBlob(user_input, np_extractor=extractor)                        
            np = user_input_blob.noun_phrases                                    
            response = ""
            if user_input_blob.polarity <= -0.5:
                response = "Oh dear, that sounds bad. "
            elif user_input_blob.polarity <= 0:
                response = "Hmm, that's not great. "
            elif user_input_blob.polarity <= 0.5:
                response = "Well, that sounds positive. "
            elif user_input_blob.polarity <= 1:
                response = "Wow, that sounds great. "

            if len(np) != 0:
                # There was at least one noun phrase detected, so ask about that and pluralise it
                # e.g. cat -> cats or mouse -> mice
                response = response + "Can you tell me more about " + np[0].pluralize() + "?"
            else:
                response = response + "Can you tell me more?"
            print(response)
    
    print("It was nice talking to you, goodbye!")

# Start the program
main()

这段代码的功用可以大致分为以下几个部分:

  1. 初始化提取器:创立一个名词短语提取器实例 extractor。这个提取器将用于辨认用户输入中的重要名词短语。
  2. 主函数
    • 发动与用户的对话,欢迎信息和提示。
    • 进入一个循环,等候用户输入。
    • 假如用户输入“bye”,程序完毕对话。
    • 不然,运用 TextBlob 创立一个目标来剖析用户输入:
      • 提取名词短语。
      • 依据文本的情感极性生成不同的回应(从负面到正面)。
      • 假如检测到名词短语,问询用户关于这些名词短语的更多信息,并将名词短语变为复数方式。
      • 假如没有检测到名词短语,则问询用户更多信息。
  3. 完毕对话:当用户输入“bye”后,程序打印离别信息并完毕。

经过情感剖析和名词短语提取,机器人可以供给更为针对性的回应,比较于之前的无脑机器人,显然会显得更具互动性和呼应性。让咱们来看看它的实际效果:

image

总结

在探究天然言语处理(NLP)的进程中,咱们学习了怎么构建一个根本的谈天机器人,从随机回应到情感剖析,完成了逐渐优化的进程。经过运用Python及其强壮的库,如TextBlob,咱们可以轻松处理文本数据并提取有价值的信息。

今日,咱们介绍了NLP的根本概念和常见使命,涵盖了符号化、情感剖析、名词短语提取等内容。这些技能不仅能协助咱们构建简略的谈天机器人,还为日后深化研究更杂乱的NLP问题奠定了根底。

往后,咱们将持续探究更高档的NLP技能,进一步提高机器人的智能和互动才能。让咱们一同等待下一次的学习旅程吧!


我是尽力的小雨,一名 Java 服务端码农,潜心研究着 AI 技能的奥妙。我酷爱技能沟通与共享,对开源社区充满热情。一起也是一位腾讯云创造之星、阿里云专家博主、华为如此享专家、掘金优异作者。

💡 我将不惜共享我在技能道路上的个人探究与经历,期望能为你的学习与生长带来一些启示与协助。

🌟 欢迎重视尽力的小雨!🌟

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=368

标签: 机器学习
分享给朋友:

“从零开始学机器学习——入门NLP” 的相关文章

AI使用开发之路-预备:建议第2个开源小项目 SemanticKernel.DashScope

AI使用开发之路-预备:建议第2个开源小项目 SemanticKernel.DashScope

上星期咱们发布了与AI运用开发相关的第1个开源小项目 —— DashScope SDK for .NET,今日咱们再发布一个开源小项目 —— SemanticKernel.DashScope,今日这个项目才是主角,由于咱们想依据 Semantic Kernel 开发大模型运用。 首要共享几个与 Se...

万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简略的教程

万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简略的教程

万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简略的教程 目录...

机器学习之父,机器学习之父——艾伦·图灵的传奇人生与贡献

机器学习之父,机器学习之父——艾伦·图灵的传奇人生与贡献

“机器学习之父”这一称号通常指的是杰弗里·辛顿(Geoffrey Hinton),他是机器学习和人工智能领域的先驱之一。杰弗里·辛顿是深度学习领域的开拓者,他的研究对现代人工智能的发展有着深远的影响。杰弗里·辛顿的主要贡献包括:1. 反向传播算法:这是训练神经网络的基本算法之一,使得神经网络可以有效...

机器学习 线性回归

机器学习 线性回归

线性回归是机器学习中最基础和常用的算法之一,它主要用来预测连续型变量。线性回归的目的是找到一个线性关系,使得模型能够最小化预测值与实际值之间的差异。线性回归可以分为两种类型:1. 简单线性回归:只有一个自变量和一个因变量,模型形式为 $ y = wx b $,其中 $ w $ 是权重,$ b $...

ai综合材料绘画,技术与艺术的融合创新

ai综合材料绘画,技术与艺术的融合创新

1. 综合材料绘画的概述综合材料绘画是一种现代绘画形式,它超越了传统画种的限制,将不同媒介材料进行混合运用,或者将非传统绘画媒介进行综合处理。这种艺术形式在融会贯通的基础上不断创造新的可能性。 2. 综合材料绘画的特点 材料多样性:综合材料绘画使用各种非传统材料,如报纸、麻袋、金属等,这些材料被粘...

什么叫ai技术,什么是AI技术?

什么叫ai技术,什么是AI技术?

AI技术,即人工智能技术,是指使机器能够模拟、延伸和扩展人类智能的技术。它涵盖了多个领域,包括机器学习、自然语言处理、计算机视觉、专家系统、机器人技术等。AI技术通过算法和数据分析,使计算机能够从数据中学习、识别模式、做出决策,甚至执行复杂的任务,从而在许多领域如医疗、金融、交通、教育、娱乐等中发挥...