在段落中查找字典值,如果段落没有字典值,则返回NA

时间:2019-07-19 11:23:08

标签: python list performance dictionary

假设我将“段落”的这个随机单词作为列表:

t = ['protein and carbohydrates Its is a little heavier pulsus widely used and is a versatile ingredient',
 'Tea contains the goodness of  Natural Ingredients Cardamom Ginger Tea bags Disclaimers As per Ayurvedic texts',
 'almonds are all natural supreme sized nuts they are highly nutritious and extremely healthy',
 'Camel milk can be consumed by lactose intolerant people and those allergic to cows milk',
 'Healthy Crunch  Almond with honey is an extra crunchy breakfast cereal for a delightful start to your mornings']

词典为

d = {'First': ['Tea','Coffee'],
     'Second':  ['Noodles','Pasta'],
     'Third': ['sandwich','honey'],
     'Fourth': ['Almond','apricot','blueberry']
    }

我编写的代码非常慢,并且我想为与任何文本都不匹配的段落显示“ NA”

代码

get_labels = []
get_text = []

for txt in t:
    for dictrow in d.values():
        for i in dictrow:
            for j in txt.split():
                if i == j:
                    print(j)
                    print(txt)
                    get_labels.append(j)
                    get_text.append(txt)


pd.DataFrame(list(zip(get_text,get_labels)),columns=["whole_text","matched_text"])

最后在创建数据框输出后:

     whole_text                                       matched_text
0   Tea contains the goodness of Natural Ingredie...    Tea
1   Tea contains the goodness of Natural Ingredie...    Tea
2   Healthy Crunch Almond with honey is an extra ...    honey
3   Healthy Crunch Almond with honey is an extra ...    Almond

但是我想要的输出是:

     whole_text                                       matched_text
0   protein and carbohydrates Its is a little ....      NA 
1   Tea contains the goodness of Natural Ingredie...    Tea
2   Tea contains the goodness of Natural Ingredie...    Tea
3   almonds are all natural supreme sized nuts th...    NA
4   Camel milk can be consumed by lactose intoler...    NA
2   Healthy Crunch Almond with honey is an extra ...    honey
3   Healthy Crunch Almond with honey is an extra ...    Almond

我有2个问题:
a)我想为与上表中的任何文本字典值都不匹配的段落添加“ NA”。
b)我如何优化此代码以更快地运行它,因为我正在大型数据集上使用它

2 个答案:

答案 0 :(得分:1)

set交点处,功率

paragraphs = ['protein and carbohydrates Its is a little heavier pulsus widely used and is a versatile ingredient',
 'Tea contains the goodness of  Natural Ingredients Cardamom Ginger Tea bags Disclaimers As per Ayurvedic texts',
 'almonds are all natural supreme sized nuts they are highly nutritious and extremely healthy',
 'Camel milk can be consumed by lactose intolerant people and those allergic to cows milk',
 'Healthy Crunch  Almond with honey is an extra crunchy breakfast cereal for a delightful start to your mornings']

d = {'First': ['Tea', 'Coffee'],
     'Second':  ['Noodles', 'Pasta'],
     'Third': ['sandwich', 'honey'],
     'Fourth': ['Almond', 'apricot','blueberry']
}

words = set(w for lst in d.values() for w in lst)
match_stats = {'whole_text': [], 'matched_text': []}
for p in paragraphs:
    common_words = set(p.split()) & words
    if not common_words:
        match_stats['whole_text'].append(p)
        match_stats['matched_text'].append('NA')
    else:
        for w in common_words:
            match_stats['whole_text'].append(p)
            match_stats['matched_text'].append(w)

df = pd.DataFrame(match_stats)
print(df)

输出:

                                          whole_text matched_text
0  protein and carbohydrates Its is a little heav...           NA
1  Tea contains the goodness of  Natural Ingredie...          Tea
2  almonds are all natural supreme sized nuts the...           NA
3  Camel milk can be consumed by lactose intolera...           NA
4  Healthy Crunch  Almond with honey is an extra ...        honey
5  Healthy Crunch  Almond with honey is an extra ...       Almond

答案 1 :(得分:1)

您可以使用Service   

in