问题一:

16
0
length:4
length:4
length:4
length:4
29
0
length:2
length:2
16
0
length:5
length:5
length:5
length:5
length:5
38
本来非零元素应该为5*8为40个,可是因为一句话中的相似词,会出现重复,所以可能出现前一个词的相似度和相似词,被后一个词所覆盖

会导致出来的准确率不够准,

也会导致

为此,我们可能要引入word2vec里词的判断,只加入相似度大于某一个阈值的词。然而,这样的话,对于长短句子,怎么进行公平的比较?

【可能我们topn 要测试一下取大一点了】

topn设大有助于让我们更倾向于出现相同词,而不是相似词

可能要做一个相同词的匹配,如果出现相同词,这个相同词要加在最后再进行word2vec词相似度的写入,这样才不会被其他词所覆盖

又或者,我们在相似度赋值的时候,使用相加的方式?

比如  但是 有一个相似词 但,相似度是0.8,

然后  可是 有一个相似词 但,相似度是0.7,我们对于对于这个词的赋值,使用叠加1.5?好像也怪怪的。

我觉得应该对于重复的词,我们取完全一样的相似度分布

比如两个句子都出现但是,那么我们对 但是,取一模一样的词分布(可以把重复的词放在末尾进行赋值)

对于两个不同的词,他们有相同的相似词呢?取相似度大的吧?这样的话,如果出现了这个词,则也对近义词理解有帮助

对了,对于basesimilarity,我们应该取vec的非零值的个数,而不是用词数相乘,而且这样的话不用传topn,只要传入vec或者leng(vec nonzero)就好,

这样会更准确,

对了,我把所有相似度的分布,画成图,然后问一下大家怎么做归一化

改进的话,是不是可以把设置的权重调低?

考虑一下只是图谱如何弄

====================

今天出现了一个算法bug

微信提示收到多少钱
['微信', '收到', '提示', '多少钱']
0.31954264640808105
{'confidence': 0.3207103750440659, 'answer': "(匹配):微信提示收到多少钱('微信', '收到', '提示', '多少钱')\n (标准):微信提示收到多少钱"}
{'confidence': 0.1334743309275807, 'answer': "(匹配):终身版的多少钱('多少钱', '终身版')\n (标准):这个收银系统怎么收费?"}
{'confidence': 0.13280269790244556, 'answer': "(匹配):可以通过微信个人收款码?('微信', '收款码')\n (标准):可以通过微信个人收款码?"}
{'confidence': 0.13262952072991352, 'answer': "(匹配):银豹有微信拉粉吗?('微信', '拉粉')\n (标准):银豹有微信拉粉吗?"}
{'confidence': 0.1312973178102419, 'answer': "(匹配):有没有微信商户版的?('微信', '商户')\n (标准):有没有微信商户版的?"}
{'confidence': 0.13003625241844238, 'answer': "(匹配):微信怎么绑?('微信', '绑')\n (标准):微信怎么绑?"}
{'confidence': 0.13003625241844238, 'answer': "(匹配):微信里怎么看到银豹后台?('微信', '后台')\n (标准):微信里怎么看到银豹后台?"}
{'confidence': 0.13003625241844238, 'answer': "(匹配):你们只支持微信吗?('微信', '支持')\n (标准):你们支持微信和支付宝吗?"}
{'confidence': 0.1296702929762439, 'answer': "(匹配):漏单没有提示的吗?('漏单', '提示')\n (标准):系统能查看漏单或提示漏单吗?"}
{'confidence': 0.12954782946680146, 'answer': "(匹配):刷卡器多少钱?('刷卡器', '多少钱')\n (标准):刷卡器多少钱?"}

