/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
script/search.py
88 строк
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
import rapidfuzz from rapidfuzz import process, fuzz import re from typing import List, Dict, Tuple import sys import json # Читает глоссарий из файла. # Каждый термин должен быть на отдельной строке. def read_glossary(glossary_file: str) -> List[str]: try: with open(glossary_file, 'r', encoding='utf-8') as file: glossary = [line.strip() for line in file if line.strip()] return glossary except FileNotFoundError: print(f"Ошибка: Файл глоссария '{glossary_file}' не найден.") return [] except Exception as e: print(f"Ошибка при чтении глоссария: {e}") return [] # Читает текст из файла def read_text(text_file: str) -> str: try: with open(text_file, 'r', encoding='utf-8') as file: text = file.read() return text except FileNotFoundError: print(f"Ошибка: Файл текста '{text_file}' не найден.") return "" except Exception as e: print(f"Ошибка при чтении текста: {e}") return "" def write_text(filename, lines, mode="w"): try: with open(filename, mode, encoding="utf-8") as file: file.write("\n".join(lines) + "\n") print(f"Файл {filename} успешно записан!") return True except Exception as e: print(f"Ошибка при записи файла: {e}") return False # Ищет термины из глоссария в тексте с использованием rapidfuzz # 60 - пороговое значение для Fuzzy partial_ratio поиска в тексте def fuzzy_search(glossary: List[str], text: str, threshold: int = 60)-> List[str]: results = [] for row in glossary: path = row.split(';') id = path[0] term = path[1] score = fuzz.partial_ratio(term.lower(), text) #print(f"result: {term} -> {score}") #if score >= threshold: results.append({ 'term': term, 'score': score, 'id': id }) return results def main(): args = sys.argv; # Параметры файлов glossary_in_file = args[1] text_file = args[2] #glossary_out_file = args[3] # Чтение данных glossary = read_glossary(glossary_in_file) text = read_text(text_file) #print(f"glossary: {glossary}") #print(f"text: {text}") # Поиск терминов results = fuzzy_search(glossary, text.lower(), threshold = 60) json_string = json.dumps(results, ensure_ascii = False) print(json_string) # print(f"results: {results}") if __name__ == "__main__": main()