V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jack
V2EX  ›  程序员

关于简体繁体搜索的问题

  •  
  •   Jack · 2014-12-05 17:16:48 +08:00 · 4122 次点击
    这是一个创建于 3431 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如何处理同一个词用简体和繁体打出来搜索不同的问题,比如“邪恶”和“邪惡”完全是两个词,只能先全部转成简体和繁体两个版本然后一起搜么?

    我扫了眼转换的方法,基本都是列出那1万多个不同的字然后去替换,没有更好的办法吗~ 求解
    9 条回复    2014-12-06 11:02:01 +08:00
    yuankui
        1
    yuankui  
       2014-12-05 17:23:33 +08:00
    这个跟英文的大小写是一个道理吧?

    你觉得英文的大小写是怎么处理的??
    233
        2
    233  
       2014-12-05 17:28:34 +08:00
    似乎是的,还有就是类似字但编码不同也要做映射,比如"冈"和"岡"
    bingu
        3
    bingu  
       2014-12-05 17:30:05 +08:00
    你的意思是搜索“软件”,然后就转换为“軟體”,这样。。。
    Jack
        4
    Jack  
    OP
       2014-12-05 17:30:35 +08:00
    @yuankui 英文一个自带函数就处理了,如果你知道php有啥处理繁简中文的函数的话,请一定告诉我。
    staticor
        5
    staticor  
       2014-12-05 18:09:21 +08:00
    如果只是搜索的话, 这2类字就可以理解为 "how fransic 你有 老了啊?" 中英两种文字放在引擎中去查看.


    字对字直接简繁对应的话会出现如 @bingu 说的那样 (恰好 昨天给孩子用一个台湾的程式讲故事,里面说的 "预备" 就是用 "就定位" 来表达的;

    比如 软件在简体字的网页中是关键高频词, 但是

    軟件 可能在繁體字的網頁中就真的不怎麼出現了 (就像你在一在簡體網頁中發現了 '正太' 一样 假设 这个词还没有漂过内地)

    所以要建立繁体 <->简体的对应关系 (不如只考虑one-one mapping)

    但其实只是把字面值换成对应的value的话就会出现 刚刚的问题. 所以只建立字-字的映射可能是不够的,
    应该要建立一个 词-词 的映射,更准确的说 可以只建立**搜索中会用到的key words的映射**




    附录:


    '''
    繁体 b'\xe7\xb9\x81\xe4\xbd\x93'
    繁體 b'\xe7\xb9\x81\xe9\xab\x94'

    软件 b'\xe8\xbd\xaf\xe4\xbb\xb6'
    軟體 b'\xe8\xbb\x9f\xe9\xab\x94'
    '''
    Gn
        6
    Gn  
       2014-12-05 19:45:33 +08:00
    要注意简体到繁体是一对多的,汉字简化的时候把许多不同的字合成一个字(多音字?)。
    并不像是英文大小写的转换那么简单!

    例:
    幹活 干係
    只是 一隻
    一斗米 戰鬥
    寒舍 捨棄

    https://www.byvoid.com/blog/recommend-rime

    http://zh.wikipedia.org/wiki/%E7%B0%A1%E7%B9%81%E8%BD%89%E6%8F%9B%E4%B8%80%E5%B0%8D%E5%A4%9A%E5%88%97%E8%A1%A8
    pierrec
        7
    pierrec  
       2014-12-05 20:02:52 +08:00
    我觉得 参考百度就好
    bugeye
        8
    bugeye  
       2014-12-06 10:06:25 +08:00   ❤️ 2
    @Gn 繁体到简体也一样会一对多,比如繁体的沈,到简体就可以是 沈 或 沉。沉是沈没的沈的俗字。简体不知道为什么非要区分这个。中文里同字不同音不同义的字太多了,为什么非要区别这两个,也属于未解之迷。

    另外,你举的“舍”就是繁体,正体。捨是後来的俗字。儒家经典用的都是舍,没有捨这么个俗字。
    说文解字注里面:“捨,釋也。釋者,解也。按經傳多叚舍爲之。从手舍聲。書冶切。古音在五部。”

    再如,后和後,在古代很多时候都是通用的,比如史记只用“后””,也说不上哪个是所谓的繁体和简体。

    “于”和“於”:诗经一会儿写作“于”,一会儿写作“於”,虽然“于”是俗字,但这个字代替“於”的历史实在太久了,也不好就说“于”就是错的。如果“于”是错的,诗经一半都是错字了。

    对于楼主这个问题,肯定是没有好方法的。事实上,台湾选字和香港用字也是不同的。比如裏和裡。这个字简体简得毫无道理,把路程的“里”来代表概念上的“裏”。

    你可以考虑把所有的字都“简化”成“简体字”,然后再搜索一次,但也会遇到“沈”这样的例子需要先判断这倒底应该转成哪个字。
    Gn
        9
    Gn  
       2014-12-06 11:02:01 +08:00
    @bugeye 谢谢指教,受益匪浅。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1228 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:49 · PVG 01:49 · LAX 10:49 · JFK 13:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.