微信提示收到多少钱
['微信', '收到', '提示', '多少钱']
0.3296504020690918
{'confidence': 1.0, 'answer': "(匹配):微信提示收到多少钱('微信', '收到', '提示', '多少钱')\n (标准):微信提示收到多少钱"}
{'confidence': 0.13507810593582123, 'answer': "(匹配):终身版的多少钱('多少钱', '终身版')\n (标准):这个收银系统怎么收费?"}
{'confidence': 0.13367660240019172, 'answer': "(匹配):可以通过微信个人收款码?('微信', '收款码')\n (标准):可以通过微信个人收款码?"}
{'confidence': 0.13367660240019172, 'answer': "(匹配):银豹有微信拉粉吗?('微信', '拉粉')\n (标准):银豹有微信拉粉吗?"}
{'confidence': 0.13231996486433337, 'answer': "(匹配):有没有微信商户版的?('微信', '商户')\n (标准):有没有微信商户版的?"}
{'confidence': 0.13100580420257674, 'answer': "(匹配):微信怎么绑?('微信', '绑')\n (标准):微信怎么绑?"}
{'confidence': 0.13100580420257674, 'answer': "(匹配):收银机是多少钱('多少钱', '收银机')\n (标准):收银机是多少钱"}
{'confidence': 0.13100580420257674, 'answer': "(匹配):微信里怎么看到银豹后台?('微信', '后台')\n (标准):微信里怎么看到银豹后台?"}
{'confidence': 0.13100580420257674, 'answer': "(匹配):漏单没有提示的吗?('漏单', '提示')\n (标准):系统能查看漏单或提示漏单吗?"}
{'confidence': 0.13100580420257674, 'answer': "(匹配):你们只支持微信吗?('微信', '支持')\n (标准):你们支持微信和支付宝吗?"}

同样的一句话,可是两次提问,回答的却不一样。我中间有加一些别的。

经测试,应该是我直接赋值vec1,vec2出了问题,以后碰到函数里面更改了vec1vec2的,最好还是用vec1_temp=vec1.copy()比较安全

vec1_temp = vec1.copy()
vec2_temp = vec2.copy()
vec_index1 = vec1_nonzero_nonkeyword&vec2_zero
vec_index2 = vec2_nonzero_nonkeyword&vec1_zero vec1_temp[vec_index1] = 1
vec2_temp[vec_index2] = 1 ==========
经检验,一个词的句子与一个词的句子,他们之间完全相同,相似度最低是0.82,所以如果要去掉分词之后完全相同的,就去掉0.80以上的就行

微信店铺
['微信店铺']
0.4010460376739502
{'confidence': 0.8242659161988843, 'answer': "(匹配):有没有微信店铺?('微信店铺',)\n (标准):有没有微信店铺?"}
{'confidence': 0.11767885635119946, 'answer': "(匹配):微信店铺和网上商城是一回事吗?('网上商城', '微信店铺')\n (标准):微信店铺和网上商城是一回事吗?"}
{'confidence': 0.0833948963312266, 'answer': "(匹配):微信店铺有什么用处?('微信店铺', '用处')\n (标准):微信店铺有什么用处?"}

=============================

今天遇到一个问题,当我要加入不重要词的时候,对于个TRUE FALSE的np array操作,然后使用这个向量作为nonkeywords

发现巨慢! 查找一次竟然要用2秒

我后来把这个向量改为0101的形式,然后使用vec_not_special = (vec_not_special==1),速度才回到正常值

为什么会这样??

vec1,vec_not_special = sent2vec(q1_cut,model,topn=10,sent_raw=question)
vec_not_special = (vec_not_special==1)
vec1_count_nonzero = np.sum(vec1!=0)
vec1_nonzero_nonkeyword = (vec1>0)&vec_not_special

