Coder Social home page Coder Social logo

Comments (7)

Decalogue avatar Decalogue commented on May 21, 2024

下午好!
非常感谢您的贡献和建议!
1.已验证正在解决。
2&3.已经添加完整的句尾标点符号过滤。
4.这个功能后续会添加,目前暂时不考虑,以提升性能为主。
5.在chat.server模块中有日志支持。
6.前端管理的UI及对应的增删改查等语义服务接口由于涉及到公司利益暂时没有上传,望体谅。

总之,很感谢您的建议!会将您列到项目贡献者名单。
欢迎分享交流,一起成长!

from chat.

zheyang0715 avatar zheyang0715 commented on May 21, 2024

继续提几个问题!
1,导入数据时,纯数字类型的问题或答案无法导入数据库,需要代码转str才能保存;保存时只对问题做了非空判断,未对答案进行非空判断。
2,因为代码进行分词时,对末尾语气词进行了过滤,这里我个人觉得有优化的地方,我是改为了:tone_words = "了呢吧啊啦呀";另外添加了不过滤的一些简单短语:exclude_words = ["啊", "啊啊", "啊啊啊", "啦啦", "啦啦啦", "哎呀", "吧啦", "啦呀", "啊呀", "吧啦吧啦"],避免用户输入:啊 等词,无法匹配的情况;这个根据需求定位来看吧;
3,因为代码中的矩阵阀值,相似度阀值都定的非常的高,一句话里最多差一两个词,再多就匹配不上了,准确率高,但是不符合关键词搜索的场景;因此我改了些东西请指正:有完全匹配的,随机输出一个答案,没有完全匹配的,取相似度最高的返回,这里我给相似度是0.2,目的是为了适应关键词搜索,另外矩阵阀值我改了0.5,矩阵这块的规则我不是很懂。最终验证的结果呢是让我比较满意的,当然这个改动也是根据定位来做的,毕竟按源代码的逻辑与阀值,匹配率太低了。
4,另外上面提的一个问题:类似“我喜欢你”,“你喜欢我”类型的两句话,代码中计算相似度得分是1.0,不知道现在是什么情况。
有点啰嗦了,有时间指正下了!

from chat.

Decalogue avatar Decalogue commented on May 21, 2024

早上好!
1.是的,设定了问题答案都是字符类型的。您可以修改源代码。在chat.graph.add_nlucell中前两行
assert name is not None, "name must be string."
assert content is not None, "content must be string."
2.这个建议非常好。我这边暂时主要考虑语音对话的情况,所以对文本输入考虑的少,非常感谢!
3.这个也是可以改的,在1.0.7.dev110版本中已经将阈值设为了函数的参数,可以自由设定。当大于最高阈值时直接返回,当在最低阈值和最高阈值之间时返回相似度最高的,低于最低阈值时才随机回答。因为不同的情况下对于匹配精度要求不一样,例如有些需求就要求精确匹配,那就只能调高,有的要求尽量多回答,那就略低。根据你的需要。
目前算法是:(大于最高阈值直接返回) + (最低最高之间返回最大相似度的)
示例定义:def extract_synonym(self, question, subgraph, threshold=0.60, athreshold=0.92):
具体查看源码
4.这个是匹配算法本身的问题,对词序影响考虑不全,所以接下来也要把词序算法加进去。

关于您之前的建议,已经在 chat.semantic.synonym_cut 的
函数注释中添加:Contributor: zheyang0715(https://github.com/zheyang0715)
后续会在文档中更新。

谢谢!

from chat.

Decalogue avatar Decalogue commented on May 21, 2024

补充:
相似度阀值都定的非常的高:主要是对于语义计算chat.qa.extract_synonym

而关键词匹配已有:chat.qa.extract_keysentence 和 chat.qa.extract_keysentence_first 来获取满足包含关键词的句子中相似度最高的

另外还有拼音模糊匹配:chat.qa.extract_pinyin 作为上述两个步骤之后的方案

综合就是:可以使用 1.语义匹配->2.关键词匹配->3.拼音匹配 3步整合来最大限度的拿到答案。当然也可以根据需要选取任何一个。

from chat.

zheyang0715 avatar zheyang0715 commented on May 21, 2024

您好,非常感谢您的回答,代码更新较快没有跟上……,您这边方便提供一些示例数据吗?因为对于之前的结构我只需要提供(query问题,content答案,topic话题)三个值即可使用,现在的话添加了场景关系等等,稍微有点糊涂,另外keywords字段是手动定义的关键字吗?我只发现tag是代码生成的向量值,如果您能提供一些比较完整的示例数据在代码里供测试使用的话,万分感谢。

from chat.

Decalogue avatar Decalogue commented on May 21, 2024

晚上好!
现在的结构只要问题答案也能正常使用。多参数的是与场景有关的。具体可以加微信聊。
wechat: yingluoqingli

from chat.

rtygbwwwerr avatar rtygbwwwerr commented on May 21, 2024

hi, 关于语义标签相似度计算, 能说明一下其动机吗(或者出处), 比如为什么要将n转化为弧度值?
对应代码为semantic2.sim_tag(tag1, tag2)
math.cos(n * math.pi / 180) * ((n - d + 1) / n) * s3

from chat.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.