云服务器内容精选

  • 步骤2:单节点调试 完成工作流编排后,必要时可以针对工作流中的某个节点单独进行调试,以保证节点的成功运行。 在本案例中,需要对多语言文本翻译插件节点进行调试,步骤如下: 在工作流编排页面,单击插件节点的“”,进入插件节点的调试页面。 图15 单节点调试-1 在节点的“配置信息”输入请求参数的值以及Token值,单击“开始运行”。 其中,X-Auth-Token为文本翻译插件的鉴权参数,Token值由创建多语言文本翻译插件获取。 图16 单节点调试-2 单节点调试成功后,将在该节点显示“运行成功”字样及其运行时间。 图17 单节点调试成功示例
  • 添加或删除数据 自动学习项目中,数据来源为数据集中输入位置对应的OBS目录,当目录下的数据无法满足现有业务时,您可以在ModelArts自动学习页面中,添加或删除数据。 添加文件 在“未标注”页签下,可单击页面左上角的“添加数据”,您可以在弹出对话框中,选择本地文件上传。 上传文件格式需满足文本分类型的数据集要求。 删除文本对象 在“已标注”页签或“未标注”页签下,选中需要删除的文本对象,单击页面左上角的“删除”,在弹出的对话框中,确认删除信息后,单击“确定”。 在“已标注”页签下,您还可以勾选“选择当前页”,单击“删除”,即可删除当前页下所有的文本对象及其标注信息。
  • 修改标签 针对文本分类的自动学习项目,项目创建成功后,您可以根据业务变化,修改用于标注的标签。支持添加、修改和删除标签。 添加标签 在“未标注”页签下,单击“标签集”右侧的加号,在弹出“新增标签”对话框中,设置“标签名称”和“标签颜色”,然后单击“确定”完成标签添加。 修改标签 在“已标注”页签中“全部标签”的下方操作列,选择需要修改的标签,单击操作列的编辑图标,在弹出“修改标签”对话框中,修改“标签名称”或“标签颜色”,然后单击“确定”完成标签修改。 删除标签 在“已标注”页签中“全部标签”的下方,选择需要删除的标签,单击操作列的删除图标,在弹出“删除”对话框中,选择“仅删除标签”或“删除标签及仅包含此标签的标注对象”,然后单击“确定”完成标签删除。 所有的删除操作均不可恢复,请谨慎操作。
  • 配置 在配置中,设置翻牌器组件的样式和动画。 图4 翻牌器配置 样式设置 字体:设置翻牌器字体、大小和颜色等。 数字背景:翻牌器中数字是否显示背景。“动画类型”设置为“翻牌类型”时,不支持隐藏背景。 数字背景颜色:设置翻牌器中数字的背景颜色。“数字背景”设置为“显示”时,才会显示该参数。 数字间隔:设置翻牌器数字之间的距离,单位为px。 卡片内边距:设置翻牌器数字与组件卡片之间的边距。 千分逗号:数字是否显示千分逗号,默认为“显示”。 标题:翻牌器标题是否显示,默认为“隐藏”。 标题内容:设置标题的内容。“标题”设置为“显示”时,才显示该参数。 标题对齐方式:设置标题的对齐方式,支持左对齐、居中和右对齐。“标题”设置为“显示”时,才显示该参数。 标题字体:设置标题的字体、大小和颜色。“标题”设置为“显示”时,才显示该参数。 单位:是否显示单位,默认为“隐藏”。 单位内容:设置单位的内容。“单位”设置为“显示”时,才会显示该参数。 单位字体:设置单位的字体、大小和颜色。“单位”设置为“显示”时,才会显示该参数。 动画设置 动画类型:设置翻牌器动画类型,支持普通类型、滚动类型和翻牌类型。 动画时间:设置动画时间,取值范围为[200, 100000],单位为ms。 单次变换间隔:设置动画单次变换间隔时间,取值范围为[50, 1000],单位为ms。
  • 卡片 卡片是指包裹图表组件的外层架构,可以理解为组件由卡片中基础元素(卡片标题、图表、卡片背景、卡片边框)和图表元素构成。 图3 翻牌器卡片 背景 背景色:设置组件卡片的背景颜色。 边框:组件卡片边框设置,支持无边框、全边框和角边框三种样式。设置为全边框和角边框时,支持设置组件外圈边框的线型、圆角等。 样式:选择图片时,图片显示的样式,支持普通、居中、拉伸和平铺四种样式。 选择图片:使用本地的图片作为组件背景,支持新增目录和子目录,便于对图片进行分类管理。推荐使用JPG、JPEG、PNG或GIF格式的图片,且每张图片不能超过50MB。 特效:组件是否高亮显示,支持默认展示和跳转到页面时展示。 边距:组件中图表距离整个组件四边(上、下、左、右,如图2)的距离,默认为0,即铺满整个组件。
  • 工作流节点设计 选取工作流的几个重要节点,每个节点负责特定的任务。以下是各节点的功能和设计思路: 开始节点:作为工作流的入口,开始节点负责接收用户输入的文本。无论是普通对话文本,还是包含翻译请求的文本,都将从此节点开始。 意图识别节点:该节点对用户输入的文本进行分类和分析,识别出用户的意图。主要包括以下两种意图: 文本翻译意图:系统识别出用户希望进行文本翻译的请求。 其他意图:包括普通对话、问答、或其他功能请求。该分支最终会引导文本到大模型节点进行处理。 提问器节点:当意图识别为“文本翻译”意图时,工作流将进入提问器节点。该节点主要负责提问用户翻译需求(如翻译文本、目标语言等)。 文本翻译插件节点:在翻译意图分支中,文本翻译插件节点负责调用华为云文本翻译API,实现从源语言到目标语言的翻译过程。插件将翻译结果返回,传递给结束节点。 大模型节点:如果用户的意图属于“其他”意图分支(如普通对话),则文本将被引导到大模型节点。大模型节点基于预训练的盘古NLP大模型生成响应,从而实现 自然语言理解 和生成。完成后,结果传递给结束节点。 结束节点:工作流的终结节点,负责输出最终结果。无论是翻译结果还是大模型生成的回答,都会通过该节点输出给用户。
  • 关键字加工 e_kv函数和e_kv_delimit函数都可以通过prefix="", suffix=""对关键字和值进行加工。 原始日志 { "content":"q=asd&a=1&b=2"} 加工规则(各语句分开执行,功能相同) e_kv("content", sep="=", quote='"', prefix="start_", suffix="_end")e_kv_delimit("content", pair_sep=r"&", kv_sep="=", prefix="start_", suffix="_end")e_regex("content",r"(\w+)=([a-zA-Z0-9]+)",{r"start_\1_end": r"\2"}) 加工结果 加工后的数据都是关键字加工形式,如下: {"start_b_end": 2,"start_a_end": 1,"start_q_end": "asd","content": "q=asd&a=1&b=2"} e_regex函数对关键字加工的能力更强,例如: 加工规则 e_regex("content",r"(\w+)=([a-zA-Z0-9]+)",{r"\1_\1": r"\2"}) 加工结果 加工后的数据都是关键字加工形式,如下: {"q_q": "asd","a_a": 1,"b_b": 2,"content": "q=asd&a=1&b=2"}
  • 值加工 日志格式为k1:"v1\"abc"形式, 同时值加工的内容存在有双引号符号的情形,使用e_kv函数可正常进行提取。 原始日志 """这里的\只是普通的符号,不是转义符"""{ "content":"k1:\"v1\\\"abc\", k2:\"v2\", k3: \"v3\""} 加工规则: e_kv("content",sep=":", quote='"') 加工结果 提取后的日志为: {"k1": "v1\\","k2": "v2","k3": "v3","content": "k1:\"v1\\\"abc\", k2:\"v2\", k3: \"v3\""}
  • 常用方案比较 字符串动态键值对提取分为关键字提取、值提取、关键字加工和值加工,常用方案为采用e_kv函数、e_kv_delimit函数和e_regex函数等。不同提取场景的三种方案如下: 方案 关键字提取 值提取 关键字加工 值加工 e_kv 使用特定正则表达式 支持默认的字符集、特定分隔符或者带(、)或(")分隔 支持前后缀 支持文本escape e_kv_delimit 使用特定正则表达式 使用分隔符 支持前后缀 默认无 e_regex 组合自定义正则表达式和默认字符集过滤 完全自定义 自定义 自定义 大部分键值对的提取使用e_kv函数并配置特定参数就可以很好地满足,尤其是带括字符和反斜杠需要提取并转义时。其他复杂或高级的场景可以用e_regex函数来提取。部分特定场景下的键值对使用e_kv_delimit函数会更简单。
  • 值提取 动态键值对之间以及关键字与值之间有明确标识,如a=b或a="cxxx"日志格式的,推荐用e_kv函数,示例如下。 原始日志 { "content":"k=\"helloworld\",the change world, k2=\"good\""} 加工规则 这种情况下使用e_kv函数,提取内容不包括the change world: e_kv("content")# e_regex函数写法e_regex("content",r"(\w+)=\"(\w+)",{r"\1": r"\2"}) 加工结果:提取后的日志为: {"k2": "good","k": "helloworld","content": "k=\"helloworld\",the change world, k2=\"good\""} 对带"的日志格式content:k1="v1=1"&k2=v2?k3=v3,推荐使用e_kv函数进行提取,例如: 原始日志 { "content":"k1=\"v1=1\"&k2=v2?k3=v3"} 加工规则 e_kv("content",sep="=", quote="'") 加工结果 处理后日志为: {"k1": "v1=1","k2": "v2","k3": "v3","content": "k1=\"v1=1\"&k2=v2?k3=v3"}
  • 关键字提取 示例1 以k1: q=asd&a=1&b=2&__1__=3日志为例,如果要对该格式的日志作为关键字和值提取,三种方案如下: e_kv函数 原始日志 { "k1":"q=asd&a=1&b=2&__1__=3"} 加工规则 e_kv("k1") 加工结果 {"q": "asd","a": 1,"b": 2,"k1": "q=asd&a=1&b=2&__1__=3","__1__": 3} e_kv_delimit函数 原始日志 { "k1":"q=asd&a=1&b=2&__1__=3"} 加工规则 # 以&分隔键值后,用&分隔提取出关键字e_kv_delimit("k1", pair_sep=r"&") 加工结果 {"q": "asd","a": 1,"b": 2,"k1": "q=asd&a=1&b=2&__1__=3","__1__": 3} e_regex函数 原始日志 { "k1":"q=asd&a=1&b=2&__1__=3"} 加工规则 # 自行指定字符集提取关键字和值e_regex("k1",r"(\w+)=([a-zA-Z0-9]+)",{r"\1": r"\2"}) 加工结果 {"q": "asd","a": 1,"b": 2,"k1": "q=asd&a=1&b=2&__1__=3","__1__": 3} 示例2 以content:k1=v1&k2=v2?k3:v3为例,需要特定正则提取关键字,方案如下: e_kv_delimit函数 原始日志 { "content":"k1=v1&k2=v2?k3:v3"} 加工规则 e_kv_delimit("content",pair_sep=r"&?",kv_sep="(?:=|:)") 加工结果 {"k1": "v1","k2": "v2","k3": "v3","content": "k1=v1&k2=v2?k3:v3"} e_regex函数 原始日志 { "content":"k1=v1&k2=v2?k3:v3"} 加工规则 e_regex("content",r"([a-zA-Z0-9]+)[=|:]([a-zA-Z0-9]+)",{r"\1": r"\2"}) 加工结果 {"k1": "v1","k2": "v2","k3": "v3","content": "k1=v1&k2=v2?k3:v3"}
  • 样式 尺寸位置 W:设置图表的宽,单位为px。 H:设置图表的高,单位px。 X:设置图表在画布中的位置。单位为px。 Y:设置图表在画布中的位置。单位为px。 不透明度:设置图表在画布上的透明度,可通过滑动条进行设置,也可手动输入百分比,比例越大透明程度越低。 图1 尺寸位置 全局样式:可设置组件的字体类型。 基础图表 合并数据为其他:勾选“合并数据为其他”,矩形树图显示数据区块为设置合并后区块数量;不勾选显示数据区块为字段中“查询返回数限制”的数量。 合并区块数量:用户可自定义设置,设置数量不能少于2个数据区块。如果设置的合并数量大于矩形树“查询返回数限制”的数值,矩形树显示数据块数则按照“查询返回数限制”数量显示。 区 域名 称:用户可根据使用场景自定义设置。 标签 文本:可设置标签的字号、颜色、字体粗细。字号设置范围10~100。 占比:支持矩形树图占比色设置。设置占比小数位显示范围0~10。 度量:支持矩形树图设置度量显示与不显示。 数值设置:支持对数值的语境、单位、科学计数法、使用千分位分割符、小数位的设置。 提示信息 显示/隐藏提示信息:勾选表示预览或查看发布组件时显示的提示信息;不勾选表示预览或查看发布组件时不显示提示信息。 可设置提示信息的字号大小、颜色、字体粗细。字号范围10~100。 系列 配色方案:支持默认色、经典、舒适、智能、数据、艺术、SaaS规范的配色方案。 图2 配色方案 系列:支持对系列颜色的配置(纯色)。 图3 系列颜色配置 总计 显示/隐藏总计:单击“显示总计”左侧的勾选框,表示显示总计,表示不显示总计。 自定义名称:用户可根据使用场景自定义总计名称。 可设置总计名称、数值的字号大小、颜色、字体粗细。字号范围10~100。
  • 搜索表 本章节主要介绍如何使用文本搜索运算符搜索数据库表。 一个简单查询:将body字段中包含science的每一行打印出来。 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132 DROP SCHEMA IF EXISTS tsearch CASCADE;CREATE SCHEMA tsearch;CREATE TABLE tsearch.pgweb(id int, body text, title text, last_mod_date date);INSERT INTO tsearch.pgweb VALUES(1, 'Philology is the study of words, especially the history and development of the words in a particular language or group of languages.', 'Philology', '2010-1-1');INSERT INTO tsearch.pgweb VALUES(2, 'Mathematics is the science that deals with the logic of shape, quantity and arrangement.', 'Mathematics', '2010-1-1');INSERT INTO tsearch.pgweb VALUES(3, 'Computer science is the study of processes that interact with data and that can be represented as data in the form of programs.', 'Computer science', '2010-1-1');INSERT INTO tsearch.pgweb VALUES(4, 'Chemistry is the scientific discipline involved with elements and compounds composed of atoms, molecules and ions.', 'Chemistry', '2010-1-1');INSERT INTO tsearch.pgweb VALUES(5, 'Geography is a field of science devoted to the study of the lands, features, inhabitants, and phenomena of the Earth and planets.', 'Geography', '2010-1-1');INSERT INTO tsearch.pgweb VALUES(6, 'History is a subject studied in schools, colleges, and universities that deals with events that have happened in the past.', 'History', '2010-1-1');INSERT INTO tsearch.pgweb VALUES(7, 'Medical science is the science of dealing with the maintenance of health and the prevention and treatment of disease.', 'Medical science', '2010-1-1');INSERT INTO tsearch.pgweb VALUES(8, 'Physics is one of the most fundamental scientific disciplines, and its main goal is to understand how the universe behaves.', 'Physics', '2010-1-1');SELECT id, body, title FROM tsearch.pgweb WHERE to_tsvector('english', body) @@ to_tsquery('english', 'science'); id | body | title ----+-------------------------------------------------------------------------------------------------------------------------+--------- 2 | Mathematics is the science that deals with the logic of shape, quantity and arrangement. | Mathematics 3 | Computer science is the study of processes that interact with data and that can be represented as data in the form of programs. | Computer science 5 | Geography is a field of science devoted to the study of the lands, features, inhabitants, and phenomena of the Earth and planets. | Geography 7 | Medical science is the science of dealing with the maintenance of health and the prevention and treatment of disease. | Medical science(4 rows) 像science这样的相关词都会被找到,因为这些词都被处理成了相同标准的词条。 上面的查询指定english配置来解析和规范化字符串。也可以省略此配置,通过default_text_search_config进行配置设置: 1 2 3 4 5 6 7 8 910111213141516 SHOW default_text_search_config; default_text_search_config ---------------------------- pg_catalog.english(1 row)SELECT id, body, title FROM tsearch.pgweb WHERE to_tsvector(body) @@ to_tsquery('science'); id | body | title ----+-------------------------------------------------------------------------------------------------------------------------+--------- 2 | Mathematics is the science that deals with the logic of shape, quantity and arrangement. | Mathematics 3 | Computer science is the study of processes that interact with data and that can be represented as data in the form of programs. | Computer science 5 | Geography is a field of science devoted to the study of the lands, features, inhabitants, and phenomena of the Earth and planets. | Geography 7 | Medical science is the science of dealing with the maintenance of health and the prevention and treatment of disease. | Medical science(4 rows) 一个复杂查询:检索出在title或者body字段中包含treatment和science的最近10篇文档: 12345 SELECT title FROM tsearch.pgweb WHERE to_tsvector(title || ' ' || body) @@ to_tsquery('treatment & science') ORDER BY last_mod_date DESC LIMIT 10; title --------Medical science(1 rows) 为了清晰,举例中没有调用coalesce函数在两个字段中查找包含NULL的行。 以上例子均在没有索引的情况下进行查询。对于大多数应用程序来说,这个方法很慢。因此除了偶尔的特定搜索,文本搜索在实际使用中通常需要创建索引。 父主题: 在数据库表中搜索文本
  • 解析器测试 函数ts_parse可以直接测试文本搜索解析器。 12 ts_parse(parser_name text, document text, OUT tokid integer, OUT token text) returns setof record ts_parse解析指定的document并返回一系列的记录,一条记录代表一个解析生成的token。每条记录包括标识token类型的tokid,及token文本。比如: 1 2 3 4 5 6 7 8 910 SELECT * FROM ts_parse('default', '123 - a number'); tokid | token-------+-------- 22 | 123 12 | 12 | - 1 | a 12 | 1 | number(6 rows) 12 ts_token_type(parser_name text, OUT tokid integer, OUT alias text, OUT description text) returns setof record ts_token_type返回一个表,这个表描述了指定解析器可以识别的每种token类型。对于每个token类型,表中给出了整数类型的tokid--用于解析器标记对应的token类型;alias——命名分词器命令中的token类型;及简单描述。比如: 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627 SELECT * FROM ts_token_type('default'); tokid | alias | description -------+-----------------+------------------------------------------ 1 | asciiword | Word, all ASCII 2 | word | Word, all letters 3 | numword | Word, letters and digits 4 | email | Email address 5 | url | URL 6 | host | Host 7 | sfloat | Scientific notation 8 | version | Version number 9 | hword_numpart | Hyphenated word part, letters and digits 10 | hword_part | Hyphenated word part, all letters 11 | hword_asciipart | Hyphenated word part, all ASCII 12 | blank | Space symbols 13 | tag | XML tag 14 | protocol | Protocol head 15 | numhword | Hyphenated word, letters and digits 16 | asciihword | Hyphenated word, all ASCII 17 | hword | Hyphenated word, all letters 18 | url_path | URL path 19 | file | File or path name 20 | float | Decimal notation 21 | int | Signed integer 22 | uint | Unsigned integer 23 | entity | XML entity(23 rows) 父主题: 测试和调试文本搜索
  • 解析文档 GaussDB (DWS)中提供了to_tsvector函数把文档处理成tsvector数据类型。 1 to_tsvector([ config regconfig, ] document text) returns tsvector to_tsvector将文本文档解析为token,再将token简化到词素,并返回一个tsvector。其中tsvector中列出了词素及它们在文档中的位置。文档是根据指定的或默认的文本搜索分词器进行处理的。这里有一个简单的例子: 1234 SELECT to_tsvector('english', 'a fat cat sat on a mat - it ate a fat rats'); to_tsvector----------------------------------------------------- 'ate':9 'cat':3 'fat':2,11 'mat':7 'rat':12 'sat':4 通过以上例子可发现结果tsvector不包含词a、on或者it,rats变成rat,并且忽略标点符号-。 to_tsvector函数内部调用一个解析器,将文档的文本分解成token并给每个token指定一个类型。对于每个token,有一系列词典可供查询。词典系列因token类型的不同而不同。识别token的第一本词典将发出一个或多个标准词素来表示token。例如: rats变成rat因为词典认为词rats是rat的复数形式。 有些词被作为停用词(请参考停用词),这样它们就会被忽略,因为它们出现得太过频繁以致于搜索中没有用处。比如例子中的a、on和it。 如果没有词典识别token,那么它也被忽略。在这个例子中,符号“-”被忽略,因为词典没有给它分配token类型(空间符号),即空间符号永远不会被索引。 语法解析器、词典和要索引的token类型由选定的文本搜索分词器决定。可以在同一个数据库中有多种不同的分词器,以及提供各种语言的预定义分词器。在以上例子中,使用缺省分词器english。 函数setweight可以给tsvector的记录加权重,权重是字母A、B、C、D之一。这通常用于标记来自文档不同部分的记录,比如标题、正文。之后,这些信息可以用于排序搜索结果。 因为to_tsvector(NULL)会返回空,当字段可能是空的时候,建议使用coalesce。以下是推荐的为结构化文档创建tsvector的方法: 1 2 3 4 5 6 7 8 910 CREATE TABLE tsearch.tt (id int, title text, keyword text, abstract text, body text, ti tsvector);INSERT INTO tsearch.tt(id, title, keyword, abstract, body) VALUES (1, 'book', 'literature', 'Ancient poetry','Tang poem Song jambic verse');UPDATE tsearch.tt SET ti = setweight(to_tsvector(coalesce(title,'')), 'A') || setweight(to_tsvector(coalesce(keyword,'')), 'B') || setweight(to_tsvector(coalesce(abstract,'')), 'C') || setweight(to_tsvector(coalesce(body,'')), 'D');DROP TABLE tsearch.tt; 上例使用setweight标记已完成的tsvector中的每个词的来源,并且使用tsvector连接操作符||合并标记过的tsvector值,处理tsvector一节详细介绍了这些操作。 父主题: 控制文本搜索