算法bug修复的更多相关文章

  1. 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)

    转载请说明原出处,谢谢 今天本来打算把仿酷狗播放列表的子控件拖动插入功能做一下,但是仔细使用播放列表控件时发现了几个逻辑错误,由于我的播放 列表控件是基于CTreeViewUI和CTreeNodeUI ...

  2. OJ2.0userInfo页面Modify逻辑bug修复,search功能逻辑实现

    这周的主要任务:userInfo页面Modify逻辑bug修复,search功能逻辑实现. (一)Modify逻辑bug修复: 这里存在的bug就是在我们不重置password的时候依照前面的逻辑是不 ...

  3. cocos2d-x多分辨率和随后的自适应CCListView的bug修复

    cocos2d-x多分辨率自适配及因此导致的CCListView的bug修复 cocos2d-x是一款众所周知的跨平台的游戏开发引擎.因为其跨平台的特性.多分辨率支持也自然就有其需求. 因此.在某一次 ...

  4. android-misc-widgets四向(上下左右)抽屉bug修复版--转载

     android-misc-widgets四向(上下左右)抽屉bug修复版 2013-08-04 08:58:13 标签:bug down top panel slidingdrawer 原创作品,允 ...

  5. Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复

    写在前面的话 在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录.本文就是写一下发现问题的过程及解决方法.此bug在第一个项目中点这里还存在, ...

  6. 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 Bug修复

    开篇语 昨晚发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 然后上午起来吃完午饭之后,我就准备继续开工的,但是突然的,想要看B站.然后在一股 ...

  7. Saiku Table展示数据合并bug修复(二十五)

    Saiku Table展示数据合并bug修复 Saiku以table的形式展示数据,如果点击了 非空的字段 按钮,则会自动进行数据合并,为空的数据行以及数据列都会自动隐藏掉. 首先我们应该定位问题: ...

  8. ThinkPHP 3.2.3+ORACLE插入数据BUG修复及支持获取自增Id的上次记录

    TP+ORACLE插入数据BUG修复以及获取自增Id支持getLastInsID方法 这些天在做Api接口时候,发现用TP操作Oracle数据库,发现查询修改删除都能执行, 但一旦执行插入操作老是报错 ...

  9. git bug修复

    在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除. 当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支i ...

随机推荐

  1. 适用于CentOS6.4的Win7双系统安装方式

    (文章在2013-11-16 15:56:31修改,此次修改幅度较大,之前的安装方式有问题,已经不推荐使用.笔者在此对各位读者表示深深的歉意!) 在之前的文章中我们实现了Win7+CentOS6.3双 ...

  2. day9 九、函数

    一.函数 1.函数:可以完成特定功能的代码块,函数就是存放代码块的容器 2.定义函数的语法: 函数四部分:(函数执行的本质:执行函数体,得到函数返回值) ①函数名 ②函数体 ③返回值 ④参数 用def ...

  3. MPD软件工作坊上海站本周末在上海举行

    本周末(5月26日至27日)由麦思博(msup)主办的第39届MPD软件工作坊即将在上海虹桥会议中心举行.本届MPD将继续围绕软件研发领域,邀请了21位技术大咖,从产品运营.团队管理.架构技术.自动化 ...

  4. 将音乐生成波浪图形,JavaScript Html5

    x 省略废话(N+)... Windows Media Palyer中的经典波浪形 自己也行动手做一个,最好是JavaScript实现的, 搜索到了资源部分关键词"HTML5 频谱" ...

  5. Datatables js 复杂表头 合并单元格

    x →Datatables官网← x 项目中用到的Table都是用Datatables插件来搞得: 以前都是生成一般性的table: 近期要生成一些复杂表头,合并单元格之类的: 研究了一下. x 去官 ...

  6. [No000011C]使人醒悟的生活中的定律

    1.     墨菲定律 我们在事前应该是尽可能想得周到.全面一些,如果真的发生不幸或者损失,就笑着应对吧,关键在于总结所犯的错误,而不是企图掩盖它. 2.     羊群效应 对他人的信息不可全信也不可 ...

  7. NLP任务:给定一句话,找出这句话中你想要的关键词,包括起始结束索引

    在实际的nlp实际任务中,你有一大堆的人工标注的关键词,来新的一句话,找出这句话中的关键词,以便你以后使用,那如何来做呢? 1)用到正则的 finditer()方法,返回你匹配的关键词的迭代对象,包含 ...

  8. 元素class的增、删、查、toggle

    比如有一个元素div <div class="btn user">我是div</div> 之前只知道元素有一个className可以来改动  元素的类名 但 ...

  9. python全栈开发day10

    day10知识点总结 while循环补充: continue,终止当前循环,开始下一次循环 break,终止所有循环 pycharm 技巧1.setting 中搜索 mouse 设置鼠标滚轮 改变字体 ...

  10. g++编译多个文件

    注意:头文件不用去指定,其是由#include命令进行管理的,只需要编译cpp文件就可以了: 举例: 有以下三个文件: a.h a.cpp main.cpp 那么编译可以有以下两种方式: 1.分开编译 ...