#python #dataframe #dictionary #nlp #keyword-search
Вопрос:
Я новичок в python, и это очень специфическое требование, на котором я застрял из-за ограниченных знаний, я буду признателен, если кто-нибудь сможет помочь с этим
Я создал словарь с помощью excel, который выглядит следующим образом
dict = {'Fruit' : {'Comb Words' : ['yellow',
'elongated',
'cooking'],
'Mandatory Word' : ['banana',
'banana',
'banana']},
'Animal' : {'Comb Words' : ['mammal',
'white'
'domestic'],
'Mandatory Word' : ['cat',
'cat',
'cat']}}
Теперь у меня есть фрейм данных, в котором есть текстовый столбец, и я хочу сопоставить ключевые слова из этого словаря с этим столбцом. Например:
Text Mandatory Comb Final
A white domestic cat is playing cat domestic,white Animal
yellow banana is not available banana yellow Fruit
Этот словарь-всего лишь идея, я могу изменить его, так как это входные данные из excel. Таким образом, любой другой формат или способ, который может привести к вышеуказанному результату, является здесь единственной целью.
Комментарии:
1. Это единственные 3 столбца, которые вы хотите создать?
2. В идеале, но я больше сосредоточен на решении. Если для этого требуется более 3 столбцов, даже тогда все в порядке
Ответ №1:
Использование определяемой пользователем функции:
import pandas as pd
Dict = {'Fruit' : {'Comb Words' : ['yellow',
'elongated',
'cooking'],
'Mandatory Word' : ['banana',
'banana',
'banana']},
'Animal' : {'Comb Words' : ['mammal',
'white',
'domestic'],
'Mandatory Word' : ['cat',
'cat',
'cat']}}
df = pd.DataFrame({'Text':['A white domestic cat is playing',
'yellow banana is not available']})
def findMCF(sentence):
for mand in sentence.split():
for final in Dict:
wordtypeDict = Dict[final]
mandList = wordtypeDict['Mandatory Word']
if mand in mandList:
C = [wrd for wrd in sentence.split() if word in wordtypeDict['Comb Words']]
return (mand,','.join(C),final)
df['Mandatory'],df['Comb'],df['Final'] = zip(*df['Text'].map(findMCF))
print(df)
Выход:
Text Mandatory Comb Final
0 A white domestic cat is playing cat white,domestic Animal
1 yellow banana is not available banana yellow Fruit