मेरे पास दो एक्सेल शीट हैं और अंतर खोजने के लिए इन शीट्स से दो कॉलम की तुलना करने के लिए एक छोटा प्रोग्राम बना रहा हूं। समस्या यह है, चूंकि इनमें से अधिकांश इनपुट मैन्युअल रूप से किए जाते हैं, इसलिए वर्तनी की बहुत सारी त्रुटियां हैं, जिन्हें अनदेखा किया जाना चाहिए। प्रोग्राम को नए या हटाए गए डेटा को हाइलाइट करना चाहिए।

मैं फ़ज़ी टेक्स्ट के बारे में पढ़ रहा था और मुझे यह कोड ऑनलाइन मिला (link) लेकिन इसका आउटपुट ठीक उसी प्रविष्टियों के साथ एक सीएसवी उत्पन्न करता है (जो मैं चाहता था)। मैं अभी भी इसे यहां जोड़ूंगा ताकि आपको अंदाजा हो जाए कि मैं किस बारे में बात कर रहा हूं।

from __future__ import division
import numpy as np
import pandas as pd
from collections import Counter
import collections
from fuzzywuzzy import fuzz
import time
from two_lists_similarity import Calculate_Similarity as cs

#the first file
book_old = pd.read_excel(r' #Input file here', sheet_name = '#Sheet Name Here')
data_old = book_old.iloc[7:,2].tolist()
#Selecting the column i want to compare

#second file to compare with
book_new = pd.read_excel(r'#source here', sheet_name = '#Sheet name')
data_new = book_new.iloc[7:,2].tolist() #selecting col

inp_list = data_old
ref_list = data_new
#this is what i picked up online because i couldnt do myself
#the plan is to iterate the list and find entries that are different, ignore spellings
# Create an instance of the class. This is otherwise called as an object 
csObj = cs(inp_list,ref_list)
# csObj is now the object of Calculate Similarity class. 
csObj.fuzzy_match_output(output_csv_name = 'pkg_sim_test_vsc.csv', output_csv_path = r'#Output path')
1
appleofreak 1 अप्रैल 2020, 12:29

1 उत्तर

सबसे बढ़िया उत्तर

आपको जो चाहिए वह शायद कुछ फ़ंक्शन है जो गणना करता है कि कितना भिन्न दो तार हैं।

पता चला कि उसके लिए पहले से ही कुछ एल्गोरिदम हैं! Damerau–Levenshtein दूरी देखें , जो आपके उपयोग-मामले के सबसे निकट प्रतीत होता है। विकिपीडिया से:

अनौपचारिक रूप से, दो शब्दों के बीच डैमरौ-लेवेनशेटिन दूरी एक शब्द को दूसरे में बदलने के लिए आवश्यक संचालन की न्यूनतम संख्या है (जिसमें एक वर्ण का सम्मिलन, विलोपन या प्रतिस्थापन, या दो आसन्न वर्णों का स्थानान्तरण शामिल है)।

हालाँकि, यह केवल साधारण टाइपो पर उठाएगा और झूठी सकारात्मकता के लिए प्रवण है, इसलिए आप इसे किसी अन्य तंत्र के साथ जोड़ना चाह सकते हैं।

वेब पर इस एल्गोरिथम के पायथन कार्यान्वयन हैं (देखें यहां या वहां)।

वैकल्पिक रूप से, कुछ अन्य एल्गोरिदम की जाँच करने के लिए स्वतंत्र महसूस करें जैसे:

0
AdrienW 1 अप्रैल 2020, 11:59