精华内容
下载资源
问答
  • 如何取汉字的第一个拼音字母(一)

    千次阅读 2007-07-24 19:33:00
    如何取汉字的第一个拼音字母 #region$PBExportHeader$f_get_first_letter_2.srfglobal type f_get_first_letter_2 from function_objectend typeforward prototypesglobal function string f_get_first_letter_2 ...

    如何取汉字的第一个拼音字母

     

    #region

    $PBExportHeader$f_get_first_letter_2.srf
    global type f_get_first_letter_2 from function_object
    end type

    forward prototypes
    global function string f_get_first_letter_2 (string as_string)
    end prototypes

    global function string f_get_first_letter_2 (string as_string);//==============================================================================
    // function:wf_cvt_chinese
    //------------------------------------------------------------------------------
    // description:
    //------------------------------------------------------------------------------
    // parameter:
    //  string as_string  
    //------------------------------------------------------------------------------
    // return type:  string
    //------------------------------------------------------------------------------
    // Author: Jason  Date: 2007-07-23
    //------------------------------------------------------------------------------
    string ls_letter, ls_rtn_string, ls_string, ls_string_hz
    integer li_string_len, i
    long ll_count//, QW

    ls_string = trim(as_string)
    li_string_len = len(ls_string)
    ls_rtn_string = ""

    ls_letter='ysx mcsdqlybjjjgczbdfyawj yhcywgj  dsn      xy sng    lggllyj z yssgyqyd xjyydldwj wbbft xdhgbczsrfmjwyfcwdzpyddwylfaypdftzyjqxxzxnnxxzqbpysyzgmzbqbzcyzbxqsbhgxefmbhhgqcxstglygymxalelccxzrjsdnjjtzzcljdtstbnxtyxxgkwyflhyqspxmxxdjzlshxjbcfybyxhczbjyzlwlcz gtsmdzxpqglsjfzzlslhdzbwjncjysqycjrzcwybtyfdwecskdcbyhyzqyyxzcfbzmjyxxcdcztbzjwszsxyrnygmdthjxsjjccsbxyytsyfbxzgclczzbscyzqscjzqydxlbbjllmqxtydzsqjtzplcgqdzwjbhctdyfxyelbgxxmyjjqfzasyjncydk jcjszcbatcclyjqmwnqncllkbybzzsyhjqltwlccxthllzntylnzxddtceejys    sd  hwnly t jymrymcjgjmzgxykymsmjkmfxmtghpfmqjsmtgjqdgyalcmzsdjlxdffjczfmzffkgpkhrcjqcjdwjlfqdmlzbjjscgckdejcjdlzyckccclfcq czgbdldjjyhddwgsjdaccctllpskghzzljlgjgjjtjjjzczmlzyjklzyzmljkywxmkjlkjgmclykjqlblkmdxwyxysllpsjjjqxyjfjdjdmxxllcxqyjb bggypjyggdjgnjyjkhqfqzkhyghdkllsdjjxeyqxnzsxwwxdjlgxxjaqscsqkjex yzhydz p qyzmtstzfcyldjagylallyyygmqq ldhcssadsgbrlyjsjwrcgqc hmmxjdyohycqgbehwnjdogjlgwqwjycstwesjpwmrdsztxyqpzhyhykhtpbfyhtdwzbtxhqexzxxkhtexwltxymnx hykpmzhxlblbmlsfhyyggbhyjt'
    ls_letter=ls_letter+'ywlqczydqdq g  l s  wyqeqajdytlxanzdexqtwwdgqqdyzbchyqzlxygzgl djt tadyzzcwyzymhyhyjzwcxhdnlyskqydbcywy b qgtyhqsygxmchrwjbwqzlw s s nqbalzzmtjcjtsaxljhhgoxzcpdmhgtysjxhmrlxjkxhmqxtdxwzbkhcczdytxqhlxhyxysyydd znyxjyaykypdhdd pyzndltwxydpzjjcxmtlhbynyymhzllhnmylllmdcppxmxdkycy ltachhznxzlcclylzsxzjnzln lhyntkyjpychegttgqrgtgyhhlgcwyjkyyyttttlhyllyttplkyyqqzdqxsnmjzxyqmktfbjdjjdjptjzgtsyflqgxblzfh zadpmjhlccyhdzfgydgcyxsbhdkdhaxxbfbyyaxzqbfqyjjdljjzlhbjydyjsqwjlzkcdtctbkdzzdqjnkknjgyeglfyka ntchblwzbymjnagzyheybjmctyfzjjhgjpljhdwxxjkyykssmwctqzlpbzdtwzxzagykwxlhlspbclloqmmtslbcdzkdcz jgqjdcytzqwzqcsbptdfqdzdsddtdwfhtdyzjaqqkypdjybtljhdrqxlxaydrjlklytwhllrllcxylbw zymzzhkhxksmdsyyjpzbsqlcxxnjwwdq gqmmczggbtybygbedpjldyhkzbhfdxbawpwajldyjsfhblddqjncxfjhdyjhwzpkzypcyzynxff wdbzznytxyembsehxfzmbflzrsymzjrdjgxhjgjjnzzxhgjkymlpeyyxtwqshdscxmfwkcctxnybnzhzptxwywxyysljzqxzdlaelmcpjclxsqhfwwtfftnqjjjdxhwyznflakyyjldxhhyyncjyywdrmdnqhwqcmfjdyzhmayxjwzqtxdlmrspwwchjb xygcyyrrlmpamkqzyjrmysn'
    ls_letter=ls_letter+'tblnbpyyxyykyngjtznlzhhanmpgwjdzmxxmllhgdzxyhxkrycjmffyyhjfssqlqxndycannmdcjcyprneytyqymbsxndlylyljrlqysqmllyzljmxstynsmcwynzlxbnnylrktryyjzzhsytxcjgxzdphmkczyqhzjnbh qsnjntybknlqhsnswxkhjyybqcbfldpzbkjzxzddjeescmlxxkynmwwwydkzggtggxbjtdszxnx mlptfxlcxjjljsxpwxledhlrwasc ybyawjefwqqjzzyjgxpltqtpakqptlcp btxbhblefdleegqymsawhmljdwyglyjeybqfnlyxrdsctggxyyn kyqctlhjlmkkzgygllldzydhzwbjzkdyzzhyyfqytyzdezklymhjhtwyzlkyywzcskqqtdxwcdyjalwkbdqyncsrszjlkcdcdtlzzacqqzzddxyplxzbqjylzlljdzgyjyjzyxnyyynyjjkgdazwrdljyyyrjlgllyxjcykynqcclddnyyynykhjcl    qzzyjsq pzdnfpzhddwbmyypqjrssqzsqdgpzjwdqjdhzxwybpdgptmjthzsbgzmbjczwbbzmqcfmbdmcjxljbgjtzgmqdybjzyctyztzxtgkmybbcljssqymscxfjwlsszbqjjlydlyctsqmcwfg kbqllljyxtyltydphnhfjyzyesesdhwdjbsjtfd czyjsyjdzjqpbsdjgfbkjbxdgjhmgwjjlhhyyyyywyycdypcbyjzwdlfwxwzzjczcdjzczlxjjtjpfwbxzbtdzbzcyhmlxbjlrdgrgytlfywwwjxjwcyqcttqhxwxkybmpkbntgjyddyfxbyxcbhxbsxtym sxlhkmzxydhwqjskqhcyxglcsqypdhxmy ybyyykzlhqtbqxmyhcwllcylnewcdcmlggqktlxkgndgzwjjlyhjdtnchxerzjydn'
    ls_letter=ls_letter+'ydcqcbhztbxwgwbxhmykdydmqkaqynzsyqgysqyshjgjcnxkzycxsbkxhyylcyxtymgcpmgcccccmztasgqzjlosjylstmqsqdzljqqyplcycztcqqpbqjclpkhz yyxxdtddsjcjffllxmlwcjcxtspyxndtjsjwhqqjckyylsjhaykxcyydmamdjmlmczncybzkkyflmchclhxrcjjgslnmtjggygjddcjzkzqgjyyhzhxqhheytmdjyyylfrzzdgwgscqgw rxqjyaxqz ywbgwgyqdzywnppbazybznbyzzyhnycpjmqcy zpnqtbdjkqqhngzyxchbdgddnzgjdnlzlsjljyxytbgtcskmnjbjyljzfkjhtpzsyjwbzyzlstbwwqsmmfdwjyzttbwzwqcslqgdhqswlyzlgyhydcbtckpjmgmspnkyjynhpwcnszzxybyhyzjkjdllcjthgdxxjzbyw wzggqrhzssnbeydznlqxjme dsdjbltknwqwqtzenqzwzkrscsjccgpdqslccgllzghzqthnjgyaznmckcstjckbjygqjpldxrgzyxcnhgdnlzwjjcddbcjxbfzwpqdhjtywjynlzzbcjdsjj dxyayemmjtcljyryynhjbngzjkmjxltbsllrtylclcnxpllhyllqqqljymcycxslmmc cltldwtjllggjxkygbpdkmwhccgxjczdybxdnddykyjtxdyxmaadzsloxyjsjzylbtxxxqqjz bylwsjjyjtdyqqzzzzjlzcdzjhpy qblffjzysj zfpfzksyjjhxtdxcysmmtcwbbjshfgxfqhyzfsjybxpzlhmbxhzxfywdabalktshxkkjjzthgxh jxkzxszzhhwtzzzsnxdzyawlcwxfgyyhxmyydwqmnlycyspjkgwcqhyljmzxhmcnzhhxcltjplxyjhdyylttxfszhysxsjbjyayrmlckd y'
    ls_letter=ls_letter+'hlrlllstyzyyhscszqxyqfpblf ntljmmtqyzwtlllpz rbdmlgjbzcrqwwxfzetdmcyggyjswjmxybdqc dhxncswjjmbafyfnhydxyezyzsdlsnxcxgbmyyysnbynlhpfzdcyfssssnydzdgbafbdbsszbfgcyjlmlrz yxqzyxzlskbrbrbzcycjzeeyfgzlyysfrykqsxdcyzyjlzxszbykjbbrxllfqwjgyqylpzdjtzabdhzrbjhwnjtjxlkcfsqdqyjhzcwjl bxftzlltlqblcqqccdfbbhczlyyggd wcfczqyyyjysqzflzzfcqnwlhjzjjczkybzzbpdccmhjgxdgdzq fgpsysdfwwjzhyxyyjyhwpbygxrylybhkjksftjmmkhyycyyzpyjydywmtjjrhlqxstws  jyzfnmgjtyxyzmsjyjhhqmyrszwtrtzsskx gqgsptgcdnjgqqmxgztqydjzdlsdglhyqgggthszpyjhhgnygkggmdzllcclxqstgzslllmlcskbdlzzsmmytpzsqjcjyxexyzcpshkzsxcdfmwrllqjrfjlysdctmxdhjndnrtzfqyhqgllgxszsjdjjcdqjlnyhszxcgjzypfhdjsbcczgjjjzjqdyb sslyttmqtbhjqmnygkynqyqmzgcjkpdcgmyzgqllsllclmholzgdylfzsljcqzlylzqjesgnylljxgjqlyjyyyxnbzljsswcqqc yllzldjyllzllbnylgyhxcxqaykxhklksexcqkkkcgyyxyytjohthxpycx lcyeychbbjqzscszsslzylgezwmysx jqqsqyyycmdzywctjsydjkcddjlbdjjzkysqkyxhqjohdyxgmajpc  pljsmtxerxjqd pjdbsmsstktslmltrzszmldjqynbsqxqydyyzbdslmfgbzmdycwfdtmypyytjjzqjjtjhfbgzpjhyxxy'
    ls_letter=ls_letter+'ydyhhnmmcpbzpzzlzfmzdlmyftskygyjyhbzkagh pzdscsjxsjfjgdypyhzcwhjsexfqzywklatmlymqpxxskjjpxzgmwqyjs cjlqwhmybdhyylhlglcfytljcjncpjlkphjntxteylsslsdyhxtcznwtdwjslhtjdjggdphcqfcljlzptynlmjllqynbhylqqzybbywrfykjdsqpxyrhjnwtfwdwrchygmm yyhsmzhngcelqqmtcwcmbxjjfyysjztybmstsyjdtjqtlhynbyqhlcyzhzmylflwxypjysylymzctdwgszslmwzwwqzsayysssapxwcmghhxdzyjgsjhyglcxyxhbbzkssmalhycfygmqyjycxjlljgczgqjcctotyxmtthlwtgpzkpzzxkjyclctjzyh xsgzkxzpjjpdhjwpjgxqyxsdmrszzyzwtxkytshbcsplwssdjhjlchhylhfghxjsxalnylmdhzxysxlozyhcldyhzmdyspj qznwjpsjwctsdszlnssmnyymjqjzwtydchqlxawbgqybkfcmjwlzllyylszydwhxpcbcmljscgbhxlqrljxyswwxzlldf hlslymjljylyjcdnjlfsyzfnllcqyqfjyyszlylmstdjcyhzllnwlqxygyygxxhhzyxczqzbnwpypkpypmlgxggbdxzzkzfbxxlzptytswhzyxhqhxxxywzyswdxzkhzphgchc lfjxptzthlyxcrhxshhkjxxzjdxj lyjlkhtxcwhjfacfpqryqxyjy gpgwsgsy gwchkzdhflxjbyzwtqxxncyjjmwyjqrhfqsyljzgynslgtcebyxxwyhhyynsqymlywgyqbbzajlpcytjzhyzwlhorjkczjxxyxchcyqyxqjddsjbxyltsxlmtyjmj yyxltcxqzlhzlwyxzhd brhxjctshlbrlmrllaxksllljlyxxlycry l'
    ls_letter=ls_letter+'ctgjcmtlzllyzzpcwhjyzeckzdqyqpcjcyzbbbcydcnltrmfgygbsygmdqqzmkqlpgtbqcjfkjcxbljmswldtqxldlppbxcwrcbjczggbhyyfzkzmpjyxylpnyyxdb'+space(30*56)+'                             kxhmzjxsttdmxxbzyshjpfxpqbyljqkyzzzyl zgfwyctygjbyysbmsmydyshqy zcgmjmcagcbbbhblytyxxsdjgjdhkxxnb'+space(93)+'hnmlngsltxmrnexqjyxlsqglbhdcgyqychwfjymbyjyjydpqyapfxcgjscrssyj lbzjjjlgxzyxyxsqyxbxxgcxpldywetdw'+space(93)+'wcjmbtxchqyxxfxlljsfwdbzcmylmwwtcbcecblgdbqzqfjdjhymcxtxdrmjwrh xcjzylqdyhlsrsywwzjymtllltqcjzbtc'+space(93)+'kzcyjjzqalmyhwwdxzxqdlljsgjfjljhjazdjgtkhsstcyjfbszlxjxrwgldlzr lzqtgslllllymxwgdzybbhl h bpfd  w'+space(93)+'hy jcc dmzpbz cyqxldoclwdwyythcqsccrsslfyfpdqmblslmyfgjbtm jwfn mmjtgbdzlpyhyymjyldhdzjcctlcldljc'+space(93)+'pddjdsdnbgzxxcjqycbzxzbzfjsnttjyhtcmjxtmxspdsybzgmljdacbmdkycsz zyfyctgwhkyjxgyclndzscyzssdllqflq'+space(93)+'llxfdyhxgwnywyllsdbbbjcyjzylhljxyyytdlllb bffqbzmbclmjpgehbcqap hhhzchxyhjaxhlphjgpqqzgjjzz zdqyb'+fill('a',36)+'bbbbbbbbbbbbbp'+fill('b',34)+'pbbbbbbbbzhhbwyffq'
    ls_letter=ls_letter+'dlzljxjpalxzdaglgwqytxpfmmsypfmxsyzashdzkjsmmzzsdnzcbp ltddnmxzymzmmqhhczjemxxkstgwlsqlz'+fill('b',56)+'p'+fill('b',36)+'llzjphlyzyhmxxhgzcjmhxtxfwgmwkdthmfzzydkmsclcmghsxpslcjyxwgjyah jzmcsnxyymmpmlgxmhlmlgmltkzqyszjs'+fill('b',30)+'bb'+fill('c',61)+'hyzjzybddzwdkgdjlfwekzjbezswjmjyltemznplplepykkqzgeqlwakyplhqwq  kkclhyxxblyccyskg hlcnszkydkcqzqcccz'+fill('c',50)+'s'+fill('c',38)+'ljbmjhqlywqlnrydtykwsadxddntqdfqqmgxelttkpwtqqlwydl yzcqapllkcc ylpqqczcljslzjxddbsqdljxzqjyzhkzlccccccccccccccccz'+fill('c',60)+'ddddddddddddddddjcyhdyppypeakjyrpcbymxkllzllfqpylllmsglcyrytmxyqbdz ysyztfbsmcl ywzgxzggljsgkdtggzlldzbchyyzhzywx'+fill('d',51)+'z'+fill('d',41)+'yzymsdbzyjgtsmtfxqyjscdgslnmdlyzzlrxtrznzxnqfmyzjzykbpnlypblnzz jhtzkgyzzrdznbgxskgjttyllgzzbjzkl'+fill('d',73)+'eeeeeeeeeeeeeeeeeeeepbzyl yqbjfbnjzzxcdljyxzgyrsrjksmtjlsjywq yhqjxpjbtzlsnshrnypjt wbhklbsjlzyysjylybbwkpdwwcyxckdzxe'+fill('f',92)+'sgzwwyqyytctdllxwkckkkcclzcqqdzlqcsfqchqhsfmkzlnbbshjdysjqplzcd cwjkjlpcmdwjsqyzyhj'
    //ls_letter=ls_letter+'bydsdzngqmbsplfffffffffffpffffffffffffffffffff'+fill('g',49)+'hgggggggggggnffgfsmxqmlgqcyybkjsrjhzldcftlljgjhyxzcszztjggky xblbbbgtdyjdhz zzlljfzgqjcczbxbsxpxhyyclwdxjjxmf'+fill('g',93)+'hfzhqqmqgsyhtycnznqxgpdhcszqljbhbdcyzcpbytzsgyhckpzjljnscdsllxb msdldfjmkdjzlxlszqpqpgjllydskgqlshhhhhhhhhhhhhhhhhhhhhhhhhhbhhhhhhhhhhhhhhhhhhhhhm'+fill('h',44)+'lkyyhjttmcyqtzzbszqztlljtyyllqllqyzjlbdzlslyyzyfszsnhnczqzbbwck rbcyzmthgjmzlshtclzbleqhxflyljqbz'+fill('h',86)+'jjjjjjjjhstbmzjlxfnbgxjztsfjmssnxlkbhsjhtnlzdntlsjgzjyjczxyhygwrwqnztn fjscpzshzjfyrdjfzjzbfzqchzxfysbzq'+fill('j',86)+'kjjjjjjlzsgyfttdcszxzjbqmszkjrhyjzcgbjkhcggtjkjqglxbxfgdrdylxjgdtsjxgj jjzwzlcqsbtxhqbxttxhxftsdkfjhzyjf'+fill('j',35)+'y'+fill('j',58)+'x zcdlllcqcqzqwqxswtwgwbzcgzllqzbclmqqtzgzxzxljfrmyzflxysqxxjk xrmjdzdmmyybsqbhgzmwfwtgmxlzbyytg'+fill('j',93)+'zwccdxyzxswg yjyznbgpzjcqswxsjrtfyzgrhztxszzthcbfclsyxzljqmzlmp lxzjxclbysmqhxjsxrxsjzzzsslyflczjjjxjjkkkg'+fill('k',84)+'rcrxhhzxqydshjsjjhqcjjbdynsysxjbqlpxqpy'
    ls_letter=ls_letter+'bydsdzngqmbsplfffffffffffpffffffffffffffffffff'+fill('g',49)+'hgggggggggggnffgfsmxqmlgqcyybkjsrjhzldcftlljgjhyxzcszztjggky xblbbbgtdyjdhz zzlljfzgqjcczbxbsxpxhyyclwdxjjxmf'+fill('g',93)+'hfzhqqmqgsyhtycnznqxgpdhcszqljbhbdcyzcpbytzsgyhckpzjljnscdsllxb msdldfjmkdjzlxlszqpqpgjllydskgqlshhhhhhhhhhhhhhhhhhhhhhhhhhbhhhhhhhhhhhhhhhhhhhhhm'+fill('h',44)+'lkyyhjttmcyqtzzbszqztlljtyyllqllqyzjlbdzlslyyzyfszsnhnczqzbbwck rbcyzmthgjmzlshtclzbleqhxflyljqbz'+fill('h',86)+'jjjjjjjjhstbmzjlxfnbgxjztsfjmssnxlkbhsjhtnlzdntlsjgzjyjczxyhygwrwqnztn fjscpzshzjfyrdjfzjzbfzqchzxfysbzq'+fill('j',86)+'kjjjjjjjzsgyfttdcszxzjbqmszkjrhyjzcgbjkhcggtjkjqglxbxfgdrdylxjgdtsjxgj jjzwzlcqsbtxhqbxttxhxftsdkfjhzyjf'+fill('j',35)+'y'+fill('j',58)+'x zcdlllcqcqzqwqxswtwgwbzcgzllqzbclmqqtzgzxzxljfrmyzflxysqxxjk xrmjdzdmmyybsqbhgzmwfwtgmxlzbyytg'+fill('j',93)+'zwccdxyzxswg yjyznbgpzjcqswxsjrtfyzgrhztxszzthcbfclsyxzljqmzlmp lxzjxclbysmqhxjsxrxsjzzzsslyflczjjjxjjkkkg'+fill('k',84)+'rcrxhhzxqydshjsjjhqcjjbdynsysxjbqlpxqpy'
    ls_letter=ls_letter+'mlxzkyxljcjlcysxxzzlllll hrzzdxytwxsxffqbpxzgygztcqwyltlsgkkkkkkkkkkk'+fill('l',83)+'mgzjmmgtjfsgzyafsmlbfcwbjcljmzlpjjlmdyyyfbygyzmyzyrqqhxyykqyly fsfslnqgcfhccfxblblzyxxxkhhxshjds'+fill('l',94)+'xczwhhhplhalpqahxdlgggdneztpyqjjcljzljlhyhyqydhz zczywteyt hsl jbdgwxpcd tjckllwkllcsstknzdnqntt'+fill('l',71)+'mmmmmmmmmmmmmmmmmmmmmmmzsszyqkcgbhcrrychbppyrwqbbxkdbbbqtffznpzfxmqkcypzxehzgztcmxxmx nwwxjyhlctmcsjtjjyxtctdnpglzcjlsb'+fill('m',94)+'plqhdnndszjdpgwmndclodansyzrdwjjdbcqwstszyljpxlocbgpcjfzljylxc tnlcgxtpzjwc xwfzdknjcjlltqcbxnqz'+fill('m',30)+'mmmm'+fill('n',59)+'xbxklylhzlqzlnzqwglgjjgxbngjdjxtxctyxjjxsjtstppghtxdfptffllxhpk fzflyl bnjhkbmddbcycldxyddqlyjjwqnnnnnnnnnnnnnnnnnnnnnoooooooo'+fill('p',65)+'lcsjpyycldtjpycmgyhzhsztwqwrfxhjjazmrhyyyqpddlybyznbbxyxhzddnh msgbwbzzjc xllrzcwhzlwdgcggnyzpmz'+fill('p',30)+'ppppppppppppppppppppppppppb'+fill('q',30)+'qqqqqqqzhfgdcjeaqqpjlszdcydwldfrybyscnwbxgzmzjtqscpmxjcjychcjwynxxwjn mt mcdqdzllwnkpzgglcczmlbqjqdjjqt'+fill('q',94)
    ls_letter=ls_letter+'hqywbzjlttdhhcchflsyytjgcztjbym pdjkxwyyflxncwcxbmaykkjmzzjrxy aqjfljphhhytzjmhsgzjwbwjdyjqqhslzqqqqqqqqqqqqqqqqqqqqqqqqqq'+fill('r',59)+'ssssssssyymyszgrx wysyscsyznlqyljxcxtlwdqjpcycyppnxfyrcmsmslxglgctlxygz gztcp sllytmtzalzpojtjwtcyyjblbzl'+fill('s',94)+'myljbghdlssdhbdcsxhamlzbjmcnhjyjygchskqmzzlwjtsmocdjlyqzhjmyby lyetfjfrfksyxfdwdsxxlwsjslyxsnxwy'+fill('s',93)+'xhahhjzxwmljcsqlkydttzslfdxgzjksxybdpwnzwpqzczenychqfjykbdmljqq  qslyxxylljdzbymhbstt qwlhogwblzz'+fill('s',61)+'xssssssssssssssssssssssssssstttttlxqlterrqlstmypyxjjxqsjfbxyxyjllyqylthylymlkljdmllhfzwkhljlhlj klj tlqxylmbtxchxcfxlhhhjbyzzkbxs'+fill('t',94)+'qd jzyygzxbebcqwyyjqtqwjyqqzmwffhfrbndpcjlfzgpbxdbbztgylchbfly xlypjsywmngqlxjqjtcbhxzpxlbyyjddh'+fill('t',57)+fill('w',37)+'jqyjxlldtkhhbfwdysqwnwldebdwcm ljtmxmjsxynwfymwrxxysztzztymldq lwayyjbscqwlbrjwxhybhydnhhgmywytz'+fill('w',83)+'xxxxxxxxxxx qtsdlwdcjpyjlqyjwxmzzmylclmxcmzsqtzpjqblgxjzfljjycjnxwcxsccdl dyjdjjxsqyclzxzzxmxqrjhzjbhfljlml'+fill('x',34)+'s'
    ls_letter=ls_letter+fill('x',59)+'nldxzlllpypnyysxcqhcmjzzhnpzmekmxkyqlxsdlyhwdcwdzgyyfpjzdyzjtx rzjcyrtlbyzbsjkxzypbdfgzzrytngxzqxxxxxxxxxxxxxj'+fill('x',33)+'h'+fill('x',34)+'cxxxxxxxxxxymb nqkrjjbjerzgykx knsjkljsgzljybzsqlbcktylccdlpfyydzyjgkqttfc xdkdyyyfytyypdwtghrynjcbsnyjhkllsxxxxxxxxxxxxxxxxxxxxxxxx'+fill('y',71)+'dxxwbcjsbbpjjjcjdzbfxxbrmlaygcsnclddtblpz dwsbxbcllxxlzdjzsjy lyxbf bhjjjgbygjpmmmpssczjmtlyzjx'+fill('y',94)+'wxtyledqpjmygqzjgdblqjwjqllsdgytqjczcjdzhqg gjhqxnjldbxsgzhcwy ljwywydfkqjjfxdhctxjyrxysqtjxyeb'+fill('y',95)+'ssyxjnncyzxfxmsyszxyyschshxzzzgzzgfjdldynpzgyjyzdyqzpbxqbdztzc zyxxyhgsqxshcggqhjhgxwszdmmehyxge'+fill('y',30)+'yyyyyyyyyyyyyyyyyy'+fill('z',39)+'czzzzzzdylzkkwjzrcleketdbcykqqsayxcjxwwgsbhjszsdhcsjkjcxswxfltynydbzc czjqtzwjqdzzzqzljjhlnbhpydxpdxshgzzzszzzzzzzzzzzzzzzzzzn'+fill('z',35)+'s'+fill('z',36)+'dxfptjqyzzxhyagncfzyyhxgnqmywxtzspdhhgymxmxqzhtsbcqyjyxhtyyzy bclmmszmjzjllcogxzaajzyhjmzhwdxzs'+fill('z',95)+'dznleyjjzjbhqwjzsqtzpsxztdsxjjlnyazhhyysrnqdthzhay'
    ls_letter=ls_letter+'jyjhdzjzlsw clybzyecwcycrylcxnhzydzydtrxxbzsx'+fill('z',89)+'    qhxjhhljxlgdlqfdbsxfzzyychtyyybhecykgjfxbzjfxbwhdzfyapnpgdymshk mamnbyjtmxyycthjbzyfcgtyhwphftgzzcjwgnspgcgnesypbtyyzdxykygtdjnnjqmbsgzscyjsyyqpgkbzgycywjkgkljywkpjqhytwddzlsymrypywwcckznkyygzsbzegpbmdskftycmhbllhgpzjxzjgzjyxzsbbqsczzlzc stpgxmjsfdcczjz djmcybzlfcjsazfgszlybcwzzbyzdzypsttngjeykkzytcjnmcylqlypysfqrpzslwbtgkjfyxjwzltbncxjjjjtxdttsqzycdxxhgckbphffsswybgmxlpbylllhlxyjgxzbdsy xlgzybzfyxtxccxtzlsqyxzgqdczddxzjjqcgxtdgscxzsyjjqcw ldqztqcgjqjzyezwkgcpypqtynlmkcqzjspzmyjhsojnghdzqyklgjhsgqzhxqgkezzwyscscjxyeyxadzpmdssmzjzqjyzcdjzwqjbyzbxgznzcpwhwxhqkmwfbpbybjnyjddzqzxdbzjcdqcdcknqbqmsjq jjwwjjnjnlllwjzqjdzpzydcydzcttb znztqzddjlzbclltdsxkjzqdpzlzntjxzdtjzzkqxylygxfptyjyyzpszlfchmqshgmxxsxjjsdcsbbqbefsjyhxwgzkpylqbgldlcdtnmayddkssngycsgxlyzaypncjltqjldgdbbjqdcjwynzyzcdwllxwlrxntqjczxkjldftdglrlajjk ymkqll tzytdyyczgjyxdxfrskstqdenqmrkqzhhptsdkdylhgymylcxpycjndqjwxqxfyyfjlejpzrxccqwqqsbzkymgplbmjrqcflnymyqmt'
    ls_letter=ls_letter+'qyrbzjthztqfrxqhxmqjcjlykdldazfkypbggpzfebzzykyqspegjjglkqzzzslysywyzwfqzylzzlzhwcgkyp qgnpgblplerjykcccyyhsbzfwbnyytgzxqgjmshzkbswyemyltxpsydswlycjqxsjnqbsctyhbftdcyzdjwyghqfsxwckqkxebptlpxjzsrmebwhjlbjslyysmdxlcyljczwhxzjzblfflgskhyjzeyjhlplllldzlwczblcybb bcbbnnzcyrfsrcgyt qzwtzdhdezcnzzwtyqhdynyjlxdjyqdjyqkxlhxjrzjmfqhxhwywsbhtrxxglhqhfnmnykldyxzpylggtmtcfpnjjzyljtyanjgbjplqgdzyqyaxbkysecjsznslyzzwlshglbcjbyzjyctdyndsactszyyegdwnycxtdzysmgzsccsddlccrqxyyelsm hztebblyylltqsyfwfkbxsychbjbwkgskzxlzcghpxzhznytdsbcjkdlzayfmytlebbgqyzkggldndnyskjshdlyxbcgyxypkdjmmzngmmclgezszxzjfznmlzzthcsxjhgxgnlycdlfwljgbqjaqqzjplnybxjyqymrbsyyhkxxstmxrczzywxyhymcf lzhqwqxdbxbzwzmldmyckfmklzcyjyczhydbdllscddnlkjykjsycjlkwhqasdknhcsgaehdaashtcplcpqybsdmpjlpcjoqlcdhjxysprchnwjnlhlyyqyhwzptdzxzlyyzmddzyftqpczcyypfhwllytzdzjdtqcyfksccyyazjpcolzyjtpnyyynrs ylmmnxjsmybssljgyldzdpqbzzblfndsjwwmzffjqqqqyxaclbhkdjxdgmmydqxzllsygxgkjrywzwyclzmssjzldbydcpcxyhlxchyzjqsfqagmnyxpfrkssbjlyxyczfywggqmrdsxycytx'
    ls_letter=ls_letter+'nqqjpyybfqjdyqfbnqejdgyqbxrcnfyyqbghyjdyzxgr htkyl wdzntsmpklbcgbpyszbydjzsszjsyglnscmhcwwmnzjjlxxhchsydsttxrycyxbyhzsmxjsznpwgpxxtaybgajcxlysdccwzocwkccsbnhcpdyznfcyytyckxytxzbhbscsbzczptqfzmqflypybbjgxzmnxdjmthyskkbtxhjcegbsmhyjzcjt mljyhrzzslxjqpyzhmkttxxjcljprmyygkybsqkkytqqxfcwchcykelzqbsqyjqcclmthsywhmktlkjlycxwheqqhtqkzpqsqscfymmdmgbwhwlgsllysdlmlxpthmjdyskjs dhrzkqxnyztcggydlmlwxybsycdbhjhjfcwztj wtkclxqshlyczjxe mplpdcgltbzztlnjcyjgdtcfglpllqpjmhwljzyhzjxhtxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsxymqshxpjxwmyqksmyplrthbxftpmhyxlchlhlzylxgsssstczbabgyzlaktkdwczzbnzdtdyqzjyjgmctxldgcszlmlhbglkfwnwhdx hlfmkyd lgxdtwwfrjejztzhydxykshwfzcqshktqsldclrpbhzhxyyfhbbgdmycnqqwlqhjjzywjzyejjdhpblqxtqkwhlchqxagtlxljxmslxhtzkzjkcxjcjnmfbycsfywyqhtzhymjdjskhxzjqbzzxympagqmcdbxlskyynwrtsqgsdbpdbsgzwyhtlksssw gzzlyytnxjgmjszs fwnlsoztxgxlsmmljzgnysdzsqyrsljpclpwxsdwejbjcbcnaytwgmpapclyqpclzxsbnmsggfnzjjbzsfzyndxhplqkzczwalsbccjxjyzgwkwldqzyakqcqctmycfjbslxclzjclxxksbzqclhjphq lsxxckslnhpsfqqyt'
    ls_letter=ls_letter+'xy jzlqldtzjjzdyydjntpd zdskjfsljhylypsgxfzfcdkhjgxtlqfsgdslqwzkxtmhsbgzmjzrglyjbpmlmsxlzjqqhzyjczydjwbmjklddpmjegxyhylxhlqyqhkycwqjzlbthydgcjfdyazxdzhzjnhhqbyknxjjqczmlljzkspldsclbblxkleljlbj ycxjxgcnlcqplzlzyjtzlxyjbxmyztwyccjmyyxnatjhyccxzpcqlbzwwytwsqcmlpmyrjcccxfpznzzljplxxyztzlgdltcklyrzzgqtgjhhgjljaxfgfjzslcfdqzyhzbtrblhlczzjadjlmmmsshmybbbskkbhrsxjjmxsdznzpelbbrawggfchgm  klltsjyycqlcskywyyhywhbhqywpawykqlclgjdjcznzlljpjqdcclcjxmyzftsxgcgsbrzxjqqctzhgyqtjqqlzxjylylbcyamcstylpdjbyregklzyzhlyszqlznwdq tntkhqcwdqktgpkxhcpdhtw bkdhthlxyyyydespgyzpceqdltbdsdegyjq jcwxssbzxdpydlyjclsxydyexcyyydwndczcllwjqjjjkdgjzolbbzppglghtgzxyghzmycnqsycyhbhgxkamtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkqsbjaydywtjdaxysrltdpsyxfnejdyzlxllhzyqjhgjhzycshwsgczyjgllnxzjjn fxmfpycyawddhdmczlqzhzyztldywllhygbmmcjssclpqpdxcdyykyfcjddyygywrhjrtgznyqldkljszzgzqzjgdykshpzmtlcpwnjyfyzdjcnmwescyglbtzcgmssmylmbwwkxydtyldjpyw xjmmllhafdllaflbhhhbjtzcqljtfmbmhydcjrddwr qnysnwzbyytbjhpbygtjahgqtystjkbtzllyxys'
    ls_letter=ls_letter+'xxbsjsbbsgghfjlypmzjnlyywdqshzxtyywhmcyhywdbxbtlmsyyyfsxjcstxxlhjhfssxzqhfzmzcztqcxzxrttklxb qqhqmjd ttxpgbktlgqxjjjcdhxqdwjlwrfwjgwqhckryswgbtbygbwhd wdfjxxxjzlpyyypayxhydqkxsaxyxgskkdjhnnyzqqmtqdmmgyytxmjgdhcdyzbffallztdltfxmxqzdngwqdbdczjdxbzgsqqddjcmbkzffxmkdmdsyyszcmljdsynywbdddpplcj hqeewjksyykdypltjtpkjltcyyhhjttpltzzcdlthqkzjqyste eywyyzyxpyysddjkllpwmcyhqgxyhcrmbsprskmkmpcklgdbqtfzswtfgglyplljzhgjjgypzltcsmcnbtjbqfkthbyzgkpbbymtdssxtbnpdkleycjnycdykzddhqxpllnqtjpyylfdgfxzpsbtljxxjbswyysksflxlpplbbblbsfxyzsylfffscjds tgtryycyffcyzyzbjtbctsbsdhrtjhbytsyzsctarlltkzlgecllkjlqjaqnbdkkghpjtzqksecshalqfmmgjnlyjbbtmlyzxdtjpldlpcqdhzycbzsczbzmsljflkrxyjelxbnebjdsyxyhgcjzbxbydfzwgenyhhhjhatfwgzstbgxklstywmtmbyxj skzscdyqrcwxzfhmymcxlzndtdhlxdjggzjsnfrgjhxpdhyjybzgdlqcsezgxlblhyxtwmabchecmwyjyzlljjyhlgbdjlslygkdzpzxjyyzlwcxszfgwyydlyhcljybfbnbbthfjaaxwfpxmyfhdttcxzzpjrsywzdlybbkdyqpqjpzypzjznjpzjlzt fysbttslmptzrtdxqsjehbzylzdhljsqmcmbjhblyzlycblydpdqysxqzbytdkyxjyycnrjmpdjgklclj'
    ls_letter=ls_letter+'bctbjddbblblczqrpyxjcjlzcshltoljnmdddlngkaqhqlhtxtjecxalzdspktlzkqqyfsygywpcpqfhqhytqxzkrsgttsqczlbtxcdyyzss qzslxlzmacbcqbzyxhbsxlzdltcdjtylzjhykheznmshrphqqjchgmfprxhjgdychgklyrzqlcyqjnzsqtkqjymszswlcfqqqxyfggyptqwlmcrnfkkfsyylybmqammyytpzylltxjsjxhlbrybxqzskswwwygyabbztjktgpysbxpbcmllxztbklgqkq lskdfxrdkbfpftbbmfeeqgypzsstlbdpsmyxctpshcptxxzzsmphpshmclmldqfyqxszyjdjjzzhqpdszglstjbckbxyqzjsgpsxqzqzrqtbdkyxzkhhgflbcsmdldzzsjdhlqlzpmsmmsxlqqnknbnddnxxdhddjyyyfqgzlgsmjqgxytqlgpbqxcyzy drjbgtdjyeeshtmjsbwblwhlsffnypmhxdzdblzyycxnncsybzbfglzzxswmsccmqnjqsbdqsjtxxmbltxzclzshzcxrqjgjylxzfjphyjzqqydfqjjlzznzjcdgzyxhpltbqpfbjwjdbygpnxtbfzjgsdddjshxeawzz lltyybwjkgxghlfkxdjtmsz sqynzggswqsbhtlsskmclzxyszqqxncjdztxmzysctlkphtxhtlbjxjlxscdqxcbbtjfqzfsltjbtkqbxxjjljchczdbzjdczjdcprnpqcjpfczlclzxzdmxmphjsgzgzdlfnyklacjllzlmzjnhydsshthxzlzjbbhqzwwy rdhlyqqjbeyfsgxwhsrx wjhwpslmssgz tyeyqqwrslal mjtqjsmgszzqlylwtjpfsyaxmcjbtzyycwmytzsjjlqcqlwzmalbxyfbpnlsfhtgjwejjxxglljstgshjqlzfkcgnndszfdeq'
    ls_letter=ls_letter+'fhbxqbjjzjqtyzkxbyqxbjxshztsfglxmxzxfghkzssggylclsarjyhslllmzxelgl xdjtbgyzbpktzhkzjyqsbctwwqjpjwxhgaqtgylbxmmygszldydqmjjrgbjtkgdhgkblqkbdmbylxwcxyttybkmrtjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhzgnyfljbyfdjfrgsfmbyzhqfbwj yfaggphzbyyzffwodgrlbftwlbzgycgxcdj ygzyyyytytydwegazahxj zyyhlrmgrxx'+space(93)+'dclhneljjthtbwjybjjbxjjtjteekhwsljplpsfazpqqbdlqjjtyyqlyzkdksqj yyqzldqcgjjyzjs cmraqthtejmbctyhy'+space(93)+'bkmhyzw dqfhyyxwshctxrljgjxhccyyyjltktsytmxgtcjtzayyoczlylbszyw jytsjyhbyshfjlygjxxtmzyyltxxypzlx'+space(93)+'yjzyzyybnhmymdyylblhlsyyggllsqxlxhdwkqgyshqywljyyhzmsljljjcjjyy cbcpzjmylcjlnjjjlxyjmlzjqlycmhcfm'+space(93)+'mfpqqmfylmcfqmmmz fhjgtthkhchydxtmjdymyydyyydydcymdydlfmycqzwzz mabtbzmdzgdfycgqyttsfwbdtzqssstjj'+space(93)+'hjytsxlywwkxexwznnqzjjjjccchyyxbzxzcyjtllcqxynjycyycynzcqyyoewy czdcjehylpwp mlgkdldgqbchjxy'

    for i = 1 to li_string_len
     if asc(mid(ls_string,i,1)) > 128 then
      ls_string_hz = mid(ls_string,i,2)
      ll_count = 190 * (asc(left(ls_string_hz,1)) - 129) + asc(right(ls_string_hz,1)) - 64 + 1

      if ll_count < 1 then
       ls_rtn_string = ls_rtn_string + "Z"//"?"
      else
       if ll_count>len(ls_letter) then
        ls_rtn_string = ls_rtn_string + "Z"//"?" default Z if not found
       else
        ls_rtn_string = ls_rtn_string + mid(ls_letter,ll_count,1)
       end if
      end if
      i = i + 1
     else
      ls_rtn_string = ls_rtn_string + mid(ls_string,i,1)
     end if
    next

    return trim(upper(ls_rtn_string))

    end function

    #endregion

     

    展开全文
  • 用Python写一个拼音输入法

    千次阅读 2020-09-12 00:02:53
    拼音输入法的简单实现可以归结为使用维特比算法求解汉字隐马尔可夫模型的问题:将用户输入的拼音转换为字层,使用维特比算法求解得到概率最大的一个“字链”,这个“字链”便是拼音输入法输出的文字。...

    拼音输入法的简单实现可以归结为使用维特比算法求解汉字隐马尔可夫模型的问题:将用户输入的拼音转换为字层,使用维特比算法求解得到概率最大的一个“字链”,这个“字链”便是拼音输入法输出的文字。主要的几个步骤包括:

    1、语料数据的预处理:把语料内容从文件列表中抽取出来,分句,去掉非中文字符。2、在所有语料中,计算每个汉字的出现频次。3、在所有语料中,计算当前汉字与其前面的汉字共同出现的频数,并计算其频率。4、建立输入拼音与汉字的匹配关系,构造输入拼音对应汉字的隐马尔科夫模型。5、使用维特比算法求解,得到概率最大的一个“字链”,取这个“字链”为输出的句子。6、测试准确率。

    1 代码构造

    根据需求和实现步骤,写3个python程序。

    第一个根据输入的语料库,计算汉字出现的频次、汉字与前一个汉字共同出现的频次和语料库的总字数。

    第二个,首先根据“拼音汉字表”构造拼音与汉字的对应关系,将用户输入的拼音通过这个对应关系形成一个隐马尔科夫模型。根据第一个程序得出的结果,使用维特比算法,计算得到概率最大的“字链”,将这个“字链”输出为句子。

    第三个,使用测试数据集,测试输入法的准确率和整句准确率。

    代码结构如下。

    2 实现过程

    2.1 数据预处理

    模型使用2016年2月、4-11月共9个月的新浪新闻语料数据进行模型训练。在训练之前,使用re.split()对语料中每一条新闻进行分句,分句依据为特定的标点符号,作为分句的标点为:(1)中文标点“:”、“。”、“……”、“,”、“?”、“、”(2)英文标点:“:”、“,”“!”、“?”。

    由于只考虑6763个一二级汉字,为提高模型的可靠性,在分句时,如果这句话出现基本汉字之外的汉字,则不将这句话纳入模型训练。另外,使用“零一二三四五六七八九”代替阿拉伯数字“123456789”。同时,在每一句话中去掉所有非中文字符。对每一个数据集的每一条新闻都做同样的分句和数据处理,得到训练句子集。

    2.2 生成汉字频数矩阵

    对于已经得到的句子集合,以一二级汉字为统计对象,统计每个汉字的频数、每个汉字出现在句首的频数、当前汉字与前一汉字共同出现的频数、所有汉字的累计出现频数,分别定义hzarray、headarray、hzmatrix和totalNum 4个变量来存储这些数据。hzarray、headarray是数组形式,hzmatrix是矩阵形式。

    2.3 生成汉字的隐马尔科夫模型

    根据拼音汉字表,生成拼音与汉字对应关系的字典,并将输入的每一个拼音转化为对应的所有汉字。假设在一个句子中,每一个汉字的出现仅与前一个汉字有关,以每一个拼音所对应的汉字作为字链中的一层,生成汉字的隐马尔科夫模型。句首汉字的出现概率与其自身出现的概率与出现在句首的概率有关,用λ1来调节。同时,在计算概率时,将相应汉字的频次从各频次矩阵中提取出来,计算各个汉字出现的频率。由于总的汉字数超过4亿,在这里将上述两个概率以频率近似以频率代替。

    在完成计算后,得到汉字的隐马尔科夫模型λ=(A,B,π),其中,状态转移矩阵A为当前汉字与前一汉字共同出现的概率矩阵,观测矩阵B为当前汉字出现的概率。初始矩阵π为句首汉字概率矩阵。其计算公式如下:

    汉字的隐马尔科夫链如下图。

    2.4 构建维特比函数

    在拼音输入时,使用.lower()函数将输入的拼音转化为小写。

    (1)对第一个节点,有:

    若只有一个拼音输入,取δ1(i)最大的节点,即:

    当输入两个以上的汉字时,先考虑句首汉字的概率,在完成过程(1)的基础上,完成如下过程。

    (2)从第2个节点开始,有:

    (3)终止,得到:

    (4)通过iT*,对t=T-1, T-2,...,1进行最优路径回溯:

    通过以上过程,得到字链的最佳路径I*=(i1*,i2*,...iT*),由I*查找对应的汉字,即可以组成输出的句子。

    在写代码时, 放到同一个数组p_num中, 放在同一个矩阵p中。

    2.5 构造测试函数

    使用Levenshtein.hamming()计算实际汉字和拼音输入法输出汉字之间对应位置上不同字符的个数,用该段汉字总数减去不相符汉字的总数,得到该段汉字字符相同的汉字数。对每段汉字进行上述操作,加总除以总字数,得到准确率。整句准确率以完全相同的句子数量除以句子总数得到。

    3 实现效果

    在实现上,构建了testinput()和testaccuracy()两个函数。test_input()实现在命令行中输入拼音,输出汉字的效果。

    testaccuracy()用作准确率测试。使用拼音数据inputdomo1.txt进行测试,取λ1=0.8,准确率为78.1%,整句准确率为25.6%。

    使用新浪新闻的拼音数据input_domo2.txt测试,取λ1=0.5,拼音输入法准确率达到86.4%,整句准确率达到47.4%。

    4 效果好的和效果差的,对比分析

    在未分句时,使用整段新闻去掉标点和生僻字后得到的输出汉字,输入拼音“wo ai ni”会出现“我哎你”的情况。

    分析发现,出现在一句话的句末的频次较高的字与出现在句前频次较高的字会有较高的概率共同出现在一起。所以,最终在计算各汉字频次时,使用分句的形式进行。为提高准确率,把阿拉伯数字转化为汉字数字,当句子中出现不在一二级汉字表中的汉字时,不将这句话纳入计算中。虽然计算时间基本不变,但是计算准确率得到提高。

    同样,由于训练语料库的特点,与训练语料库同一来源新浪新闻测试集的准确率显著高于其他随机输入的拼音测试集。对于新闻中出现的热词准确率很高。

    5 对照参数选择,性能分析

    更改值,使用拼音数据input_domo1.txt进行测试,发现准确率变化幅度不大(如下图),但是取λ1=0.8时,准确率能够达到一个极大值。

    6 总结收获

    这是我人工智能课的第一次大作业,花了很多时间,也学到了不少东西。这门课我三次作业成绩也都还不错,发上来一是为了记录在公众号上,充实一下公众号的内容,提高一下公众号水平;二是也是提高我自己的自信:文科同学也能学好数学,写好代码……

    实践是最好的老师。通过本次学习,提高了对马尔科夫过程、隐马尔科夫模型、维特比算法的理解,对python的编程也更为熟练。

    同时,由于数据量较大,写循环函数时代码极容易出错,应该在完成一段代码后立即测试。在调试代码的过程中,曾出现过汉字与前一个汉字共同出现次数大于单个汉字出现次数的情况,原因在于在计算频次时有一个变量出现错误。另外,在维特比算法的计算过程中,出现的index较多,容易弄乱,在循环计算中对应关系也应该小心,否则极易出现错误。付出极高的时间成本。

    另外,对于变量的命名最好规范,做好规划,否则变量太多后容易出错。

    8 改进方案

    备选汉字可以不局限于一二级汉字表,使用包含20902个汉字的基本汉字表,可以提高输入法的适用性。另外,语料库可以不局限于新闻语料,类型更为多样的语料库可以提高输出句子的准确率和整句正确率。基于字的二元模型可以换成三元甚至更多,也能够进一步提高句子的准确率和整句正确率。

    展开全文
  • 一个简单的word拼音文字分离工具

    万次阅读 2020-05-03 10:13:09
    最近老妈在用word给文字添加拼音的时候遇到了这样的问题,对于段话,word的拼音是直接放在文字的头上,因此对这段话复制的时候就会出现文字拼音交杂的情况(如下图),想要得到这段文字完整的拼音需要手动处理。...

    最近老妈在用word给文字添加拼音的时候遇到了这样的问题,对于一段话,word的拼音是直接放在文字的头上,因此对这段话复制的时候就会出现文字拼音交杂的情况(如下图),想要得到这段文字完整的拼音需要手动处理。(因为她不懂正则表达式,笑)

    因此我用python简单的对这项任务进行了封装,以下是我的代码:

    #使用了tkinter图形化界面
    import re
    import tkinter
    import tkinter.messagebox
    
    root= tkinter.Tk()
    root.title('文字拼音分离')
    root.geometry('700x650') #窗口大小
    
    
    contentVar=tkinter.StringVar(root,'')
    contentEntry=tkinter.Entry(root,textvariable=contentVar)
    contentEntry.place(x=50,y=50,width=600,height=200)
    hz = tkinter.Entry(root) #汉字输出框
    hz.place(x=50,y=500,width=600,height=50)
    py = tkinter.Entry(root) #拼音输出框
    py.place(x=50,y=570,width=600,height=50)
    
    btn=tkinter.Button(root,text='开始转换',bg = 'pink',command=lambda:Click()) #点击按钮开始转换
    btn.place(x=310,y=400,width=80,height=40)
    
    def Click(): #根据正则表达式的替换
        content=contentVar.get() #获取输入框内容
        hanzi = ''.join(re.findall('[\u4e00-\u9fa5]|[\(\)\《\》\——\;\,\。\“\”\<\>\!]',content))
        pinyin = ''.join(re.findall('[^\u4e00-\u9fa5]|[\(\)\《\》\——\;\,\。\“\”\<\>\!]',content)).replace('(','').replace(')',' ') #在词与词之间添加一些空格
    
        hz.insert(0,hanzi)     
        py.insert(0,pinyin)
    
    
    root.mainloop()

    这一工具简单实现了拼音文字分离的问题,并且容易上手,不足之处在于

    (1)输出的文字选中需要按快捷键ctrl+A进行全选

    (2)不能自动识别分离拼音中的词语,比如měidāng,可以考虑添加拼音分割的功能,设计规则实现词的分割。

    展开全文
  • 众所周知,中文输入法是一个历史悠久的问题,但也实在是个繁琐的活,不知道这是不是网上很少有人分享中文拼音输入法的原因,接着这次NLP Project的机会,我觉得实现一发中文拼音输入法,看看水有多深,结果发现还挺...

    众所周知,中文输入法是一个历史悠久的问题,但也实在是个繁琐的活,不知道这是不是网上很少有人分享中文拼音输入法的原因,接着这次NLP Project的机会,我觉得实现一发中文拼音输入法,看看水有多深,结果发现还挺深的,但是基本效果还是能出来的,而且看别的组都做得挺好的,这次就分 享一下我们做的结果吧。 (注:此文假设读者已经具备一些隐马尔可夫模型的知识)

    任务描述

    实现一个中文拼音输入法。

    经过分析,分为以下几个模块来对中文拼音输入法进行实现:

    技术路线

    在中文拼音输入法中,我们需要完成拼音序列到汉字序列的转换,比如输入“nihao”,输入法会给出我们想输入的字“你好”,到这里我们就可以问出几个问题:

    • **如何切分拼音? **
      如: 用户输入”xiana”, 输入法应该判断用户想输入”xian a”(闲啊) 还是”xia na”(夏娜) 还是”xi an a”(西安啊)?
    • 如何实时给用户以反馈?
    • 对于切分好的拼音,怎样找出用户最想输入的一串中文显示给用户?
    • 用户输入的拼音是错的的情况下,如何容忍这种错误?该如何显示?

    也许我们还能问出更多的问题,中文拼音输入法就是这样,总有可以继续抠下去的细节。
    那么我们如何解决上面的问题?我们的方案如下:

    如何切分拼音?

    这 里我们暂时采用最长匹配的方式,也就是说,如果用户输入的首个串是拼音或者是某个合法拼音的前缀,那么我们会继续向后发现,等待用户输入,直到用户输完后 发现这个字符(假设是第n个)与原来n-1个不是合法的拼音也不是合法的拼音的前缀,那么此时将前面n-1串切分成拼音,这就完成了一个拼音的发现,比如 说输入”xiant”(想输xiantian),则我们会扫描这个串,一直到”xian”,到”xiant”的时候发现既不是合法拼音的前缀也不是合法拼 音,那么从t前面划分开,得到”xian’t”,同样的道理发现后续的拼音。Python资源分享秋秋裙 855408893 ,内有安装包,学习视频资料,免费直播实战案例。这里是Python学习者的聚集地,零基础,进阶,都欢迎

    在实时任务中,用户即使没有输完我们仍应该显示东西,那么我们先切分 拼音,最多只会有最后一个是不完整的拼音前缀,那么我们将完整的和不完整的分开处理。假设是”xian’t”的情况,我们将”xian”放入 viterbi算法中,通过HMM得出概率最大的一个输出串,然后将最后的”t”在训练过的Trie树中搜索出所有以”t”为前缀的字,以及他们出现的频 率,取频率最高的若干个,作为viterbi算法的下一个状态的可能集合,然后得到他们的拼音,与前面n-1个拼音组合起来跑Viterbi算法,得到最 可能的一个中文串,由于这些频率最高的字的拼音(即我们可能的观测值)可能不相同,我们只能将相同音的字作为一次viterbi算法运行的下一状态,这样 viterbi跑的次数就是这些字里面不同音的个数,但是由于总数固定,异音越多,每个音对应的越少,所以总时间是没有差别的。
    具体Trie树会在后面讲解。

    如何实时给用户以反馈?

    上 面其实已经初步解释了如何实时反馈,实时反馈我们要做的就是用户每输一个字母,我们就能够显示出用户可能想要打的字,那么,以一个字母开头的拼音有很多, 每个拼音对应的字也可能有很多,也即结果有很多,但是我们又不能漏掉,所以只能考虑所有的字,比较选出概率最大的若干个字,这时候我们可以采用Trie树 来解决。Trie树就是前缀树,说白了就是将拼音的字母按顺序顺着根插入到树中,每个叶子节点就是一个拼音,这个拼音就是顺着根一路走下来取的字母的顺序 组合,这样我们就可以找出以任意字符串为前缀的所有拼音,方法就是dfs遍历每一个以其为前缀的子树的叶子节点,这时候我们叶子节点存的其实是一个字 典,key为这个拼音对应的可能的字,value为这个字出现的频率,以作为比较。

    对于切分好的拼音,怎样找出用户最想输入的一串中文显示给用户?

    这里我们使用隐马尔可夫模型,将用户想输入的中文字作为隐状态,用户输入的拼音为显状态,通过最大似然估计即频率估计出HMM的三个矩阵的值,最后通过viterbi算法找出概率最大的若干个中文字串显示出来。

    用户输入的拼音是错的的情况下,如何容忍这种错误?该如何显示?

    由于考虑到实现高度容错的复杂性,我们假设用户会输入正确的拼音,在想分割的时候会自行添加分隔符”‘“,由于大部分输入法用户绝大部分时间都会输入正确的拼音,所以,这样一个假设既简化了实现的过程,又没有损失太大的用户体验。

    用到的数据

    由于训练HMM模型的需要,我们从搜狗实验室找到了SogouQ用户查询数据集,预处理成合法的句子之后大约有360M,且为了避免查询句太短,我们也增加了将近30M的搜狐新闻数据作为训练语料,这里面包含了很多的长句子。
    通过这两个语料的训练,我们得到了长句和短句皆可表现较好效果的HMM模型。并且我们还可以继续拓展语料,以增加我们HMM模型的准确性,这是后话,不提。

    遇到的问题及解决方案,

    1. UI界面的问题,由于UI设计的复杂性与不同系统的考虑,出现了许多莫名其妙的BUG,这使得我们花了许多时间。
    2. viterbi算法的效率问题,由于以某个字母开头的拼音对应的字有很多个,假设我们取最优的K个,我们需要将这K个与前面已有的拼音组 合,然后跑一遍Viterbi算法,由于Viterbi算法从一个状态转移到另一个状态的计算量很大,我们使用了记忆(cache)的方法来加速,具体方 法就是记录下某一个完整拼音串所对应的viterbi算法的最后一个状态的相关情况,这样如果我们再次遇到这个拼音串(A) 加上另一个拼音(B)跑viterbi的情况,我们就不需要从这个组合串的开头开始跑viterbi算法了,而是直接从A 串跑完viterbi的最后一个状态(从记忆单元读取)开始,向B进行转移。
      这个记忆单元会随着程序而一直存在,并且我们对这个对象做了持久化, 在输入法启动时我们会读取这个文件(记忆单元),这也就意味着,如果我们曾经输入过某个拼音串,那么我们以后再输入同样的拼音串的时候,不再需要跑核心算 法,而是直接显示结果,这样在速度上就取得了显著的提高,就会出现,输入法越用越好用,越用越快的好处,当然这牺牲了一些存储空间,但是如今我们都不缺存 储空间。
    3. 重复计算的问题,比如在用户觉得打错了的时候,往后退格,这时就会退到某一个前缀,但是其实这个前缀我们是算过了的,也显示过了的,就是说 我们退回到我们以前显示过的内容的时候,如果不加优化,那么又会重新跑一遍核心的viterbi算法,这样就会很慢,那么我们还是利用cache思想,将 输入的拼音串以及对应的显示结果相对应并且存起来,这样我们就做到了飞速的退格操作。
    4. Python语言固有的性能问题,解决这个问题只有更换语言,事实上用C++语言实现的话我相信会快很多,这在后面可以考虑用C++实现,这也是完全可行的。

    性能评价

    输入比较迅速,绝大多数输入能在1秒以内显示。输入过的句子再输入和退格操作都是毫秒级别的。

    给出程序的运行环境

    1. Python 2.7
    2. 需要安装的Python包: Tkinter, cPickle, pypinyin等模块

    执行方法及参数

    在项目Project目录下,运行

    $ python gui.py

    即可。

    Future Works

    由上面我们可以看到其实可以做的工作还很多,比如

    • 改换编译型语言,如C++,大幅减小计算开销
    • 不断随着用户的输入更新HMM模型
    • 将软件嵌入系统中
    • 我们观察到,长句输入很少有多个是想打的,不想短句可能想打的情况很多,所以很多与输入拼音串长度相同的句子我们可以换成短句。
    • 。。。
    展开全文
  • 一个搜狗拼音忠实用户的闲扯

    千次阅读 热门讨论 2010-04-01 17:22:00
    每次装完系统后第一个安装的软件就是它,因为需要上网搜索一些中文关键字,而xp自带的输入法就是一个悲剧。我中文打字是很慢的,而且不会五笔输入,不过有了搜狗拼音的帮助后,打字时的心情啊,不可同日而语。 作为...
  • 之前,由于我要从QQ拼音平台转换到搜狗拼音上,所以我写了一个小程序把QQ拼音词库转换为搜狗拼音词库。后来陆续收到来信,索要程序同时也希望把搜狗拼音词库转换为QQ拼音,所以我就在这个小程序上做了一点改进。这两...
  • JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进。 【JPinyin主要特性】 1、准确、完善的字库; Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个...
  • //将汉字转换成拼音 + (NSString *)convertNameToCharactor:(NSString *)name {  //转成了可变字符串  NSMutableString *str = [NSMutableString stringWithString:name];  //先转换为带声调的拼音  ...
  • 拼音检查

    千次阅读 2013-04-14 10:15:11
    拼音检查包括拼音与拼音缩写两个模块。     ...词库来源在数据库中,以方便扩展,只要每天...因为一个拼音是对应多个中文词的,所以建立个数据结构,以ConCurrentHashMap>的形式,存放在内存中,以便快速查询。
  • 汉字转拼音,并返回第一个字母

    千次阅读 2014-02-18 10:08:57
    利用pinyin4j实现该功能,详细代码: ... /** * 汉字转拼音工具类 * @author gandalf * */ public class PinyinUtil { ... * 将传入汉字的拼音的第一个字母返回,如果是字母,直接返回 * @param word * @ret
  • 输入在一行中给出一个整数,如:1234。 提示:整数包括负数、零和正数。 输出格式: 在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。 输入样例: -60
  • 汉字拼音一个解决方法

    千次阅读 2006-10-11 01:14:00
    方法只是简单的利用汉字拼音库。至于怎么找这库,网上多有介绍。在最后提供下载的方案中也提供了这库文本文件。主要代码如下:Imports System.IOImports System.Text.RegularExpressionsNamespace Busin
  • 一个汉字转拼音的插件(pinyin4j)

    千次阅读 2012-12-25 11:42:10
    今天看到一个拼音插件,输入汉字后会自动转换为拼音或者每个字的首字母,在做有些项目开发时也有点用  pinyin4j提供了汉语转拼音的一个开源库, 支持多种拼音系统:汉语拼音、 通用拼音 、威氏拼音、注音二式、...
  • 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu 输入格式: 输入在一行中给出一个整数,如:...
  • 一个中文转换为拼音的完美实现

    千次阅读 2011-06-11 09:54:00
    前段时间经理让把现在erp系统中的员工名称字段也就是员工...最后在意论坛上看到微软提供了一个ChnCharInfo.dll(Microsoft.International.Converters.PinYinConverter 命名空间包含了拼音和笔画转换工具的类。 ),这个
  • 分享一个工作中调用的工具类 public class PinYin2Abbreviation { // 简体中文的编码范围从B0A1(45217)一直到F7FE(63486) private static int BEGIN = 45217; private static int END = 63486; // 按照声 ...
  • 你的程序要读入一个整数,...注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为: fu er san si yi 输入格式: 一个整数,范围是[-
  • 过程原理是这样的:例如要对一些人名进行快速查找,当页面加载完成后,对所有人名建立一个索引,生成拼音首字母与姓名的对应关系;然后监听键盘事件,当用户按下键盘时,根据键值得到按下的是哪个字母,然后遍历索引...
  • 汉字按拼音的第一个字母排序

    千次阅读 2009-08-09 11:25:00
    要实现用户名按照第一个...用户名是汉语的话 汉字拼音的第一个字母2.用户名是英文的话直接取出第一个字母处理文件如下:lib.asp(char)//处理中文和英文tmp=65536+asc(char)if(tmp>=45217 and tmp) then getpychar= "A
  • 这是一个简单的拼音输入法,只有常用的汉字,输入拼音后, 再输入数字,选择所需要的拼音 */ #include #include #include #define OUTLEN 1024 #if 1 char *hanzi[1024][2]={  {"PY_mb_a", ...
  • 这个Bug不仅存在于微软拼音输入法2010中,也同样存在于Windows 8自带的微软拼音输入法2012中。... 在民生银行项目中,我编写了一个用于显式显示提示信息的增强TextBox。在测试时,微软拼音输入法出现了异常,当我
  • js控制一个字符串中某个字体的颜色和拼音首字母转汉字/* *方法说明: *将用户输入的关键字与后台返回的字符串进行匹配,匹配成功的字符加上: '<span></span>', *支持拼音首字母转汉字。 * @method addSpan * ...
  • 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu 输入格式: 输入在一行中给出一个整数,如:...
  • 转换一个汉字字符成拼音的字符串

    千次阅读 2018-11-01 10:44:58
    * 转换一个串成为汉语拼音,带驼峰标识,如“李丽”转换成“LiLi” * @param str * @return */ public String paraseStringToPinyinInHump(String str) { if(null==str||str.trim().length()==0){ ...
  • 拼音检索

    千次阅读 2013-02-19 14:55:32
    当我们遇到要处理汉字和...我搜索到一个ChineseChar开发包,然后实现了这一难题 using System; using Microsoft.International.Converters.PinYinConverter; namespace 拼音基础 {  class Program  {  static
  • 输出这整数对应的拼音

    千次阅读 2019-11-25 22:43:45
    输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出 fu 字。十个数字对应的拼音如下: 1 0: ling 2 1: yi 3 2: er 4 3: san 5 4: si 6 5: wu 7 6: liu 8 7: qi 9 8: ba 10 9: jiu ...
  • 在mssql中转第一个汉字的拼音字母

    千次阅读 2006-08-21 13:35:00
    --创建取拼音函数 /* 转第一个汉字的拼音字母*/ create function fGetPy(@Str varchar(500)=) returns varchar(500) as begin declare @strlen int,@return varchar(500),@ii int declare @n
  • 拼音

    2019-07-07 14:44:13
    开发工具与关键技术:VS+拼音码 作者: 李伙 撰写时间: 2019年7月3日 在学习MVC过程中,我们有时候会需要根据某个字段来回填它的拼音码,即首字母大写形式。比如我们根据输入的修理项目名称来填写它的拼音码,即...
  • pinyin4j 使用 获取第一个汉子的首字母,获取汉子拼音
  • 拼音工具类PinyinUtils

    千次阅读 2017-11-16 16:43:58
    但是最近发现对于一些多音字,姓氏的处理没有做到位,比如姓氏单(shan),由于对于多音字没有做一些处理,仅仅只是取多音字列表的第一个,所以取到的拼音是dan,所以利用空闲的时间对这个拼音的工具类进行了处理。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,957
精华内容 36,382
关键字:

一个的拼音