У меня есть младший набор данных. Я должен извлечь из него только термины, относящиеся к информатике, так что есть список1, с которым я должен сравнить свой набор данных для этой задачи.
https://www.aminer.org/oag2019
list1 = [«типы документов», «обзоры и обзоры», «справочные материалы», «материалы Генеральной конференции», «биографии», «общая литература», «вычислительные стандарты, инструкции и руководства», «кросс-вычислительные инструменты и методы», ......]
общее количество list1 - 2112 терминов по информатике от ACM.
фрейм данных, с которым нужно сравнить (сравнение строк) list1 в столбце фрейма данных в виде
df_train14year ['ключевые слова']. Head ()
0 "ЯМР-спектроскопия", "масс-спектрометрия", "наност ... 1" плк1 "," катионит c диалкилгистидин "," кристалл с ... 2 "случай-контроль", "ребенок", "топливо" "," углеводороды "," ... 3 "обработка Ca2 +", "CaMKII", "кардиомиоцит", "продолжение ... 4
Название: ключевые слова, dtype: object
в каждом из этих в списках данных имеется максимум 10 ключевых слов min (3) в каждом и миллионы записей в кадре данных.
, поэтому я должен сравнить каждое ключевое слово с исходным списком1, если в обоих списках совпадают более 3 слов, и заполнить фрейм данных этими значениями, может потребоваться сопоставление подстрок.
как сделать эту задачу неэффективным способом в python, что я сделал для l oop для каждого ключевого слова по сравнению со всем списком, и в нем три цикла, так что это неэффективно .
# for i in range(5):
# df.loc[i] = ['<some value for first>','<some value for second>','<some value for third>']
count = 0;
i = 0;
for index, row in df_train14year.iterrows():
# print("index",index)
i=1+1;
# if(i==50):
# break
for outr in row['keywords'].split(","):
#print(count)
if (count>1):
# print("found1")
count = 0;
break;
for inr in computerList:
# outr= outr.replace("[","") # i skip the below three lines because i applied the pre- processing on data to remove the [] and "
# outr= outr.replace("]","")
outr= outr.replace('"',"")
#print("outr",outr,"inr",inr)
if outr in inr:
count = count+1
if (count>10):
#print("outr",outr,"inr",inr)
# print("found2")
# df12.loc[i] = [index,row['keywords']]
#df12.insert(index,"keywords",row['keywords'])
df14_4_match = df14_4_match.append({'abstract': row['abstract'],'keywords': row['keywords'],'title': row['title'],'year': row['year']}, ignore_index=True)
break;
# else:
# print('not found')```