月份:2019年7月
对话系统的评价指标
对于某一轮对话而言,可以使用响应的适当性、流畅度、相关性;对于多轮对话而言,我们更关注流畅性、对话深度、多样性、一致连贯性等指标;而对于整个对话系统,我们则希望他可以涵盖更多的话题、回复真实可信等等。
一.词重叠评价指标
该指标认为回答应该和真实回答之间存在大量的词重叠
1.BLEU
candidate(Predicted):机器生成的结果;reference(Gold Standard):参考句,类似于参考答案,可以多句;
Step 1:Modified n-gram Precision计算(也即Pn)
当n=1/2/3/4时的precision;首先统计候选译文里每个词(n-gram)出现的次数,然后统计每个词(n-gram)在参考译文中出现的次数,Max表示3个参考译文中的最大值,Min表示候选译文和Max两个的最小值。
以unigram为例,bigram、trigram、4-gram相同:
Step 2:Brevity Penalty 计算
if c > r: return 1 else: return math.exp(1 – r / c) c:候选句的长度;r:参考句的最大长度
Step 3:Pn * Bp
2.ROUGE
①ROUGE-N
②ROUGE-L
③ROUGE-W
④ROUGE-S
3.METEOR
二、词向量评价指标
词向量则是通过Word2Vec、Sent2Vec等方法将句子转换为向量表示,这样一个句子就被映射到一个低维空间,句向量在一定程度上表征了其含义,在通过余弦相似度等方法就可以计算两个句子之间的相似程度。
1.Greedy Matching
2.Embedding Average
3.Vector Extrema
跟上面的方法类似,也是先通过词向量计算出句向量,在使用句向量之间的余弦相似度表示二者的相似度。不过句向量的计算方法略有不同,这里采用向量极值法进行计算。
三、perplexity困惑度
四、人工指标
ref:
docker常见命令
1.docker version 显示 Docker 版本信息 2.docker info 显示 Docker 系统信息,包括镜像和容器数 3.docker search docker search [options "o">] term docker search -s django 从 Docker Hub 中搜索符合条件的镜像 --automated 只列出 automated build 类型的镜像; --no-trunc 可显示完整的镜像描述; -s 40 列出收藏数不小于40的镜像。 4.docker pull docker pull [-a "o">] [user/ "o">]name[:tag "o">] docker pull laozhu/telescope:latest 从 Docker Hub 中拉取或者更新指定镜像。 -a 拉取所有 tagged 镜像 5.docker images docker images [options "o">] [name] 列出本地所有镜像。其中 [name] 对镜像名称进行关键词查询。 -a 列出所有镜像(含过程镜像); -f 过滤镜像,如: -f ['dangling=true'] 只列出满足 dangling=true 条件的镜像; --no-trunc 可显示完整的镜像ID; -q 仅列出镜像ID。 --tree 以树状结构列出镜像的所有提交历史。 6.docker ps 列出所有运行中容器 -a 列出所有容器(含沉睡镜像); --before="nginx" 列出在某一容器之前创建的容器,接受容器名称和ID作为参数; --since="nginx" 列出在某一容器之后创建的容器,接受容器名称和ID作为参数; -f [exited=<int>] 列出满足 exited=<int> 条件的容器; -l 仅列出最新创建的一个容器; --no-trunc 显示完整的容器ID; -n=4 列出最近创建的4个容器; -q 仅列出容器ID; -s 显示容器大小。 7.docker rmi docker rmi [options "o">] <image> "o">[image...] docker rmi nginx:latest postgres:latest python:latest 从本地移除一个或多个指定的镜像 -f 强行移除该镜像,即使其正被使用; --no-prune 不移除该镜像的过程镜像,默认移除。 8.docker rm docker rm [options "o">] <container> "o">[container...] docker rm nginx-01 nginx-02 db-01 db-02 sudo docker rm -l /webapp/redis -f 强行移除该容器,即使其正在运行; -l 移除容器间的网络连接,而非容器本身; -v 移除与容器关联的空间。 9.docker start|stop|restart docker start|stop "p">|restart [options "o">] <container> "o">[container...] 启动、停止和重启一个或多个指定容器。 -a 待完成 -i 启动一个容器并进入交互模式; -t 10 停止或者重启容器的超时时间(秒),超时后系统将杀死进程。 10.docker inspect docker instpect nginx:latest docker inspect nginx-container 检查镜像或者容器的参数,默认返回 JSON 格式。 -f 指定返回值的模板文件。 11.进入容器 sudo docker exec -it 775c7c9ee1e1 /bin/bash 退出容器后容器不会停止 docker attach 44fc0f0582d9 多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示
ref:docker常用命令
网络延迟时间 Dijkstra
743. 网络延迟时间
有 N 个网络节点,标记为 1 到 N。 给定一个列表 times,表示信号经过有向边的传递时间。 times[i] = (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。 现在,我们向当前的节点 K 发送了一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1。 注意: N 的范围在 [1, 100] 之间。 K 的范围在 [1, N] 之间。 times 的长度在 [1, 6000] 之间。 所有的边 times[i] = (u, v, w) 都有 1 <= u, v <= N 且 0 <= w <= 100。
package gongel_first; import java.util.Arrays; public class Sevenhundred_fortyThree { /** * 还是考研时王道上学的Dijkstra */ private int[] dist; // private int[] path; 用于记录最短路径 private boolean[] visited; private void dijkstra(int start, int[][] times, int N) { Arrays.fill(dist, 100000); int min, u = -1; dist[start] = 0; // for (int i = 1; i <= N; i++) // path[i] = i; for (int i = 1; i <= N; i++) { min = Integer.MAX_VALUE; for (int j = 1; j <= N; j++) { if (visited[j] == false && dist[j] < min) { u = j; min = dist[j]; } } if (u == -1) continue; visited[u] = true; for (int k = 1; k <= N; k++) { if (visited[k] == false && dist[u] + times[u][k] < dist[k]) { dist[k] = dist[u] + times[u][k]; // path[k] = u; } } } } public int networkDelayTime(int[][] times, int N, int K) { dist = new int[N + 1]; // path = new int[N+1]; visited = new boolean[N + 1]; int[][] g = new int[N + 1][N + 1]; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { g[i][j] = 100000; } } for (int[] t : times) { g[t[0]][t[1]] = t[2]; } dijkstra(K, g, N); int max = -1; for (int i = 1; i <= N; i++) max = Math.max(max, dist[i]); if (max == 100000) return -1; return max; } }
Slot-Filling
一、定义
槽填充是要读取句子中的一些语义成分,可以看作一个序列标注问题
举例:
槽填充是一个序列标注问题,具有明确的对齐信息。
句子 | first | class | fares | from | Boston | to | Denver |
---|---|---|---|---|---|---|---|
Slots | B-机舱类别 | I-机舱类别 | O | O | B-出发地 | O | B-目的地 |
意图:订机票。
本质上是学得一个映射函数X→Y。训练样本:{(x(n),y(n)),n=1,⋯,N}。
二、进展以及相关论文
Research Advances In Semantic Slot Filling