feat: очистка персональных данных перед сохранением в Qdrant
- Добавлена функция sanitize_pii() в chunking.py - Удаляются номера телефонов, email-адреса, русские имена в обращениях - Фикс NON_SOLUTION убраны ложные срабатывания на штатные фразы закрытия
This commit is contained in:
parent
41af532e7b
commit
522fb7717e
2 changed files with 27 additions and 3 deletions
|
|
@ -3,17 +3,41 @@ from typing import Optional
|
|||
|
||||
NON_SOLUTION = re.compile(
|
||||
r"(уточнит|приложите скрин|какая ошибка|с какой проблемой"
|
||||
r"|нет обратной связи|запрос завершу|открыть его снова"
|
||||
r"|откройте новый|обратиться в службу поддержки"
|
||||
r"|нет обратной связи"
|
||||
r"|обратиться в службу поддержки"
|
||||
r"|свяжитесь с технической"
|
||||
r"|напишите нам|позвоните нам)", re.I
|
||||
)
|
||||
|
||||
PHONE = re.compile(r"\+?7\d{10}|8\d{10}")
|
||||
EMAIL = re.compile(r"[\w.+-]+@[\w-]+\.[\w.]+")
|
||||
|
||||
# Common Russian first names (vocative/именительный падеж)
|
||||
# followed by comma, dot, exclamation or question mark
|
||||
RUSSIAN_NAME = re.compile(
|
||||
r"\b(Анастасия|Татьяна|Михаил|Кристина|Александр|Елена"
|
||||
r"|Ольга|Мария|Иван|Дмитрий|Андрей|Юлия|Анна|Наталья"
|
||||
r"|Ирина|Екатерина|Владимир|Николай|Алексей|Сергей"
|
||||
r"|Максим|Роман|Виктор|Павел|Артем|Денис|Константин"
|
||||
r"|Галина|Людмила|Надежда|София|Вероника|Полина"
|
||||
r"|Алёна|Светлана|Вера|Маргарита|Лариса|Василий"
|
||||
r"|Виталий|Артур|Эдуард|Валентина|Зоя|Лидия)[,\.!?]",
|
||||
re.I
|
||||
)
|
||||
|
||||
|
||||
def sanitize_pii(text: str) -> str:
|
||||
text = PHONE.sub("[ТЕЛЕФОН]", text)
|
||||
text = EMAIL.sub("[EMAIL]", text)
|
||||
text = RUSSIAN_NAME.sub("[ИМЯ]", text)
|
||||
return text
|
||||
|
||||
|
||||
def clean_text(text: str) -> str:
|
||||
text = re.sub(r'\[/?q\].*?\[/q\]', '', text, flags=re.DOTALL | re.IGNORECASE)
|
||||
text = re.sub(r'https?://\S+', '', text)
|
||||
text = re.sub(r'\s+', ' ', text).strip()
|
||||
text = sanitize_pii(text)
|
||||
return text
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ def get_existing_ticket_ids(tenant_id: str, collection_id: str) -> set[str]:
|
|||
points, _ = client.scroll(
|
||||
collection_name=COLLECTION_NAME,
|
||||
limit=10000,
|
||||
filter=scroll_filter,
|
||||
scroll_filter=scroll_filter,
|
||||
with_payload=True,
|
||||
with_vectors=False,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue