Yerzhxn commited on
Commit
8cdea13
·
verified ·
1 Parent(s): a4648d8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -20
app.py CHANGED
@@ -1,9 +1,8 @@
1
  import pandas as pd
2
  import streamlit as st
3
  import numpy as np
4
- from scipy.spatial.distance import hamming
5
 
6
- # Загррузка данных из Excel файлов
7
  vacancy = 'vacancy_new_new.xlsx'
8
  resume = 'resume_new_new.xlsx'
9
  file_nkz = 'label_NKZ.xlsx'
@@ -59,39 +58,36 @@ if st.button("Найти совпадения"):
59
  if new_name and selected_skills:
60
  # Определение DataFrame для поиска совпадений
61
  df_to_search = df_vacancy if file_option == "Вакансия" else df_resume
62
- skills_ids = df_skills[df_skills['skills'].isin(selected_skills)]['id'].values
63
-
64
- # Преобразование в array для поиска
65
- selected_skills_array = np.array(skills_ids, dtype=int)
66
 
67
- # Поиск совпадений по методу Hamming Distance
68
  matching_results = []
69
  for index, row in df_to_search.iterrows():
70
  if 'arr' in row and isinstance(row['arr'], str):
71
- arr_values = np.array([int(x) for x in row['arr'].split(',')], dtype=int)
72
- if len(arr_values) == len(selected_skills_array):
73
- hamming_distance = hamming(selected_skills_array, arr_values)
74
- similarity = 1 - hamming_distance
75
- if similarity > 0.5:
76
- matching_results.append({
77
- 'Name': row['name'],
78
- 'Similarity': similarity
79
- })
80
 
81
- # Вывод результатов, где совпадение больше 50%
82
- st.write("Результаты с совпадением более 50%:")
83
  if matching_results:
84
  for result in matching_results:
85
  st.markdown(
86
  f"""
87
  <div style="border: 1px solid #ddd; padding: 10px; border-radius: 5px; margin-bottom: 10px;">
88
  <h4 style="margin: 0;">{result['Name']}</h4>
89
- <p><strong>Коэффициент совпадения:</strong> {result['Similarity']:.2f}</p>
 
90
  </div>
91
  """,
92
  unsafe_allow_html=True
93
  )
94
  else:
95
- st.write("Нет совпадений с коэффициентом совпадения более 50%.")
96
  else:
97
  st.error("Пожалуйста, введите имя и выберите навыки для сравнения.")
 
1
  import pandas as pd
2
  import streamlit as st
3
  import numpy as np
 
4
 
5
+ # Загрузка данных из Excel файлов
6
  vacancy = 'vacancy_new_new.xlsx'
7
  resume = 'resume_new_new.xlsx'
8
  file_nkz = 'label_NKZ.xlsx'
 
58
  if new_name and selected_skills:
59
  # Определение DataFrame для поиска совпадений
60
  df_to_search = df_vacancy if file_option == "Вакансия" else df_resume
61
+ skills_ids = set(df_skills[df_skills['skills'].isin(selected_skills)]['id'].values)
 
 
 
62
 
63
+ # Поиск совпадений по пересечению
64
  matching_results = []
65
  for index, row in df_to_search.iterrows():
66
  if 'arr' in row and isinstance(row['arr'], str):
67
+ arr_values = set(map(int, row['arr'].split(',')))
68
+ intersection = skills_ids.intersection(arr_values)
69
+ if len(intersection) > 0:
70
+ matching_results.append({
71
+ 'Name': row['name'],
72
+ 'Matching Skills Count': len(intersection),
73
+ 'Matching Skills': intersection
74
+ })
 
75
 
76
+ # Вывод результатов
77
+ st.write("Результаты по найденным совпадениям:")
78
  if matching_results:
79
  for result in matching_results:
80
  st.markdown(
81
  f"""
82
  <div style="border: 1px solid #ddd; padding: 10px; border-radius: 5px; margin-bottom: 10px;">
83
  <h4 style="margin: 0;">{result['Name']}</h4>
84
+ <p><strong>Количество совпадающих навыков:</strong> {result['Matching Skills Count']}</p>
85
+ <p><strong>Совпадающие навыки:</strong> {', '.join(map(str, result['Matching Skills']))}</p>
86
  </div>
87
  """,
88
  unsafe_allow_html=True
89
  )
90
  else:
91
+ st.write("Нет совпадений.")
92
  else:
93
  st.error("Пожалуйста, введите имя и выберите навыки для сравнения.")