मैं निम्नलिखित समस्यापांडस में आवेदन करते हुए कई (अस्पष्ट) स्ट्रिंग तुलनाओं को समानांतर कैसे करें?
मैं एक dataframe मास्टर कि वाक्य होता है, इस तरह के रूप
master
Out[8]:
original
0 this is a nice sentence
1 this is another one
2 stackoverflow is nice
मास्टर में हर पंक्ति के लिए, मैं का उपयोग कर सबसे अच्छा मैच के लिए एक और Dataframe गुलाम में देखने की है fuzzywuzzy
। मैं fuzzywuzzy का उपयोग करता हूं क्योंकि दो डेटाफ्रेम के बीच मिलान किए गए वाक्यों में थोड़ा अंतर हो सकता है (अतिरिक्त वर्ण, आदि)।
उदाहरण के लिए, गुलाम हो सकता है
slave
Out[10]:
my_value name
0 2 hello world
1 1 congratulations
2 2 this is a nice sentence
3 3 this is another one
4 1 stackoverflow is nice
यहाँ से कार्य करने वाले, अद्भुत, कॉम्पैक्ट काम कर उदाहरण :)
from fuzzywuzzy import fuzz
import pandas as pd
import numpy as np
import difflib
master= pd.DataFrame({'original':['this is a nice sentence',
'this is another one',
'stackoverflow is nice']})
slave= pd.DataFrame({'name':['hello world',
'congratulations',
'this is a nice sentence ',
'this is another one',
'stackoverflow is nice'],'my_value': [2,1,2,3,1]})
def fuzzy_score(str1, str2):
return fuzz.token_set_ratio(str1, str2)
def helper(orig_string, slave_df):
#use fuzzywuzzy to see how close original and name are
slave_df['score'] = slave_df.name.apply(lambda x: fuzzy_score(x,orig_string))
#return my_value corresponding to the highest score
return slave_df.ix[slave_df.score.idxmax(),'my_value']
master['my_value'] = master.original.apply(lambda x: helper(x,slave))
1 मिलियन डॉलर सवाल है: मैं यह कर सकते हैं उपरोक्त मेरे लागू कोड समानांतर?
सब के बाद, master
में हर पंक्ति slave
में सभी पंक्तियों (गुलाम एक छोटा सा डाटासेट है और मैं रैम में डेटा की कई प्रतियां हो सकते हैं) की तुलना में है।
मुझे नहीं लगता कि मैं कई तुलना क्यों नहीं चला सकता (यानी एक ही समय में कई पंक्तियों को संसाधित करता हूं)।
समस्या: मुझे नहीं पता कि यह कैसे करना है या यदि यह भी संभव है।
किसी भी मदद की बहुत सराहना की!
मुझे पता है कि आपने यहां डस्क टैग जोड़ा है। क्या आपने पहले से ही कार्य का उपयोग करने की कोशिश की है और किसी समस्या में भाग लिया है? – MRocklin
आपकी मदद के लिए धन्यवाद! ऐसा लगता है कि डस्क केवल नियमित कार्यों को स्वीकार करता है –
भी, मेरे पास केवल एक कंप्यूटर है इसलिए मशीनों में कोई वितरित नौकरियां –