Yerzhxn commited on
Commit
e5b990e
·
verified ·
1 Parent(s): f2fbdea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -16
app.py CHANGED
@@ -18,7 +18,7 @@ if 'skills' not in df_vacancy.columns or 'skills' not in df_resume.columns or 'n
18
  raise ValueError("Файлы должны содержать колонки 'skills', 'name', 'NKZ' и 'id'")
19
 
20
  # Streamlit интерфейс
21
- st.title("Поиск совпадений по навыкам на основе косинусного сходства")
22
 
23
  # Ввод текста для добавления в колонку 'name'
24
  new_name = st.text_input("Введите название")
@@ -42,29 +42,25 @@ file_option = st.selectbox("Выберите тип", ("Вакансия", "Ре
42
 
43
  # Определение DataFrame для поиска совпадений
44
  if file_option == "Вакансия":
45
- ids_to_compare = df_vacancy['arr'].apply(lambda x: [int(i) for i in x.split(',')]).tolist()
46
  names_to_compare = df_vacancy['name'].tolist()
47
  else:
48
- ids_to_compare = df_resume['arr'].apply(lambda x: [int(i) for i in x.split(',')]).tolist()
49
  names_to_compare = df_resume['name'].tolist()
50
 
51
- # Вычисление косинусного сходства для поиска сходства
52
- from sklearn.metrics.pairwise import cosine_similarity
53
  matching_results = []
54
  if selected_ids:
55
  for i, ids_array in enumerate(ids_to_compare):
56
- # Дополнение меньшего массива нулями для одинаковой длины
57
- max_len = max(len(selected_ids), len(ids_array))
58
- selected_ids_padded = np.pad(selected_ids, (0, max_len - len(selected_ids)), 'constant')
59
- ids_array_padded = np.pad(ids_array, (0, max_len - len(ids_array)), 'constant')
60
-
61
- # Вычисление косинусного сходства
62
- similarity = cosine_similarity([selected_ids_padded], [ids_array_padded])[0][0]
63
-
64
- if similarity > 0.5:
65
  matching_results.append({
66
  'Name': names_to_compare[i],
67
- 'Similarity': similarity
68
  })
69
 
70
  # Вывод результатов
@@ -75,7 +71,7 @@ if matching_results:
75
  f"""
76
  <div style="border: 1px solid #ddd; padding: 10px; border-radius: 5px; margin-bottom: 10px;">
77
  <h4 style="margin: 0;">{result['Name']}</h4>
78
- <p><strong>Косинусное сходство:</strong> {result['Similarity']:.2f}</p>
79
  </div>
80
  """,
81
  unsafe_allow_html=True
 
18
  raise ValueError("Файлы должны содержать колонки 'skills', 'name', 'NKZ' и 'id'")
19
 
20
  # Streamlit интерфейс
21
+ st.title("Поиск совпадений по навыкам на основе корреляции")
22
 
23
  # Ввод текста для добавления в колонку 'name'
24
  new_name = st.text_input("Введите название")
 
42
 
43
  # Определение DataFrame для поиска совпадений
44
  if file_option == "Вакансия":
45
+ ids_to_compare = df_vacancy['arr'].apply(lambda x: [int(i) for i in x.split(',') if i.strip().isdigit()]).tolist()
46
  names_to_compare = df_vacancy['name'].tolist()
47
  else:
48
+ ids_to_compare = df_resume['arr'].apply(lambda x: [int(i) for i in x.split(',') if i.strip().isdigit()]).tolist()
49
  names_to_compare = df_resume['name'].tolist()
50
 
51
+ # Вычисление корреляции для поиска сходства
 
52
  matching_results = []
53
  if selected_ids:
54
  for i, ids_array in enumerate(ids_to_compare):
55
+ min_len = min(len(selected_ids), len(ids_array))
56
+ if min_len > 1: # Для вычисления корреляции необходимо как минимум два элемента
57
+ correlation = np.corrcoef(selected_ids[:min_len], ids_array[:min_len])[0, 1]
58
+ else:
59
+ correlation = 0
60
+ if correlation > 0.5:
 
 
 
61
  matching_results.append({
62
  'Name': names_to_compare[i],
63
+ 'Correlation': correlation
64
  })
65
 
66
  # Вывод результатов
 
71
  f"""
72
  <div style="border: 1px solid #ddd; padding: 10px; border-radius: 5px; margin-bottom: 10px;">
73
  <h4 style="margin: 0;">{result['Name']}</h4>
74
+ <p><strong>Корреляция:</strong> {result['Correlation']:.2f}</p>
75
  </div>
76
  """,
77
  unsafe_allow_html=True