借助推薦算法實(shí)現(xiàn)英-中單詞互譯

最近爬取了一些國(guó)外的圖片,由于標(biāo)簽都是英文,對(duì)文本檢索不友好,所以就搞了這個(gè)單詞翻譯工具纯露;很多推薦算法在計(jì)算物品與物品相似距離時(shí)經(jīng)常用到同現(xiàn)矩陣,那么舉一反三 該算法是否同樣可以應(yīng)用在求解中英單詞相似距離上呢代芜?

算法背景

同現(xiàn)矩陣計(jì)算公式

  • 通過案例說明
    N(i)與N(j)分別表示喜歡 i 物品的人數(shù)與喜歡 j 物品的人數(shù)埠褪,上述公式大致意思是求解喜歡物品 i 的人中又同時(shí)喜歡物品 j 的占比是多少,比值越大越能說明兩個(gè)物品的關(guān)聯(lián)度高挤庇,那么當(dāng)其它用戶去購買物品 i 時(shí)將在很大程度上喜歡物品 j 钞速;不過需要注意的時(shí)如果物品 j 是一個(gè)熱門物品,那么很多人都會(huì)喜歡物品 j嫡秕,極端情況下所有喜歡物品 i 的用戶都喜歡物品 j , 那么計(jì)算出的物品 i 與物品 j 就是高度相似的渴语,為了避免熱門物品的影響,在分母上對(duì)熱門物品進(jìn)行了懲罰昆咽,當(dāng)N(j)很大時(shí)驾凶,相識(shí)度就會(huì)很低牙甫。

另外該方式還有另一個(gè)優(yōu)勢(shì),那就是在計(jì)算相似度時(shí)不需要額外收集評(píng)分?jǐn)?shù)據(jù)

基于python實(shí)現(xiàn)

  • 數(shù)據(jù)處理
import re
# import jieba
import unicodedata
from LAC import LAC 
lac = LAC(mode='seg')

def unicode_to_ascii(s):
    return ''.join(c for c in unicodedata.normalize('NFD', s)
                   if unicodedata.category(c) != 'Mn')


def preprocess_eng(w):
    w = unicode_to_ascii(w.lower().strip())

    # creating a space between a word and the punctuation following it
    # eg: "he is a boy." => "he is a boy ."
    # Reference:- https://stackoverflow.com/questions/3645931/
    # python-padding-punctuation-with-white-spaces-keeping-punctuation
#     w = re.sub(r"([?.!,])", r" \1 ", w)
    w = re.sub(r"([?.!,])", r" ", w)
    # replace several spaces with one space
    w = re.sub(r'[" "]+', " ", w)

    # replacing everything with space except (a-z, A-Z, ".", "?", "!", ",")
    w = re.sub(r"[^a-zA-Z?.!,]+", " ", w)
    w = w.rstrip().strip()

    # adding a start and an end token to the sentence
    # so that the model know when to start and stop predicting.
#     w = '<start> ' + w + ' <end>'
    return w.split(' ')


def preprocess_chinese(w):
    w = unicode_to_ascii(w.lower().strip())
    w = re.sub(r'[" "]+', "", w)
    w = w.rstrip().strip()
#     w = " ".join(list(w))  # add the space between words
#     w = '<start> ' + w + ' <end>'
    return list(lac.run(w))


input_texts = open('D:/Download/英中機(jī)器文本翻譯/ai_challenger_translation_train_20170904/translation_train_data_20170904/train.en', 'r', encoding='UTF-8').read().splitlines()
target_texts = open('D:/Download/英中機(jī)器文本翻譯/ai_challenger_translation_train_20170904/translation_train_data_20170904/train.zh', 'r', encoding='UTF-8').read().splitlines()
 
input_texts_d = []
target_texts_d = []
i = 1
for it, tt in zip(input_texts, target_texts):
        input_texts_d.append(preprocess_eng(it))
        target_texts_d.append(preprocess_chinese(tt))
  • 計(jì)算相似性
