我想构建一个多类分类模型,将会话数据作为 BERT 模型的输入(使用 bert-base-uncased)。
提问:我想问一个问题。
答:当然可以,问吧。
询问:今天天气怎么样?
答:天气很好,阳光明媚。
问题:好的,很高兴知道。
回答:您还想了解其他信息吗?
除此之外,我还有两个输入。
我想知道是否应该在对话中添加特殊标记,以使其对 BERT 模型更有意义,例如:
[CLS]QUERY:我想问一个问题。[EOT]
答案:当然可以,问吧。[EOT]
查询:今天天气怎么样?[EOT]
答案:天气很好,阳光明媚。[EOT]
查询:好的,很高兴知道。[EOT]
解答:您还想了解其他信息吗?[九月]
但我无法添加新的 [EOT] 特殊令牌。
或者我应该为此使用 [SEP] 令牌?
编辑:重现步骤
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
print(tokenizer.all_special_tokens) # --> ['[UNK]', '[SEP]', '[PAD]', '[CLS]', '[MASK]']
print(tokenizer.all_special_ids) # --> [100, 102, 0, 101, 103]
num_added_toks = tokenizer.add_tokens(['[EOT]'])
model.resize_token_embeddings(len(tokenizer)) # --> Embedding(30523, 768)
tokenizer.convert_tokens_to_ids('[EOT]') # --> 30522
text_to_encode = '''QUERY: I want to ask a question. [EOT]
ANSWER: Sure, ask away. …Run Code Online (Sandbox Code Playgroud) 我正在使用云功能来响应webhooks,如文档中所述.在DialogFlow上,我将所有参数都设置为可选,而我想控制动态需要哪些参数.是否可以动态设置allRequiredParamsPresent?其次,我们如何偏置下一个输入/响应以填充某个参数?
用户可以输入日期或日期范围,两者都是不同的参数.需要一个或另一个,但不是两个.
不幸的是,在控制台中,如果我根据需要设置两者,对话框不会结束(这就是我想在结束时覆盖的原因),如果我不需要它们,对话结束时不会出现所有必需的参数.
此外,根据后续问题,代理人要求从Web钩子询问,我想偏向用户的下一个答案来填充特定@sys.any参数,因为它一直填充错误的参数.
是否可以在不提示用户的情况下从意图 A 的 lambda 函数触发意图 B?
假设用户输入了一些东西并且一个意图-A 被触发,经过一些处理我想触发一些其他的意图,即意图-B。
用户还可以通过特定的话语直接触发 Intent-B。任何帮助表示赞赏。
我在从 Lambda 返回字符串后遇到问题
JSONObject.toString
Run Code Online (Sandbox Code Playgroud)
作为回报,我有
"{\"Key2\":\"Value2\",\"Key1\":\"Value1\"}"
Run Code Online (Sandbox Code Playgroud)
代替
"{"Key2":"Value2","Key1":"Value1"}"
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何排除这些斜线吗?
我在对话框流中填充插槽/参数时遇到问题。我无法搜索关于如何使用 webhooks/backend-code 进行参数填充的任何好的文档。
我的用例是,我想提取date但如果用户没有提供 YEAR 那么它应该询问用户“哪一年?”。然后填回去date。
我使用$date.partial的value,因此是给UUUU全年的一部分,但我怎么能提示用户给予一年,这样我可以在参数填充得到完整的日期。
任何帮助表示赞赏。
我从我的网页向调用 lambda 函数的 AWS API Gateway 发送发布请求。API 网关中启用了 CORS。
错误:
无法加载 api_gatewau_url:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问原始“url”。
该资源有两种方法:
如何解决CORS问题?
下面是发送post请求的代码。
$.ajax({
type: "POST",
crossDomain: true,
url: "api_gateway_url",
data: JSON.stringify({
"param1": value1,
"param2": value2
}),
Run Code Online (Sandbox Code Playgroud)
我还尝试添加带有allow origin true 等的标头,但没有成功。
最奇怪的事情是,相同的配置和请求我正在尝试使用不同的 api 网关,然后它工作正常,没有任何错误。
在DialogFlow中,我们可以根据Intent Name或Actions触发函数并执行任务.
我们应该用哪一个来决定?什么是更好的做法?
作为参考,这是有问题的流程:
"获取客户输入"(Lex) - >"设置联系人属性" - >"播放提示"
在调用Lex之后,我使用"将文本另存为属性"选项设置了一个联系人属性:
DestinationKey Value ProductType $ .Lex.SessionAttributes.ProductType
然后,在"播放提示"中,我无法引用set属性.我使用"文本到语音(Ad hoc)"并尝试了以下语法:
有趣的是,如果我在"设置联系人属性"之后添加"检查联系人属性",则它与"用户定义"属性"ProductType"匹配.
我该如何引用该属性?
我正在尝试使用 AWS Lambda 的 C# 版本在列表中打印一系列对象。它链接到我的 AWS RDS 和我的 Lex 机器人。目前,当我使用 LEX 测试控制台测试机器人时,即使我使用 C# 的 \n 换行符,打印的输出也没有格式化为换行符。
示例代码:
var result = string.Empty;
result = $"Events for {User}:";
foreach (var evt in events)
{
result += $"\n\n{evt.ID} - {evt.FeedbackType} - {evt.Status} - {evt.OpenedDate.ToString()}";
}
return result;
Run Code Online (Sandbox Code Playgroud)
下面是我在 Lex 上得到的输出:
谁能解释一下如何解决这个问题,或者它是否是 LEX 控制台的问题?谢谢!
我有两个意图 - serviceQuote和gotCar
在serviceQuote意图中,用户将输入 3 个参数 - carModel、carPrice和buyDate。他将根据参数值收到报价。
在gotCar用户可以说i just bought lamborghini。
Dialogflow 将获得carModel并启动serviceQuote事件。我想发送这个carModel值并将其分配给serviceQuote参数carModel而不提示用户。
请注意,要问carModel 的问题是serviceQuote意图设计中的第一个,并且所有 3 个参数都标记为 required。
我试图调用该事件并随它发送参数值。意图被触发但没有分配参数值,它再次向用户询问汽车型号。
'followupEventInput' : {
"parameters": {
"carModel": "aston martin",
},
'name' : 'e_serviceQuote',
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?如何实现。
我正在使用DialogFlow v2。
编辑:我试图#e_serviceQuote.carModel作为参数值输入,但 Dialogflow 控制台不允许我输入它。