Alicefrank中文是什么么

Alice系列_百度百科
《Alice系列》是连载于红袖添香网的言情小说,作者是霜影晨。
Alice系列小说类型
Alice系列内容简介
他知道什么?看来自己的优势很大啊!想要逃出姐姐Alice的“魔掌”,顺带去完成一下任务。 额,这是什么情况?三姐是班主任?为什么明明是来完成任务的,却把自己的心也丢了?天,还有情敌?呜呜...悲剧啊 好吧,我忍了,这又是一场计,够可以的……
企业信用信息This is Alice 的中文是什么_百度知道ALICE代表什么意思_百度知道当前位置: &
求翻译:我取了英文名字叫alice是什么意思?
我取了英文名字叫alice
问题补充:
I took the English name is alice
I choose an English name is alice
I took English name to call alice
I took the English name is Alice
I have chosen the English name and called alice
我来回答:
参考资料:
* 验证码:
登录后回答可以获得积分奖励,并可以查看和管理所有的回答。 |
我要翻译和提问
请输入您需要翻译的文本!1841人阅读
Alice(1)
源码下载地址:http://download.csdn.net/detail/zhanghui_hn/7126195
一、为什么Alice不支持中文
因为Alice的question都会被bitoflife.chatterbean.text.Transformations类中的fit函数过滤,而过滤的表达式就是:
private finalPattern fitting = pile(&[^A-Z0-9]+&);
只会保留英文字符和数字字符。顺带说一句,因为Alice会将question全部转为大写,所以上面的表达式中没有a-z区间。
为了让中文不被过滤掉,就将上面的过滤式中添加中文字符。
&&&&&&&& privatefinal Pattern fitting = pile(&[^A-Z0-9\u4e00-\u9FA5]+&)
二、Alice支持中文的原理
先解释一下,Alice对英文支持的原理:
简而言之:在语料库中,找出匹配的用户question的pattern,再返回pattern对应的template内容作为answer。
详细点就是:Alice初始化时,将AIML文件中的&pattern&标签的内容根据空格切分,组成一个Graphmaster对象;用户的question也根据空格切分,根据匹配算法在Graphmaster对象中找到匹配的pattern标签,再返回该pattern对应的template内容。
Graphmaster参考:
Alice支持英文中的关键一点就是:英文输入有空格,而中文输入没有空格,Alice就不会切分中文字符,只会把整个中文语句当做英文中一个单词。
所以支持中文的关键一点就是:为中文语句加空格。
马上想到了中文分词器,我用的是.接下来问题就转化为:怎么为中文语句加空格?在什么地方加空格?
有两个地方要处理:
?读取AIML文件中的pattern标签时,需要加空格。
?读取用户question时,要加空格。
三、代码实践
IK分词器封装函数
&&&&&&&& 这是就不多说了,csdn博客多得是IK分词器用法。
public static StringIKAnalysis(String str) {
if(str.getBytes().length == str.length()) {
//如果不包含中文,就直接返回。
//由于IK分词器,不支持特殊字符,所以将 * 改为中文字符“这是星号”,中文分词以后再将“这是星号”修正为为 *
//同理将 _改为中文字符串“这是下划线”,中文分词以后再将“这是下划线”修正为 _
str= str.replaceAll(&\\*&,&这是星号&).replaceAll(&_&,&这是下划线&);
StringBuffersb =new StringBuffer();
byte[] bt =str.getBytes();
InputStreamip =new ByteArrayInputStream(bt);
Readerread =new InputStreamReader(ip);
//设置为智能分词
IKSegmenteriks =new IKSegmenter(read,true);
while ((t =iks.next()) !=null) {
//在每个分词元之后添加空格
sb.append(t.getLexemeText()+& &);
//sb.delete(sb.length() - 1, sb.length());
}catch (IOException e) {
//TODOAuto-generated catch block
returnsb.toString().replaceAll(&这是星号&,&*&).replaceAll(&这是下划线&,&_&);
读取AIML文件的pattern标签时加空格
&&&&&&&& AIML的读取解析工作由bitoflife.chatterbean.aiml.AIMLHandler类完成的。
修改pushTextNode函数,根据参数来判断是否调用中文分词器。
*将一个节点的文本信息压入栈中,并根据参数决定是否调用中文分词器。
*@param isToSegment 标识是否调用中文分词器
privatevoidpushTextNode(Boolean isToSegment) {
Stringpushed =text.toString();
text.delete(0,text.length());
if (ignoreWhitespace)
pushed= pushed.replaceAll(&^[\\s\n]+|[\\s\n]{2,}|\n&,&&);
if (!&&.equals(pushed.trim())){
if(!isToSegment) {
stack.push(newText(pushed));
pushed= pushed.toUpperCase();
stack.push(newText(cn.edu.scut.cs.IKAnalyzer.ChineseSegmenter.IKAnalysis(pushed)));
在startElement和endElement函数中为pattern和that标签内的中文字符添加空格。将pushTextNode()函数的调用语句改为:
pushTextNode(qname.toLowerCase().equals(&pattern&)
&&&&&&&&&&&&&&& ||qname.toLowerCase().equals(&that&));
顺带说一句that标签也可能需要中文分词的。
读取用户question时加空格
&&&&&&&& 这个很简单,在public void normalization(Sentencesentence)函数中第二行添加调用中文分词函数:
input =cn.edu.scut.cs.IKAnalyzer.ChineseSegmenter.IKAnalysis(input);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:275945次
积分:4120
积分:4120
排名:第5393名
原创:87篇
转载:99篇
译文:34篇
评论:39条
(1)(1)(3)(1)(3)(6)(3)(4)(1)(1)(3)(3)(3)(1)(4)(5)(1)(2)(11)(5)(6)(2)(7)(8)(20)(2)(2)(5)(20)(12)(6)(10)(41)(18)}

我要回帖

更多关于 kitty中文是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信