-
0 -
2Artyficial ,有普通人皮肤的人形自走鹹魚。
鉴于毕设做的类似于语义分析然后提取关键字信息这种东西... =-= 就厚着脸皮来回答一下... (但肯定是最浅显的那种...)
首先是语义分析
第一步是分词,这个已经有很多现有的也挺好用的开源算法了~ 我当时用的是ansj,可以自己定义词库,并定义词性,可以识别新词,但是新词的识别其实不太好用... =-= 你依旧要根据自己的需求去定义词性。例如我当时做的是案情描述文本分析,例如“弹簧开锁”这种关键词语,我就适当的修改弹簧和开锁的词性,弹簧是tool,开锁是vsteal。然后开锁、弹簧等词可以导入一个近义词词库,将相近的词的词性进行更改。虽然这样准确率可能会受到影响,但是不用自己一个个找一个个改啊... 还有很多人说nlp什么的也好用~ 我没试过....
然后就是根据分出来的词(大部分分词工具都会注明名词、动词等词性),区分主谓宾等,然后再分析语义,当时用的是卷积和关联规则来分析(因为当时分析的文本范围比较窄,就针对盗窃案情分析~ 所以简单~ 关联规则和决策树都很好用~)卷积当时用途并不大,因为太简单了用不到吧hhh 用也只是为了提升毕设的高大上感... =-= 然后卷积这方面已经有很多很多中文论文可以参考了~(我自己实际用的模糊匹配... emmm 也还好用的...)
语义分析完之后... 我就不是很清楚了~ 因为就当时要分析的内容来说~ 我只要得到各个关键词或者案情描述文本的topic就可以了~ 也就是用了用LDA...
感觉这方面还是很有意思的~~ 然而我的智商让我望而却步.......
-
3卡尔是正太 ,处身寒夜,把握星光。
-
3拉普拉斯的饿膜 ,苦逼程序员/游戏品鉴师
感谢上面大佬的视频,比我想象的复杂多了,不是单纯一个算法可以解决的了。
1.提取词库中有的关键字,并组成样本
2.对样本进行分析,提取样本的事件以及语句的情感。
3.寻找回复,并根据上述的不同,提供略微不同的回复。
说是很简单,层层提取重要信息,并抽象化,但实际操作起来并不会有这么简单,还有很多细节性的东西没有披露。
-------------------------------修改线--------------------------------------------
Owen Tsai 说的很对,我来提提可能使用到的算法:
1. 最经典的莫过于朴素贝叶斯分类器(Naive Bayes classifier),常用于垃圾邮件分类,这里也可以用。
将词库对应每个可以回答的句型赋予权值,譬如:单词,“天气”,对于“今天是个好天气”这回答,权值为5,;但对于“啥玩意”这回答,权值为1。
将用户的输入与赋予权值并对比,找出概率最大的那个回答。
2. 决策树
将用户输入与词库进行对比,将用户的输入转换成 01 形式,0代表词未出现,1代表词出现,根据训练好的决策树进行对比。
3. KNN分类算法
同决策树,将用户输入转化成一维的形式,矩阵算法找最邻近匹配。
其余的SVM,CNN什么的,不是不可能,而是太麻烦。
另外,以上均为猜测。
-
11OwenTsai ,游戏设计,Web开发
我就喜欢这种讨论技术的问题2333
首先为了避免有人不知道这款游戏——这是一款打着步行模拟tag的游戏,科幻壳子,和人工智能Kaizen对话,探索整个宇宙飞船。在游戏中你需要直接和人工智能通过打字的方式交流。AI会根据之前的聊天上文,以及你们的对话做出合适的回答——虽然有可能不是很合适。
《Event[0]》看起来可能拥有最先进的AI,可以无障碍与人沟通。但事实并非如此。任何一个游戏程序员都会告诉你,游戏中的AI是一系列规则的状态机或者行为树,不可能可以和玩家真正沟通。Event [0] 也是如此,所谓的AI不过是一个创造出来的假象。那么这种技术是如何实现的呢?
通过开发者访谈,我们可以看到Kaizen的运作机制。
第一步,程序会纠正你拼错的单词。当然如果你错的太离谱,程序是不可能纠正的。
第二步,程序会浏览你的输入字符串,提取关键词,并和数据库中的tag进行比较。比如I me my mine等词可以匹配的tag是Player,passenger crew others等词匹配的是crew, place location position等词可以匹配where,经过这样的匹配和重新组合,你的语句就能被程序翻译和解读。比如你输入Where are the rest of passengers? 和 Where's my crew?,匹配到的tag组合是一样的,你也就可以得到类似的答复。
第三步,在回答数据库里根据你输入的语句标签搜寻可能的回答,并进行非关键词适当的替换,甚至还需要结合情感状态才能进行最后的输出。
同时,系统也会记录上下文。比如你在之前提到了passengers,那么你下一句话的they就会被辨识为指代了船员。在整个游戏里有1W个以上的单词和数千个标签组成的数据库。
由于游戏中的Kaizen只是一个飞船上的AI,聊天内容仅限于飞船上,所以这个数据库容量不需要多大。但是如果你想要一个能真正和人对话的人工智能,恐怕就非常难了。
-
登录奶牛关账号即可参与讨论
{{question['follower_count']}} 个玩家关注
相关元素
相关游戏
相关问题
如何从玩法、设计等方面比较E胖新作《The End is Nigh!》和《Super Meat Boy》?7人关注 1个回答
The Emily is Away Too 有哪些很棒的细节?4人关注 2个回答
开发者通过《Gorogoa》表达了哪些想法?18人关注 4个回答
问题被以下收藏夹收录
Event[0]是怎么做到和NPC流畅对话?
0 条评论