mydic = {}
kvdic = {}
for it_ks, tt_ks in zip(input_texts_d, target_texts_d):
    for en_k in it_ks:
        en_v = {}
        if en_k in mydic:
            en_v = mydic.get(en_k)
        for zh_k in tt_ks:
            if zh_k in en_v:
                en_v[zh_k] += 1
            else:
                en_v[zh_k] = 1
        mydic[en_k] = en_v
        
        if en_k in kvdic:
            kvdic[en_k] += 1
        else:
            kvdic[en_k] = 1 
            
    for zh_k in tt_ks:
        if zh_k in kvdic:
            kvdic[zh_k] += 1
        else:
            kvdic[zh_k] = 1 
res = {}
for k, v in mydic.items():
    zh_dic = {}
    for zh, cn in v.items():
        zh_dic[zh] = round(cn/(kvdic[zh]*kvdic[k])**0.5, 5)
    res[k] = sorted(zh_dic.items(), key= lambda kv: kv[1], reverse=True)[:5]

效果展示

寫在最后
現(xiàn)實(shí)生活中對(duì)一件物品或商品進(jìn)行描述時(shí)往往會(huì)有很多詞匯和短語调违,如 “紅薯” 和 “地瓜” 窟哺;大家可以嘗試使用上面算法來挖掘內(nèi)容中的同義詞...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市技肩,隨后出現(xiàn)的幾起案子且轨,更是在濱河造成了極大的恐慌,老刑警劉巖虚婿,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旋奢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡然痊,警方通過查閱死者的電腦和手機(jī)至朗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剧浸,“玉大人爽丹,你說我怎么就攤上這事⌒廖茫” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵真仲,是天一觀的道長(zhǎng)袋马。 經(jīng)常有香客問我,道長(zhǎng)秸应,這世上最難降的妖魔是什么虑凛? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮软啼,結(jié)果婚禮上桑谍,老公的妹妹穿的比我還像新娘。我一直安慰自己祸挪,他們只是感情好锣披,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贿条,像睡著了一般雹仿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上整以,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天胧辽,我揣著相機(jī)與錄音,去河邊找鬼公黑。 笑死邑商,一個(gè)胖子當(dāng)著我的面吹牛摄咆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播人断,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼吭从,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了含鳞?” 一聲冷哼從身側(cè)響起影锈,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝉绷,沒想到半個(gè)月后鸭廷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熔吗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年辆床,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桅狠。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡讼载,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出中跌,到底是詐尸還是另有隱情咨堤,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布漩符,位于F島的核電站一喘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嗜暴。R本人自食惡果不足惜凸克,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闷沥。 院中可真熱鬧萎战,春花似錦、人聲如沸舆逃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颖侄。三九已至鸟雏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間览祖,已是汗流浹背孝鹊。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留展蒂,地道東北人又活。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓苔咪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親柳骄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子团赏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 在傳統(tǒng)的推薦模型中,簡(jiǎn)單理解推薦算法召回部分的核心原理無非就是將特征以不同形式進(jìn)行組織耐薯,并按照距離求解算法計(jì)算用戶...
    郭彥超閱讀 998評(píng)論 0 2
  • 寫在最前面:本文內(nèi)容主要來自于書籍《推薦系統(tǒng)實(shí)踐》和《推薦系統(tǒng)與深度學(xué)習(xí)》舔清。 推薦系統(tǒng)是目前互聯(lián)網(wǎng)世界最常見的智能...
    井底蛙蛙呱呱呱閱讀 1,769評(píng)論 0 4
  • 一、常用推薦算法分類: 基于人口統(tǒng)計(jì)學(xué)的推薦與用戶畫像曲初、基于內(nèi)容的推薦体谒、基于協(xié)同過濾的推薦。 二臼婆、基于人口統(tǒng)計(jì)...
    98_碼農(nóng)閱讀 1,665評(píng)論 1 1
  • 一抒痒、基本原理 協(xié)同過濾(collaborative filtering)算法是最經(jīng)典、最常用的推薦算法颁褂。其基本思想...
    fromeast閱讀 4,819評(píng)論 0 4
  • 離線推薦使用LFM隱語義模型(ALS進(jìn)行求解)故响,實(shí)時(shí)推薦使用Item-CF模型(需要將物品相似度和評(píng)分進(jìn)行加權(quán))。...
    CJ21閱讀 3,604評(píng)論 4 50