第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算一個單詞與列表中其他單詞的距離的最有效方法是什么?

計算一個單詞與列表中其他單詞的距離的最有效方法是什么?

ITMISS 2022-08-25 13:41:57
我正在努力通過使用Levensthein距離來糾正土耳其語單詞。首先,我檢測到錯誤的書面單詞,并將其與包含所有土耳其語單詞的列表進(jìn)行比較。該列表包含約1.300.000字。我使用Levensthein距離將單詞與列表中的單詞進(jìn)行比較。這是我的代碼部分。index_to_track_document_order = 1log_text = ''main_directory = "C:\\words.txt"f= codecs.open(main_directory,mode="rb",encoding="utf-8")f=f.readlines()similarity = 0text_to_find = 'aktar?lar?'best_fit_word = ''for line in f:    word = word_tokenize( line, language= 'turkish')[0]    root = word_tokenize( line, language= 'turkish')[1]    new_similarity = textdistance.levenshtein.normalized_similarity(text_to_find , word) * 100    if new_similarity > similarity:        similarity = new_similarity        best_fit_word = word        if(similarity > 90):            print(best_fit_word, str(similarity)) 正如我所提到的,word.txt包含超過一百萬條記錄,因此我的代碼需要5分鐘以上才能完成。我如何優(yōu)化代碼,使其可以在更短的時間內(nèi)完成。謝謝。
查看完整描述

2 回答

?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個贊

按長度索引您的字詞。大多數(shù)相似的單詞具有相同的長度,或一個或兩個長度的apartart。一個單詞(長度3)與單詞(長度3)相似,但它不會與(長度11)非常相似,因此沒有理由比較長度差異較大的兩個單詞的levensthein。因此,總的來說,您節(jié)省了大量的比較,因?yàn)槟槐容^了接近相似長度的單詞。catcancaterpillar


#creating a dictionary of words by length

word_dict = {}

for word in f:

    word_length = len(word)

    if word_length in word_dict:

        word_dict[word_length].append(word)

    else:

        word_dict[word_length] = [word]


#now lets compare words with nearly the same length as our text_to_find

target_length = len(text_to_find)

x = 2 #the length difference we'd like to look at words

for i in range (target_length-x, target_length+x):

    if i in word_dict:

        #loop through all the words of that given length.

        for word in word_dict:

            new_similarity = textdistance.levenshtein.normalized_similarity(text_to_find , word) * 100

            if new_similarity > similarity:

                similarity = new_similarity

                best_fit_word = word

                if(similarity > 90):

                     print(best_fit_word, str(similarity)) 

注意:的創(chuàng)建只需計算一次。如有必要,您可以將其保存為泡菜。word_dict


另外,我沒有測試代碼,但一般的想法應(yīng)該很清楚。人們甚至可以擴(kuò)展這個想法,如果還沒有找到最相似的詞,可以動態(tài)地結(jié)束長度差異。


查看完整回答
反對 回復(fù) 2022-08-25
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個贊

每次你說

similarity = new similarity

舊的“new_similarity”被保留,你只是把它復(fù)制到“相似性”。use 將返回一個生成器,該生成器不會將所有值存儲在內(nèi)存中,它們會動態(tài)生成值。yield


查看完整回答
反對 回復(fù) 2022-08-25
  • 2 回答
  • 0 關(guān)注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號