用.net研发msn聊天机器人_c#应用

2008-02-23 05:42:39来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

写在前面:
我不是研发人员,不是高手,就是自己比较爱玩。在技术上,没有什么喜欢摸索的精神,而是喜欢投机取巧。在这篇文章里,您也不能"少劳而获"地通过我的机器人修改出一个自己的机器人,因为自己觉得程式写的比较臭,所以不会open source。但是,假如您对.net或C#有点了解的话,相信从这篇文章里,您能够找到一切所需的资源,来研发一个自己的,绝对可用的msn机器人。要和我的机器人聊天,能够加tbot01@hotmail.com,名字叫“塔奇克马”,是从动画片攻壳机动队得名。同时,您也能够去http://www.guanqun.com,那里有一个和这个MSN机器人相同的网页聊天机器人,能够先聊聊看,尽量用中文聊。

这不是一篇新手入门的文章,假如您不知道什么是.NET,不了解数据库方面的哪怕是一丁点东西,建议您先看看。同时,也希望真正的高手不要笑话打击我,毕竟一个普通的,非研发人员的电脑爱好者通过摸索,并告诉大家怎样做一个好玩的东西,不是一件错事。

一、为什么要做MSN聊天机器人

1 我能想到的原因

最重要的是因为很好玩。您的MSN机器人说的话,一定体现您的性格(假如您希望这样的话)。当然,这是我的理由,作这个机器人的初衷仅仅是突然有一天自己想做。也许您也希望您的机器人能够帮助您做一些事情,类似一个专家系统或是客服系统等等。

2 现在的MSN聊天机器人

现在MSN机器人有很多,假如您加过MSN机器人,我想您列表上最多的是个叫做“小布”或是他兄弟姐妹一大堆的家伙们(http://www.9zi.com),可能基于负载的考虑,每次上线您都可能被他们一家子的一堆加入好友的请求包围。更有一些所谓的“免费短信”机器人,我一直就是做SP的,我直接说,为了不耽误您们赚钱,我不对这种机器人加以什么评论。能够提一下MsgerAI(msgerai@hotmail.com)这个机器人,研发他的这位老兄很希望做一个能够像人相同具备智能的东西,虽然可能在他有生之年都无法完成,但是我还是祝他成功。毕竟有梦想就是好的,而且这个机器人现在也能够为他完成些工作(http://www.funnyok.net/nlp)。更有一些其他的MSN机器人,比如专门提供信息查询服务的,帮您搜索google的等等。MSN进行时里面有列表(http://www.msning.com),自己去看看就好了。

二、为什么用.NET

其实理由很简单。C#和Java很像,但是Java我实在找不出一个很好用的,符合自己使用习惯的IDE来。而C#就不同,Vs.NET(http://msdn.microsoft.com/vstudio/) 当然最好用,C# Builder(http://www.borland.com/csharpbuilder/)也不错,连SharpDevelop(http://www.icsharpcode.net/OpenSource/SD/)用起来都相当舒服。所以选择.NET比较好。

另外,.NET在研发上很方便,只要您有一点点研发基础,用.NET写程式就不是很难。我是站在一个使用者而非研发者的角度,不用去钻研太多技术层面,或是优化的东西,我没那能力也不想进微软研究院。

建议您使用最新版Visual Studio.NET,能够省去很多麻烦的事儿。

同时,.NET研发能够找到的资源也有很多,我们接下来会提。

三、您要一个什么样的聊天机器人

1 研发前的设想

我这里讨论的就是“聊天机器人”这个概念,意思是,他能做的就是陪您聊天。您要有一个程式去“教”他说话,同时要让他明白话语中包含的大概意义,还能够做基本上不怎么离谱的回答。

2 还能够让他做什么

您还能够让他做很多其他的事情,比如查询ip,手机号码,注册号,航班号,或直接让他去查google,帮您搜索。这些也都不是什么麻烦的事情,只要您想。

四、先让机器人开口说话

不管您的机器人聪不聪明,让他能在MSN上象摸象样地回答是最重要的。所以,您需要有一个MSN帐号,连接到MSN服务器,取得各种服务器的消息,同时发送消息回服务器。

当然,您能够分析MSN的协议(http://www.hypothetic.org/docs/msn/index.php),自己写通讯部分。但是我提过,我是个喜欢投机取巧的人,所以,找个能用的接口用就好了。所以,我找了些MSN的研发接口。

MSNHelper:
http://sourceforge.net/projects/msnphelper/

dotMSN:
http://members.home.nl/b.geertsema/dotMSN/

这两个都是为.NET研发的,我用dotMSN,他使用MSNP8协议。注意dotMSN不要用sourceforge上的版本,要用上面给出的地址。
接下来,下载这个例子:
http://members.home.nl/b.geertsema/dotMSN/...ple/Example.zip

用vs.net打开,编译,执行。

看懂了吧。登录之后随便双击列表上的某个人,会发送给这个人一句"Hello world!"。您已能够不通过MSN原来的程式,而直接和人说话了。

这部分的代码是这样的:

private void ContactJoined(Conversation sender, ContactEventArgs e)
{
// someone joined our conversation! remember that this also occurs when you are
// only talking to 1 other person. Log this event.
Log.Text = e.Contact.Name " joined the conversation.\r\n";

// now say something back. You can send messages using the Conversation object.
sender.SendMessage("Hello world!");
}

意思是当对方加入聊天后,您就给他发一个"Hello world!"的消息过去。这时候假如您列表上的人双击您的名字,也同样会收到一个Hello World!。

五、让机器人懂中文

1 数据库

因为我们要做中文聊天机器人,语料库的大小直接关系到您的机器人是不是聪明。由于自己的习惯,我用了mysql作为存放语料库和中文分词库的数据库。而且mysql速度极快。当然,您要用Access或Sql Server,完万能够,而且更容易些。.NET调用Mysql的库能够在这里找到MySQL Driver CS
http://sourceforge.net/projects/mysqldrivercs/

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: c#和ironpython脚本进行数据交互示例_c#应用

下一篇: c#将文档保存到数据库中或从数据库中读取文档_c#应用