我和我的同事正在使用Microsoft bot框架和Microsoft LUIS构建一个非常大的应用程序.从本质上讲,我们正在尝试创建一个机器人,来自整个组织的人员可以向机器人发送消息(通过松弛)并接收相关信息.不同类型的请求涉及不同的主题领域(销售,营销,后勤和研发).如何将多个LUIS模型,实体和子实体链接在一起,以便请求在到达正确的实体之前不会查询每个实体?
现在,如果用户询问"我们今年在研究上花了多少钱?",它首先查询销售实体,然后查询营销实体,然后查询物流实体,最后在获得响应之前查询研发实体.我正在尝试限制API请求的数量.我目前知道3个可能的解决方案来处理这个路由问题,并且它们似乎都没有依赖LUIS来路由到适当的实体.
解决方案1涉及让机器人给出对应于每个域的UI选择器.
解决方案2涉及连接NLP库以从句子中提取主题,然后使用加权字典库匹配主题.
解决方案3涉及设置纯RegEx.这是我最不喜欢的解决方案,原因很明显.
使用Microsoft bot框架和Microsoft LUIS的企业级参考应用程序的链接将是一个理想的答案.
c# azure microsoft-cognitive botframework azure-language-understanding
这是从TaxiFarePrediction示例复制的ML.Net管道对象的创建.
LearningPipeline pipeline = new LearningPipeline
{
new TextLoader(TrainDataPath).CreateFrom<TaxiTrip>(separator:','),
new ColumnCopier(("FareAmount", "Label")),
new CategoricalOneHotVectorizer("VendorId","RateCode","PaymentType"),
new ColumnConcatenator("Features","VendorId","RateCode","PassengerCount","TripDistance","PaymentType"),
new FastTreeRegressor()
};
Run Code Online (Sandbox Code Playgroud)
基本上,我想在ColumnCopier,CategoricalOneHotVectorizer和ColumnConcatenator应用之后返回数据.
在 pandas 中进行元素明智乘法之后,我最终在一个数据帧元素中得到负零值,在另一个数据帧元素中得到常规零值。Python 表示它们相同,但显示方式不同。它们在什么程度上不相等?这将如何影响以后的计算?
In[100]:
import numpy as np
import pandas as pd
In[101]:
df_a = pd.DataFrame([[-5.2,3.1,2.8],[1,2,3],[4,5,4]], columns=['Col0','Col1','Col2'], index=['Row0','Row1','Row2'])
df_b = pd.DataFrame([[0,0,2],[1,2,3],[4,5,4]], columns=['Col0','Col1','Col2'], index=['Row0','Row1','Row2'])
df_c = df_a * df_b
In[102]: print df_a
Out[102]:
Col0 Col1 Col2
Row0 -5.2 3.1 2.8
Row1 1.0 2.0 3.0
Row2 4.0 5.0 4.0
In[103]: print df_b
Out[103]:
Col0 Col1 Col2
Row0 0 0 2
Row1 1 2 3
Row2 4 5 4
In[104]: print df_c
Out[104]:
Col0 Col1 Col2
Row0 -0 0 5.6
Row1 1 …Run Code Online (Sandbox Code Playgroud) c# ×2
.net-core ×1
azure ×1
azure-language-understanding ×1
botframework ×1
ml.net ×1
numpy ×1
pandas ×1
python ×1
python-2.7 ×1