• 一个网站的诞生 MagicDict开发总结10 [第一阶段的检索流程]


    下面来谈谈日语单词检索流程,这个流程是第一阶段的流程,在第二阶段开发中,将会进行很多的优化和修改。

    1.检索按钮按下,立刻就检查一下检索内容文本框是否为空。如果为空的话,则弹出警告框

       考虑到可以使用候补列表提交检索词语,还需要检查列表的选中项目。

    <form id="form1" method='post' action='' defaultbutton='btnJP2CN' onsubmit='return checkSubmit()'>

    //提交检索
    function checkSubmit() {
        
    if (ItemSelected != -1) {
            
    return false;
            ItemSelected 
    = -1;
        };
        
    if (document.getElementById("ctl00_txtSearchWord").value == "") {
            alert(
    "请输入检索关键字,可以是汉字,假名,罗马字");
            
    return false;
        }
    }

     2.后台获得检索词语以后,交给检索引擎之前,还要进行解码工作。由于日语的Shift_JIS在不同操作系统里面,文字编码不同,所以,可能存在编码和解码的问题。在页面上的所有文字,都需要编码和解码的操作。特别是在划词检索的时候,页面上的内容必须编码后传给后台:JS编码函数:encodeURI

    function RunSearch(SObj) {
        SObj.style.display 
    = "none";
        
    var dlg = new J.ui.dialog({ id: 'test3', title: selectedText,  500, page: './Result.aspx?IsMin=True&SearchWord=' + encodeURI(selectedText) });
        dlg.ShowDialog();
    }

     后台则使用NET函数解码:HttpUtility.UrlDecode

     RunSearch(HttpUtility.UrlDecode(strSearchWord, System.Text.Encoding.UTF8), IsMin);

    3.获得检索关键字之后,进行各种正规化工作。

       片假名转平假名

       罗马字转平假名

       不规范写法通过检索数据库规范化

        重叠字的简化写法规范化  「益々」规范为「益益」

     4  在各个字典库里面寻找关键字

           在日中字典,中日字典,杂项字典,迷你字典中做暴力检索。

         【这个部分是服务的中核,第一阶段只是实现功能,第二阶段将大规模优化】

           其实比较正确的做法是:

           为每个单词做一个索引表,某个单词的具体内容在什么字典里面存在,通过检索索引表来获得具体信息。

           这样做的话,不必所有的字典都打开做暴力检索。只需要在必要的字典里面做检索即可。

           这个算法的思想就是:用大量事前准备的时间来换取真正检索时候所浪费的时间。

    5.检索成功,则加入成功列表中,便于统计词语查询频率,为以后生成常用词语词库做准备。常用词语将会有一个专用的表格,作为一种缓存的策略,如果常用表格里面命中的话,则检索结束。

    检索失败的时候,也记录下来,作为扩充词库的一个标准。同时也是一种规范化的样本。

    6.检索失败的时候,通过算法生成一个候补词语列表【未完成】

    关于候补词语的算法:这篇文章非常不错的。推荐大家

    http://hi.baidu.com/ycdoit/blog/item/e421bdfcdc55a00508244d26.html

    常用纠错的算法

    附注:单词纠错的几种算法

     常见的英文单词纠错法有:,主要有误拼词典法、词形距离法、最小编辑距离法、相似键法、骨架键法、N-gram法、基于规则的技术、词典及神经网络技术。

    (1)误 拼字典法。收集大规模真实文本中拼写出错的英文单词并给出相应的正确拼写,建造一个无歧义的误拼字典。在进行英文单词拼写检查时,查找误拼字典,如命中, 则说明该单词拼写有误,该词的正确拼写字段为纠错建议。该方法的特点是侦错和纠错一体化,效率高。但英文拼写错误具有随机性,很难保证误拼字典的无歧义性 和全面性,因此查准率低、校对效果差。

    (2)词 形距离法。这是一种基于最大相似度和最小串间距离的英文校对法。其核心思想是构造单词的似然性函数,如该单词在词典中,则单词拼写正确;否则,按照似然性 函数,在词典中找到一个与误拼单词最相似的词作为纠错候选词。该方法的特点是节省存储空间,能反映一定的常见拼写错误统计规律,是一种模糊校对法。

    (3)最小编辑距离法。通过计算误拼字符串与词典中某个词间的最小编辑距离来确定纠错候选词。所谓最小编辑距离是指将一个词串转换为另一个词串所需的最少的编辑操作次数(编辑操作是指插入、删除、易位和替换等)。还有人提出了反向最小编辑距离法,这种方法首先对每个可能的单个错误进行交换排列,生成一个候选集,然后,通过查词典看哪些是有

    效的单词,并将这些有效的单词作为误拼串的纠错建议。

    (4)相似键法。相似键技术是将每个字符串与一个键相对应。使那些拼写相似的字符串具有相同或相似的键。当计算出某个误拼字符串的键值之后,它将给出一个指针。指向所有与该误拼字符串相似的单词,并将它们作为给误拼字符串的纠错建议。

    (5)骨架键法。通过构建骨架键词典,在英文单词出现错误时,先抽取出该错误单词的骨架键,然后再去查骨架键词典,将词典中与该单词具有相同骨架键的正确单词作为该单词的纠错建议。

    (6)N-gram法。基于n元文法,通过对大规模英文文本的统计得到单词与单词问的转移概率矩阵。当检测到某英文单词不在词典中时。查转移概率矩阵,取转移概率大于某给定阈值的单词为纠错建议。

    (7)基 于规则的技术。利用规则的形式将通常的拼写错误模式进行表示,这些规则可用来将拼写错误蛮换为有效的单词。对于一个误拼字符串,应用所有合适的规则从词典 中找到一些与之对应的单词作为结果,并对每个结果根据事先赋予生成它的规则的概率估计计算一个数值,根据这个数值对所有候选结果排序。

     

    MagicDict 网站第一阶段源码放出。

    只是源代码的下载,数据库由于种种原因暂时还不能开放。

    包括Midi音乐文件夹等一些数据也不在下载文件里面。

    在这里继续召集懂日语的,喜欢Web站点建设的,对于制作字典有热情的朋友的加入。

    代码只是第一阶段的成果物,第二阶段将优化代码以增加检索效率。

    同时需要对于资料的校对和字典数据库的升级。

    感谢大家对本系列文章的支持和帮助。。。。。可能日语检索的部分难以理解。。。。。

    点击下载源代码

     

    有兴趣的写信给我 root#magicdict.com   [convert # to @ ]

    或者加MSN mynightelfplayer@hotmail.com

    网站地址 http://www.magicdict.com/

  • 相关阅读:
    原生JS实现new方法、new一个对象发生的四部、new里面常用的优先级
    svg image标签降级技术
    ReflectionToStringBuilder使用
    记一次未解决的异常:java.lang.NoClassDefFoundError: net/sf/json/JSONObject
    eclipse安装Run-Jetty-Run插件,修改实时生效
    jdbcTemplate:包含占位符的SQL无法打印参数信息
    jdbcTemplate异常:like模糊查询报错(Parameter index out of range (1 > number of parameters)
    Spring整合MyBatis
    springmvc整合slf4j、log4j记录文本日志
    Java环境配置
  • 原文地址:https://www.cnblogs.com/TextEditor/p/2074142.html
Copyright © 2020-2023  润新知