none
c++及适应性增量设计 RRS feed

  • 问题

  • 适应性增量设计:
      举个例子,要处理一段文本,比如排版随意的同义词词典,
    每个词条安照相似的规矩编写组织,但个别词条也会有不同的组织变化,
    由于文本内词条数量巨大,我们没法事先穷举每种变化,
      
      为了整理这个词典,我想有没有可能先完成大同部分,
    然后有变化时及时提示程序员,以便为程序程序员进一步去设计适应性增量?
      
      或者有更好的办法?
    2010年1月13日 9:08

答案

  • 你可以试一下。首先总结一下现有的规则和已知排版格式。
    比如有单词、音标、词性、解释、词组、同义词、反义词、不同使用场景、举例等等。
    然后看一下每个元素有都具有哪些排版,比如这些元素都有分隔符属性。对于举例会有编号。
    总结之后,你可以开始抽象。首先把不同的元素抽象为节点,而排版格式抽象为元素属性。那么经过总结你会获得一个XML
    例如:
    <Dictionary>
    <Word>
    <explain>
    <sperators>
    <sperator value="#"/>
    <sperators>
    </explain>
    <...>
    </Word>
    <Phrase>
    </Phrase>
    </Dictionary>
    这样你就可以用一个XML组织排版规则。
    比如字典里可能出现单词和词组
    对于单词有解释节点。解释节点又有多个分隔符。
    你在用一个Composition模式将这个XML进行对象建模。
    读取文本的时候,根据建模后的结构进行不同内容的处理。如果发现有无法解释的排版规则,就记录log。你可以通过log对XML进行不断的扩展,而不需要修改代码。如果出现新的节点处理类型则在Composition中添加对应的处理类。


    麻烦把正确答案设为解答。
    • 已标记为答案 Fan.z.y 2010年1月15日 11:45
    2010年1月14日 1:43
    版主

全部回复

  • 你的这个需求应该通过数据库设计来实现.
    不属于C/C++的范畴.

    可以考虑直接使用SQL2005建立一个表来保存.


    0xBAADF00D
    2010年1月13日 12:44
    版主
  • 用SQL,那录入不是要人来完成了吗,我要自动读取,
    智能判断,文本有规律可循,但我不想事先把所有小的变化都找出来,
    一个人也不大可能完成遍览所有文本,词条一般都是这样的结构,看出来了吧
    # abbreviate
    v. 1 shorten, compress, contract, truncate,
    trim, reduce, curtail: We abbreviated
    some of the longer words
    to save space. 2 shorten,
    cut, condense, abridge, abstract, digest,
    epitomize, summarize, US synopsize: The
    school presented an abbreviated version
    of A Midsummer Night's Dream.

    也有不做具体解释,而只是引用
    # awaken
    v. See awake, 1, 2, above.

    还可能有其他情况,比如
    ......
    # enrage
    v. Colloq: get (someone's) back or Irish or hackles or dander up, make (someone) see red, 
    //注意这里的缩略标识US, Brit, Colloq, (engine-),都提示用法场合,可怕的是编排的变化“:”“or”等等可能表示不同的分割或者就是例句里的一个词语
    US burn (someone) up, Slang US tick (someone) off, Taboo pisz (someone) off, Brit put (someone's) monkey up,
    US tee (someone) off: Lord Thimble was enraged at being made to wait his turn.
    ......
    2 (engine-) driver,
    conductor, operator: He was the
    engineer on the afternoon train
    out of Washington.
    ......
    n.pl. belongings, (personal) property, gear, possessions,
    stuff, things, paraphernalia, chattels, goods,
    Colloq junk, crap, Brit clobber,
    Taboo slang US shit: His
    personal effects were left scattered
    around the house. 
    ......
    # gumption
    n. 1 resourcefulness, shrewdness, cleverness, (mother)
    wit, (common) sense, astuteness, judgement,
    Colloq horse sense, brains, Slang
    Brit nous: It takes a
    lot of gumption to run
    a good cattle auction. 
    诸如此类,可能还有其他的不同,我没法穷举出了,如何有效判别不同于普通结构的特例
    2010年1月13日 16:07
  • 你可以试一下。首先总结一下现有的规则和已知排版格式。
    比如有单词、音标、词性、解释、词组、同义词、反义词、不同使用场景、举例等等。
    然后看一下每个元素有都具有哪些排版,比如这些元素都有分隔符属性。对于举例会有编号。
    总结之后,你可以开始抽象。首先把不同的元素抽象为节点,而排版格式抽象为元素属性。那么经过总结你会获得一个XML
    例如:
    <Dictionary>
    <Word>
    <explain>
    <sperators>
    <sperator value="#"/>
    <sperators>
    </explain>
    <...>
    </Word>
    <Phrase>
    </Phrase>
    </Dictionary>
    这样你就可以用一个XML组织排版规则。
    比如字典里可能出现单词和词组
    对于单词有解释节点。解释节点又有多个分隔符。
    你在用一个Composition模式将这个XML进行对象建模。
    读取文本的时候,根据建模后的结构进行不同内容的处理。如果发现有无法解释的排版规则,就记录log。你可以通过log对XML进行不断的扩展,而不需要修改代码。如果出现新的节点处理类型则在Composition中添加对应的处理类。


    麻烦把正确答案设为解答。
    • 已标记为答案 Fan.z.y 2010年1月15日 11:45
    2010年1月14日 1:43
    版主
  • 谢谢你,早就在老师那听说xml,
    一直没去弄,看来还真得学学,
    自己做轮子实在比较麻烦,多亏了ms,总能设计出省力的解决方案,就是有一点微软的解决方案越来越多,新词流行但究竟在什么情景下应用没有深入大众,至少没有被高等教育中的学生们真正了解,基础教材作者自然不会为微软打广告,所以我想知道微软哪些新技术是怎样从基础学科里延伸出来,以更好的使理论付诸设计应用,从学知识的学生迅速成为能掌控知识解决复杂现实的能手(至少在微软解决方案的帮助下可以快速成为)有没有什么杂志之类的科普下

    2010年1月15日 3:28
  • 多来论坛,哈哈。
    推荐个网站
    http://technet.microsoft.com/zh-cn/default.aspx
    麻烦把正确答案设为解答。
    2010年1月15日 5:41
    版主
  • 看了大家的回复我又进一步参考了一些说法:
    “XML听起来不错,其实有很多问题,比如它其实是一个顺序的文件,你要想查询它的结构,基本上你得把它分析一遍。文件上没法建索引。想在程序中引用信息,编程部分未必如SQL简单。”

    “感觉上XML主要是用来做交流的,就像人类交谈的语言一样,其实用来交流的东西就有很多OverHead,这是为什么图形,音乐,数学公式等的表达方式相对于语言要简洁而有效,所以在很多无需交流的场合根本不需要XML,而大多数后台存储数据用的SQL DB就不要一个标准的自定义、解释、包含、效验的Interface来应付各种的Query。。。”

    “如果定式比较大。就用DB,如果数据格式不定性比较大,就用XML来描述。”

    那 我 想 问 :
    我这个问题能不能用sql解决呢?
    2010年1月16日 8:47