自然语言处理(NLP)——使用Rasa创建聊天机器人

1 基本概念

1.1 自然语言处理的分类

        IR-BOT:检索型问答系统

        Task-bot:任务型对话系统

        Chitchat-bot:闲聊系统

1.2 任务型对话Task-Bot:task-oriented bot

        这张图展示了一个语音对话系统(或聊天机器人)的基本组成部分和它们之间的工作流程。这个系统可以接受语音信号作为输入,输出文本响应,并且它包括以下几个主要部分:

1.2.1 自动语音识别(ASR)

        这个部分的任务是将用户的语音信号转换成文本。在这个例子中,ASR将语音信号识别为文本输入“Are there any action movies to see this weekend?”

1.2.2 语言理解(SLU)

        一旦语音转换为文本,语言理解部分就开始工作,包括三个子任务:
        领域识别(Domain Identification):确定用户的请求属于哪一个领域或类别,例如电影、音乐或天气等。
        用户意图检测(User Intent Detection):识别用户的目的或意图,例如询问电影信息、预订餐厅等。
        槽位填充(Slot Filling):从用户的话中提取具体信息,如电影类型、日期、时间等。

1.2.3 语义框架(Semantic Frame)

        这是语言理解的结果,它结构化地表达了用户的请求,包括动作(如请求电影)、属性(如类型是动作片)和时间(如这个周末)。

1.2.4 对话管理(DM)

        对话管理组件控制对话的流程,并决定如何响应用户的输入。它包括两个部分:
                对话状态跟踪(DST):保持对话的当前状态,追踪对话历史和用户提供的信息。
                对话策略(Dialogue Policy):基于对话的当前状态和过去的交互,决定下一步的最佳动作。

1.2.5 自然语言生成(NLG)

        这个部分根据对话管理系统的输出生成自然语言文本。例如,如果系统需要知道用户的位置,NLG会生成问题“Where are you located?”

        这张图通过展示从语音输入到文本响应的完整流程,概述了一个典型的语音对话系统的工作方式。这种系统可以用于各种应用,如虚拟助手、客服聊天机器人等。

1.2.6 SLU的深入学习

1.2.6.1 SLU的结构

        结构化表示自然语言的语言:act-slot-value tuples

        act1(slot1=value1,slot2=value2,...).act2(slot1=value1,......),....

        accttype ,slot,value的取值范围已预先定义好

        ”您好韩小姐,麻烦提供下手机号哦“——>request(phone,name=韩小姐)

1.2.6.2 实现SLU的技术
1.2.6.2.1 语法分析

        通过语法以及语法结构分析出客户意图与槽值。

1.2.6.2.2 Semantic tagging eg. HMM,CRF

        给句子进行手动标柱槽值,进行机器学习训练

1.2.6.2.3 分类的思想

        使用多个分类器,对句子内容进行分类

1.2.6.2.4 深度学习

        建立神经网络,蛋速度慢

1.2.7 DST的深入学习

        对话状态应该包含持续对话所需要的各种信息

        DST问题:依据最新的系统和动作,更新对话状态

1.2.8 DPO的深入学习

        系统如何做出反馈动作

                作为序列决策过程进行优化:增强学习

1.2.9 自然语言生成NLG的深入学习

        基于模版:已经为您预定{time}的电影(movie_name)

        基于语法规则

        生成模型方法

1.2.10 其他类型的Task-Bot

Microsoft:End-to-End Task-Completion Neural Dialogue Systems

2 Rasa的学习

        本节介绍如何在Rasa框架下创建聊天机器人。目的是让学生发现和学习如何使用Rasa包在Python环境下创建聊天机器人。

2.1 安装与初始化一个MoodBot

        实验室中提到的安装Rasa的命令是:

python3 -m pip install rasa --user

        安装完成后,可以通过下面的命令创建一个基于Rasa的MoodBot示例项目:

rasa init

        需要基本的命令帮助(例如训练、测试、运行机器人等),可以直接输入rasa命令或者参考它的在线文档:[Rasa文档](https://rasa.com/docs/rasa/)。

        特别是关于NLU训练、域(domains)、配置和动作(actions)的概念部分,这些都是学习如何根据自己的需求定制聊天机器人的有用资源。

2.2 文件分析

        在你的`rasa'目录下的文件夹中,有三个主要的文件:

2.2.1 credentials.yml

        credentials.yml:这个文件包含访问各种社交网络来测试聊天机器人的密钥。这些社交网络可能包括Facebook Messenger、Slack等,通过这些密钥,你的聊天机器人可以接入并在这些平台上进行交互。

# This file contains the credentials for the voice & chat platforms
# which your bot is using.
# https://rasa.com/docs/rasa/messaging-and-voice-channelsrest:
#  # you don't need to provide anything here - this channel doesn't
#  # require any credentials#facebook:
#  verify: "<verify>"
#  secret: "<your secret>"
#  page-access-token: "<your page access token>"#slack:
#  slack_token: "<your slack token>"
#  slack_channel: "<the slack channel>"
#  slack_signing_secret: "<your slack signing secret>"#socketio:
#  user_message_evt: <event name for user message>
#  bot_message_evt: <event name for bot messages>
#  session_persistence: <true/false>#mattermost:
#  url: "https://<mattermost instance>/api/v4"
#  token: "<bot token>"
#  webhook_url: "<callback URL>"# This entry is needed if you are using Rasa Enterprise. The entry represents credentials
# for the Rasa Enterprise "channel", i.e. Talk to your bot and Share with guest testers.
rasa:url: "http://localhost:5002/api"

        Rasa聊天机器人的credentials.yml配置文件,该文件用于设置不同通讯平台的认证信息。Rasa可以通过这些信息与各种社交媒体和消息传递平台进行交互,比如REST API、Facebook Messenger、Slack、Socket.IO、Mattermost等。这里列出了几个平台的配置示例

下面是每个部分的作用:

        rest: 这是一个简单的REST API,不需要特别的认证信息,您的机器人可以通过HTTP请求接收和发送消息。

        facebook: 如果您想通过Facebook Messenger使您的机器人能够交流,您需要填写验证令牌、秘密密钥和页面访问令牌。

        slack: 对于Slack集成,您需要提供Slack令牌、频道和签名秘密。

        socketio: 如果您使用的是Socket.IO,您需要定义用户消息和机器人消息的事件名称,以及是否持久化会话。

        mattermost: 类似于Slack,如果您使用Mattermost,您需要提供Mattermost实例的URL、机器人令牌和回调URL。

        最后,如果您使用的是Rasa企业版,您还需要配置Rasa通道,这样您的机器人就可以与Rasa企业版的API进行通信。

        要激活这些通道,您需要取消注释相关部分,并填写相应的认证信息。请确保在实际部署机器人时,不要将敏感的认证信息泄露到公共代码仓库或不安全的地方。在本地测试时,可以使用默认的`http://localhost:5002/api`路径作为Rasa企业通道的URL。

2.2.2 config.yml

        这个配置文件是用于配置和训练一个Rasa聊天机器人的。Rasa是一个开源的机器学习框架,用于构建对话式AI和聊天机器人。这个文件包括几个主要部分:

# The config recipe.
# https://rasa.com/docs/rasa/model-configuration/
recipe: default.v1# The assistant project unique identifier
# This default value must be replaced with a unique assistant name within your deployment
assistant_id: 20240207-103316-skinny-actuary# Configuration for Rasa NLU.
# https://rasa.com/docs/rasa/nlu/components/
language: enpipeline: null
# # No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model.
# # If you'd like to customize it, uncomment and adjust the pipeline.
# # See https://rasa.com/docs/rasa/tuning-your-model for more information.
#   - name: WhitespaceTokenizer
#   - name: RegexFeaturizer
#   - name: LexicalSyntacticFeaturizer
#   - name: CountVectorsFeaturizer
#   - name: CountVectorsFeaturizer
#     analyzer: char_wb
#     min_ngram: 1
#     max_ngram: 4
#   - name: DIETClassifier
#     epochs: 100
#     constrain_similarities: true
#   - name: EntitySynonymMapper
#   - name: ResponseSelector
#     epochs: 100
#     constrain_similarities: true
#   - name: FallbackClassifier
#     threshold: 0.3
#     ambiguity_threshold: 0.1# Configuration for Rasa Core.
# https://rasa.com/docs/rasa/core/policies/
policies: null
# # No configuration for policies was provided. The following default policies were used to train your model.
# # If you'd like to customize them, uncomment and adjust the policies.
# # See https://rasa.com/docs/rasa/policies for more information.
#   - name: MemoizationPolicy
#   - name: RulePolicy
#   - name: UnexpecTEDIntentPolicy
#     max_history: 5
#     epochs: 100
#   - name: TEDPolicy
#     max_history: 5
#     epochs: 100
#     constrain_similarities: true

        recipe: default.v1:这指定了Rasa使用的训练配方。`default.v1`是Rasa提供的默认配方。

        assistant_id:20240207-103316-skinny-actuary - 这是聊天机器人项目的唯一标识符。在部署中,这个默认值需要替换为一个独一无二的助手名称。

        language: en:这指定了机器人用于理解和生成语言的语言代码。这里的`en`代表英语。

        pipeline:这部分用于配置Rasa NLU(自然语言理解)的处理流水线。这里没有提供具体配置,而是使用了Rasa的默认流水线。如果你想自定义流水线,可以取消注释并调整下面的配置。这个流水线包括文本的分词、特征提取、意图识别和实体抽取等步骤。

        policies:这部分用于配置Rasa Core的决策策略,这些策略决定了机器人如何根据用户的输入选择回应。同样,这里没有提供具体配置,而是使用了默认的策略。如果你想自定义策略,可以取消注释并调整下面的配置。这些策略包括对话管理的规则、意图预测的模型等。

        总之,这个配置文件为Rasa聊天机器人的训练提供了基础的设置,包括使用的语言、处理流水线和对话策略。你可以根据需要修改这个文件来定制你的聊天机器人。

2.2.3 domain.yml

        domain.yml 文件是 Rasa 项目中的一个重要文件,包含了聊天机器人的所有关键数据。其中包括意图(intents)、动作(actions)、动作的响应(responses to actions),以及在比 Moodbot 更复杂的其他机器人中可能还包括插槽(slots)和模板(templates)等内容。

2.2.3.1 意图(Intents)

        意图代表用户消息背后的意图或目标。例如,如果用户请求帮助,相应的意图可能是 `help`。

2.2.3.2 动作(Actions)

        动作是机器人的响应或行为。这可以包括发送消息、执行操作或查询外部API等。

2.2.3.3 动作的响应(Responses to Actions)

        这些是机器人在执行动作后将发送给用户的消息或响应。它们可以是简单的文本消息,也可以是涉及自定义模板等更复杂的响应。

2.2.3.4 插槽(Slots)

        插槽是机器人需要从用户那里收集的信息片段,以完成任务。例如,如果机器人正在帮助用户预订航班,它可能需要插槽来存储出发城市、目的地城市和出行日期等信息。

2.2.3.5 模板(Templates)

        模板是预定义的响应,机器人可以使用它们来生成消息。这些可以包括用于动态内容(如插槽值或从用户消息中提取的实体)的占位符。

        domain.yml文件充当了组织和管理机器人功能的中心枢纽。它有助于定义机器人的行为并指导其与用户的交互。

2.2.4 data/nlu.yml

        在这个文件夹里我们找到了与所有意图相对应的句子,例如

version: "3.1"nlu:
- intent: greetexamples: |- hey- hello- hi- hello there- good morning- good evening- moin- hey there- let's go- hey dude- goodmorning- goodevening- good afternoon- intent: goodbyeexamples: |- cu- good by- cee you later- good night- bye- goodbye- have a nice day- see you around- bye bye- see you later- intent: affirmexamples: |- yes- y- indeed- of course- that sounds good- correct- intent: denyexamples: |- no- n- never- I don't think so- don't like that- no way- not really- intent: mood_greatexamples: |- perfect- great- amazing- feeling like a king- wonderful- I am feeling very good- I am great- I am amazing- I am going to save the world- super stoked- extremely good- so so perfect- so good- so perfect- intent: mood_unhappyexamples: |- my day was horrible- I am sad- I don't feel very well- I am disappointed- super sad- I'm so sad- sad- very sad- unhappy- not good- not very good- extremly sad- so saad- so sad- intent: bot_challengeexamples: |- are you a bot?- are you a human?- am I talking to a bot?- am I talking to a human?- intent: GetInfo_winlossRecordexamples: |- I need to know the record of [Manchester City](team).- I'm wondering what record right now does [West Ham](team) have?- How is [Watford](team) doing?- What is [AFC Bournemouth](team) record right now?- I am looking for information about the soccer team called[Burnley](team).- I want to know the record of [Aston Villa](team).

        举例说明:

nlu:
- intent: greetexamples: |- hey- hello- hi- hello there- good morning- good evening- moin- hey there- let's go- hey dude- goodmorning- goodevening- good afternoon

        这段代码是一个Rasa NLU(Natural Language Understanding)的配置文件,用于定义意图(intent)以及它们的示例(examples)。这个配置文件中定义了一个名为"greet"的意图,该意图用于识别用户打招呼的消息。示例中包括了一些常见的打招呼方式,比如"hey"、"hello"、"hi"等等。

- intent: GetInfo_winlossRecordexamples: |- I need to know the record of [Manchester City](team).- I'm wondering what record right now does [West Ham](team) have?- How is [Watford](team) doing?- What is [AFC Bournemouth](team) record right now?- I am looking for information about the soccer team called[Burnley](team).- I want to know the record of [Aston Villa](team).

        这段代码定义了一个名为"GetInfo_winlossRecord"的意图,用于识别用户想要获取足球球队战绩信息的消息。示例中包括了一些询问特定足球球队战绩的例子,每个例子都包含了一个"team"实体,用于指定感兴趣的球队名称。

2.2.5 data/stories.yml

        这是 rasa 最具创新性的部分:您可以给出可能发生的讨论场景,而不是定义一个讨论有限状态自动机。用多个讨论发生的场景来代替有限状态机。例如:

version: "3.1"stories:- story: happy pathsteps:- intent: greet- action: utter_greet- intent: mood_great- action: utter_happy- story: sad path 1steps:- intent: greet- action: utter_greet- intent: mood_unhappy- action: utter_cheer_up- action: utter_did_that_help- intent: affirm- action: utter_happy- story: sad path 2steps:- intent: greet- action: utter_greet- intent: mood_unhappy- action: utter_cheer_up- action: utter_did_that_help- intent: deny- action: utter_goodbye- story: GetInfo winlossRecordsteps:- intent: GetInfo_winlossRecord- action: action_winlossRecord

        举例说明:

- story: happy pathsteps:- intent: greet- action: utter_greet- intent: mood_great- action: utter_happy

        这段代码定义了一个名为"happy path"的故事,描述了用户的一种顺利的对话路径。故事包括了以下步骤:

        a.用户发送了一个打招呼的意图(greet)。
        b.系统执行了一个回复动作(action),输出了一个问候语(utter_greet)。
        c.用户表达了愉快的心情(mood_great)。
        d.系统再次执行了一个回复动作,输出了一个愉快的回复(utter_happy)。

        这个故事描述了一种典型的对话流程,用户首先打招呼,然后表达了愉快的心情,系统随后作出了相应的回应。

        我们可以看到被识别的意图,然后是行动。我们进入了一个循环:识别意图、行动、用户反应、再一次意图,如此循环。

2.3 训练与测试

我们训练模型使用:
rasa train
我们测试模型使用:
rasa shell

2.4 闲聊与问答(Chitchat and FAQs)

        可以通过这个链接获得更多帮助:https://rasa.com/docs/rasa/chitchat-faqs/

3. Rasa chatbot多人开发项目

3.1 项目要求

3.1.1 总体要求

        a. 使用Rasa开源框架:

        - 建议(但不强制)使用Rasa框架来开发聊天机器人。

        b. 超越Rasa默认功能

        - 应用在学习过程中了解到的技术和原则。
        - 至少采用一种基于知识的技术,如本体论、逻辑推理、词网、同义词等。
        - 至少采用一种基于学习的技术,如频率方法、统计机器学习、深度学习等。
        - 至少采用一种基于语法的技术,如句法分析、正则表达式、词形还原、形态分析等。

3.1.2 5人分工示例

        - 一个人负责整体Rasa流水线的设置、组件集成和测试;
        - 一个人负责对话逻辑、意图、自然语言理解(NLU)、故事等的设计和实现;
        - 一个人负责基于知识的组件的设计和实现;
        - 一个人负责基于学习的组件的设计和实现;
        - 一个人负责基于语法的组件的设计和实现。

3.1.3 对于知识、学习、语法组件的理解

        在您的聊天机器人项目中,团队成员将根据不同的技术专长分工。这里提到的“基于知识的组件”、“基于学习的组件”和“基于语法的组件”分别指的是:

3.1.3.1 基于知识的组件(Knowledge-based Component)

        这指的是利用预先定义的知识体系(如本体论、逻辑推理结构、词网、同义词数据库等)来增强聊天机器人的理解和响应能力。设计和实现这样的组件涉及到构建一个知识库或使用现有的知识库,使得聊天机器人可以参照这些知识来理解用户的意图和提供信息。
        在Rasa中,你可以通过自定义actions和slots来实现基于知识的组件。自定义actions允许你编写Python代码来访问外部知识库或服务,比如图数据库、SQL数据库或者其他API,从而在对话中使用这些知识。
        可以使用Rasa的Entity Extraction来识别对话中的关键信息,并用这些信息查询知识库,从而提供有针对性的回答。
        通过这种方式,你的聊天机器人可以使用逻辑推理和结构化的知识(如本体论)来处理用户的询问。

3.1.3.2 基于学习的组件(Learning-based Component)

        这涉及到使用机器学习方法来使聊天机器人从数据中学习。这可能包括频率方法、统计学习模型或深度学习模型。这样的组件可能负责识别用户意图、文本分类、情感分析等,通常需要大量的数据来训练模型。
        Rasa使用机器学习来训练模型,理解用户的意图(intent recognition)和提取实体(entity extraction)。
        它支持多种类型的机器学习模型,包括预先训练好的模型和你可以自定义训练的模型。这些模型用于处理自然语言理解(NLU)和对话管理(Dialogue Management)。
        Rasa允许使用自定义的机器学习管道和策略,你可以在这里加入深度学习或其他统计机器学习算法。

3.1.3.3 基于语法的组件(Grammar-based Component)

        这指的是使用语言学的方法来解析和生成语言。这可能涉及句法分析(分析句子结构)、使用正则表达式(用于模式匹配)、词形还原(将词汇还原为基本形式)、形态分析(分析词汇的形态结构)等技术。这样的组件用于提升聊天机器人处理语言的精确性。

每个组件都有其在聊天机器人中的独特作用,三者合作能够使得机器人更加智能和高效。例如,基于知识的组件可以提供准确的专业信息,基于学习的组件可以从用户对话中学习并提高对话质量,而基于语法的组件可以确保语言的正确性和流畅性。

        项目要求强调了除了技术实现之外,设计理念的重要性。你的聊天机器人需要基于理论知识构建,同时还需要注意合规性和道德问题。在项目过程中,团队成员之间的协作和分工也是非常重要的。
        虽然Rasa主要侧重于机器学习方法,但你仍然可以使用正则表达式和其他语法分析技术来改善对话流程。
        例如,可以在NLU组件中使用RegexFeaturizer来改善实体识别的性能,或者用于识别和验证特定的数据格式(如日期和时间)。
        对于词形还原和形态分析,可以在数据预处理阶段或通过自定义组件来实现。这可能需要与其他工具或库集成,比如Spacy或NLTK。

        通过结合这些技术,你可以创建一个更加强大和灵活的聊天机器人,能够理解和回应用户的需求。记住,在设计和实现这些组件时,确保它们符合你的项目需求和规定的聊天机器人的应用领域。

3.2 有益的建议

        对于使用Rasa框架进行聊天机器人项目,以下是一些有益的建议:

3.2.1 使用规则或故事指导对话流程

        规则(Rules): 它们是硬性的限制,可以保证聊天机器人的行为是确定的。当你需要确保在某些情况下机器人始终给出特定的响应时,使用规则。
        故事(Stories): 它们通过机器学习的方式来约束聊天机器人的行为,具有概率性。故事是对话的样本路径,通过这些样本路径,Rasa的机器学习模型可以学习在不同情况下采取的行动。

3.2.2 使用表单进行槽位填充

        使用Rasa的表单(Forms)功能,可以更有效地从用户那里逐步收集数据。当你需要多个信息片段才能执行任务或响应时,表单可以确保机器人不遗漏任何必要的信息。

3.2.3 更改默认管道

        考虑使用更强大的NLP管道,比如SpacyNLP,它使用词向量来理解语言,这可以提高实体识别和意图分类的准确性。

3.2.4 使用同义词和词形还原处理变化

        同义词可以帮助机器人理解不同的词汇表示相同的概念(如“aubergine”和“eggplant”)。
        词形还原能够将单词变回其基础形式(比如将复数“apples”还原为单数“apple”),从而简化处理流程并增加机器人理解不同语言形式的能力。

        在项目开发过程中,这些技巧可以帮助你更好地设计对话流程,提高聊天机器人的性能,并处理自然语言的复杂性。同时,始终记得定期测试你的机器人,并根据反馈不断迭代改进。

3.3 代码成果

        通过API获取足球球队在某赛季的比赛成绩。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/674507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外贸邮件群发如何做?外贸邮件群发靠谱吗?

外贸邮件群发有哪些平台&#xff1f;外贸群发邮件用什么邮箱&#xff1f; 外贸邮件群发是许多企业在开展国际贸易时常用的营销手段&#xff0c;它不仅能够快速地将产品信息和促销活动传达给目标客户&#xff0c;还能够有效地建立和维护客户关系。下面&#xff0c;就让蜂邮探讨…

跟着pink老师前端入门教程-day21+22

5.4 常见flex布局思路 5.5 背景线性渐变 语法&#xff1a; background: linear-gradient( 起始方向 , 颜色 1, 颜色 2, ...); background: -webkit-linear-gradient(left, red , blue); background: -webkit-linear-gradient(left top, red , blue); 背景渐变必须添加浏览…

e5 服务器具备哪些性能特点?

随着云计算和大数据技术的不断发展&#xff0c;服务器作为数据中心的核心设备&#xff0c;其性能特点也日益受到关注。其中&#xff0c;E5服务器作为当前主流的服务器类型之一&#xff0c;具备许多优秀的性能特点。本文将详细介绍E5服务器的性能特点&#xff0c;帮助读者更好地…

CTFshow web(php命令执行 37-40)

?ceval($_GET[shy]);&shypassthru(cat flag.php); #逃逸过滤 ?cinclude%09$_GET[shy]?>&shyphp://filter/readconvert.base64-encode/resourceflag.php #文件包含 ?cinclude%0a$_GET[cmd]?>&cmdphp://filter/readconvert.base64-encode/…

【我与Java的成长记】之String类详解

系列文章目录 能看懂文字就能明白系列 C语言笔记传送门 Java笔记传送门 &#x1f31f; 个人主页&#xff1a;古德猫宁- &#x1f308; 信念如阳光&#xff0c;照亮前行的每一步 文章目录 系列文章目录&#x1f308; *信念如阳光&#xff0c;照亮前行的每一步* 前言一、字符串构…

【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求

文章目录 一、Origin 含义二、跨源资源共享&#xff1a;**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests&#xff1a;预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…

立面效果图为何要用云渲染100?渲染100邀请码1a12

建筑设计是一门艺术&#xff0c;而立面效果图是艺术的展现&#xff0c;它在设计中非常重要。 1、立面效果图的重要性 立面效果图能用来展示建筑物的风格、材质、色彩以及环境等因素&#xff0c;通过它&#xff0c;设计师可以检验项目质量&#xff0c;评估效果是否达到预期&…

(2024,低比特模型量化,模型微调,QuEST,TAQuant)QuEST:通过高效选择性微调进行低比特扩散模型量化

QuEST: Low-bit Diffusion Model Quantization via Efficient Selective Finetuning 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 3. 方法 3.1. 预备知识 3…

ELAdmin 的 CRUD

数据表结构 弄个测试的数据表&#xff0c;不同类型的几个字段&#xff0c;表名位 mp_reply。 生成代码 ELAdmin 可以自动生成代码。 左侧目录系统工具–代码生成&#xff0c;点开以后可以看到上面创建的数据表mp_reply&#xff0c;点击配置。 进入的页面内容有两部分&#…

DePIN+GameFi+顶级电竞团队,GAIMIN如何颠覆Web3游戏赛道

DePIN带动互联网进入去中心化时代 自从智能合约和去中心化应用DApp普及之后&#xff0c;越来越多的从业者开始将目光放在区块链对互联网的升级和改造之上&#xff0c;这里主要进行了三类&#xff0c;第一类是通过节点的去中心化来实现的&#xff0c;这样确保了基础设施的分散&a…

Zoho Mail企业邮箱商业扩展第1部分:入门

今天让我们来认识一下王雪琳&#xff0c;她是一位独立经营的营销咨询机构的个体企业家。在开始自己的事业之前&#xff0c;她进行了广泛的市场调研&#xff0c;明确了自己的业务定位&#xff0c;并全力以赴地投入到了自己的企业中。 一、创业背景 王雪琳的营销业务主要集中在…

论 Scratch 版“愤怒的小鸟”的资源(10000 余块代码)

资源链接 “愤怒的小鸟”资源&#xff1a;https://download.csdn.net/download/leyang0910/88820527 游戏 SJA 分析及&#xff1a;角色数量&#xff1a;12&#xff0c;素材数量&#xff1a;214&#xff0c;积木数量&#xff1a;1442&#xff0c;音频数量&#xff1a;11 “愤怒…

【分布式】雪花算法学习笔记

雪花算法学习笔记 来源 https://pdai.tech/md/algorithm/alg-domain-id-snowflake.html概述 雪花算法是推特开源的分布式ID生成算法&#xff0c;以划分命名空间的方式将64位分割成多个部分&#xff0c;每一个部分代表不同的含义&#xff0c;这种就是将64位划分成不同的段&…

Ondo宣布将其原生稳定币USDY带入Sui生态

重要提示&#xff1a;USDY是由短期美国国债支持的token化票据&#xff0c;持有者享受稳定币的实用性同时获得收益。USDY不得在美国或向美国人出售或以其他方式提供。USDY也未根据1933年美国证券法注册。 不到一年的时间&#xff0c;Sui已经成为全链TVL排名前十的区块链&#xf…

Stable Diffusion 模型下载:Samaritan 3d Cartoon(撒玛利亚人 3d 卡通)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 由“PromptSharingSamaritan”创作的撒玛利亚人 3d 卡通类型的大模型&#xff0c;该模型的基础模型为 SD 1.5。 条目内容类型大模型基础模型SD 1.5来源CIVITAI作者…

Android ImageView 设置圆角及外边框样式

github地址&#xff1a;GitHub - WeiLianYang/RoundImageView: &#x1f525;&#x1f525;&#x1f525;用于设置 ImageView 的 圆角、外边框颜色、外边框宽度 添加依赖 repositories {mavenCentral() } implementation io.github.weilianyang:RoundImageView:1.0.2 效果预…

C语言--------指针(1)

0.指针&指针变量 32位平台&#xff0c;指针变量是4个字节&#xff08;32bit/84)--------x86 64位平台&#xff0c;指针变量是8个字节&#xff08;64bit/88)--------x64 编号指针地址&#xff1b;我们平常讲的p是指针就是说p是一个指针变量&#xff1b; ************只要…

Django学习记录02

1.请求与响应 1.1get与post的区别 get 一般是从url输入地址&#xff0c;会调用get请求 post 一般是内部数据传输# get请求 def something(request):# req是一个对象&#xff0c;封装了用户发送过来的所有请求相关数据# 1.获取请求方式 http://localhost:8000/something# pri…

springboot基础案例(二)

文章目录 前言一.需求分析: 分析这个项目含有哪些功能模块二.库表设计(概要设计): 1.分析系统有哪些表 2.分析表与表关系 3.确定表中字段(显性字段 隐性字段(业务字段))2.1 创建一个库: ems-thymeleaf2.2 创建 2张表三.编码(环境搭建)1.创建一个springboot项目 项目名字: ems-t…

004集—二调数据库标注分子分母模式及统计净面积——arcgis

二调数据库中分子分母标注方法为&#xff1a; 表达式如下&#xff1a; "<und>"& [TBBH] &"</und>" &vbnewline& [DLBM] "<und>"&[DLBM]&"</und>" &vbnewline& [DLMC] &quo…