Spaces:
Sleeping
Sleeping
| import numpy as np | |
| from sentence_transformers import SentenceTransformer, util | |
| from datetime import datetime | |
| import re | |
| EMBEDDING_MODEL = "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2" | |
| QUERY = "по каким стандартам может быть применена сталь 08X18H10T?" | |
| CHUNK_FULL = """ | |
| ТАБЛИЦА - из документа НП-089-15 | |
| НАЗВАНИЕ: Перечень основных материалов и крепёжных изделий, применяемых для изготовления оборудования и трубопроводов | |
| АЭУ в соответствии с требованиями федеральных норм и правил в области использования атомной энергии | |
| «Правила устройства и безопасной эксплуатации оборудования и трубопроводов атомных энергетических | |
| установок» НП-089-15 | |
| РАЗДЕЛ: Приложение № 1 к Сводному перечню документов по стандартизации | |
| ====================================================================== | |
| ЗАГОЛОВКИ: Тип материала | Марка материала | Стандарт или технические условия на материалы | Листы | Трубы | Поковки | Крепежные изделия | Сортовой прокат | Отливки | Максимальная допускаемая температура применения, Tmax, °C | |
| ДАННЫЕ: | |
| 92. Тип материала: Хромо-никелевые стали аустенитного класса | Марка материала: 08X18H10Т | Стандарт или технические условия на материалы: ГОСТ 5632-72 (срок действия до 31 декабря 2020 года), ТУ 14-1-2583-78, ГОСТ 24030-80, ТУ 14-3P-197-2001, ТУ 14-3-935-80, ТУ 108-713-77, ТУ 21-4-83, ОСТ 108.109.01-92, ТУ 108.11.894-87, ТУ 14-3-197-73*, ТУ 108-713-77*, ТУ 108-668-86* | Листы: ГОСТ 5582-75, ГОСТ 7350-77 ( с обязательным выполнением УЗК по п. 3.10б.), ОСТ 108.109.01-92 (с ограничением содержания кобальта в соответствии с примечанием 1 к пункту 1.5), ТУ 14-1-2542-78, ТУ 14-1-3199-81, ТУ 108-930-80 (без п. 4.7, с обязательным выполнением п. 1.3.6, УЗК и контроля макроструктуры), ОСТ 95-29-72 (с обязательным выполнением УЗК), ТУ 14-1-394-72 (с обязательным выполнением УЗК.), ТУ 14-1-5040-91, ТУ 14-1-5041-91, ТУ 108.11.906-87, ГОСТ 4986-79, ТУ 0993-036-00212179-2009, ОСТ 108.109.01-79* | Трубы: ГОСТ 9940-81 ( только для трубопроводов группы С с обязательным выполнением УЗК.), ГОСТ 9941-81 (только для трубопроводов группы С с обязательным выполнением УЗК.), ОСТ 95-29-72 (с обязательным выполнением УЗК.), ТУ 3-316-87, ТУ 95.349-2000 (только для трубопроводов группы С при максимально допустимой температуре применения 350 °С.), ТУ 14-3-1109-82, ТУ 14-3-1490-87, ГОСТ 24030-80 (кроме группы А.), ТУ 14-3P-197-2001, ТУ 14-3-935-80 (только для трубопроводов группы С.), ТУ 21-4-83, ТУ 108-713-77, ТУ 3113-004-16801570-2002, ТУ 187-ТУ-039С, ТУ 14-158-131-2008, ТУ 14-3P-760-2006, ТУ 3113-027-07516250-2008, ТУ 95.349-86* (только для трубопроводов группы С при максимально допустимой температуре применения 350 °С.), ТУ 14-3-197-73* | Поковки: ОСТ 108.109.01-92 (с ограничением содержания кобальта в соответствии с примечанием 1 к пункту 1.5), ОСТ 95-29-72 (с обязательным выполнением УЗК), ГОСТ 25054-81 (группы 4, 4К, 5 и 5К с обязательным выполнением УЗК по п. 3.3.), ТУ 108-930-80 (без п. 4.7, с обязательным выполнением п. 1.3.6, УЗК и контроля макроструктуры.), ТУ 108.11.894-87, ОСТ108.109.01-79*, ТУ 108-668-86* | Крепежные изделия: ГОСТ 20700-75 (ГОСТ 20700-75- только для оборудования и трубопроводов группы С.), ГОСТ 23304-78 | Сортовой прокат: ГОСТ 5949-75 ( с обязательным выполнением УЗК.), ОСТ 95-29-72 (с обязательным выполнением УЗК.), ОСТ 108.109.01-92 (с ограничением содержания кобальта в соответствии с примечанием 1 к пункту 1.5), ТУ 14-1-5039-91, ТУ 14-1-2583-78 | Максимальная допускаемая температура применения, Tmax, °C: 600 | _idx: 92 | |
| 93. Тип материала: Хромо-никелевые стали аустенитного класса | Марка материала: 08X18H10T-Ш | Стандарт или технические условия на материалы: ТУ 08.001.05015348-92, ТУ 108.668-86 | Листы: ТУ 0993-036-00212179-2009 | Трубы: ТУ 14-3P-197-2001, ТУ 14-3P-760-2006 | Поковки: ТУ 108.668-86 | Сортовой прокат: ТУ 08.001.05015348-92, ТУ 108-668-86* | Максимальная допускаемая температура применения, Tmax, °C: 600 | _idx: 93 | |
| Строки 92-93 из 146 | |
| ====================================================================== | |
| КОНЕЦ ТАБЛИЦЫ - ИЗ НП-089-15 | |
| """ | |
| CHUNK_SHORT = """ | |
| ТАБЛИЦА - из документа НП-089-15 | |
| НАЗВАНИЕ: Перечень основных материалов и крепёжных изделий, применяемых для изготовления оборудования и трубопроводов | |
| АЭУ в соответствии с требованиями федеральных норм и правил в области использования атомной энергии | |
| «Правила устройства и безопасной эксплуатации оборудования и трубопроводов атомных энергетических | |
| установок» НП-089-15 | |
| РАЗДЕЛ: Приложение № 1 к Сводному перечню документов по стандартизации | |
| ДАННЫЕ: | |
| 92. Тип материала: Хромо-никелевые стали аустенитного класса; Марка материала: 08X18H10Т; Стандарт или технические условия на материалы: ГОСТ 5632-72 (срок действия до 31 декабря 2020 года), ТУ 14-1-2583-78, ГОСТ 24030-80, ТУ 14-3P-197-2001, ТУ 14-3-935-80, ТУ 108-713-77, ТУ 21-4-83, ОСТ 108.109.01-92, ТУ 108.11.894-87, ТУ 14-3-197-73*, ТУ 108-713-77*, ТУ 108-668-86*; Листы: ГОСТ 5582-75, ГОСТ 7350-77 ( с обязательным выполнением УЗК по п. 3.10б.), ОСТ 108.109.01-92 (с ограничением содержания кобальта в соответствии с примечанием 1 к пункту 1.5), ТУ 14-1-2542-78, ТУ 14-1-3199-81, ТУ 108-930-80 (без п. 4.7, с обязательным выполнением п. 1.3.6, УЗК и контроля макроструктуры), ОСТ 95-29-72 (с обязательным выполнением УЗК), ТУ 14-1-394-72 (с обязательным выполнением УЗК.), ТУ 14-1-5040-91, ТУ 14-1-5041-91, ТУ 108.11.906-87, ГОСТ 4986-79, ТУ 0993-036-00212179-2009, ОСТ 108.109.01-79*; Трубы: ГОСТ 9940-81 ( только для трубопроводов группы С с обязательным выполнением УЗК.), ГОСТ 9941-81 (только для трубопроводов группы С с обязательным выполнением УЗК.), ОСТ 95-29-72 (с обязательным выполнением УЗК.), ТУ 3-316-87, ТУ 95.349-2000 (только для трубопроводов группы С при максимально допустимой температуре применения 350 °С.), ТУ 14-3-1109-82, ТУ 14-3-1490-87, ГОСТ 24030-80 (кроме группы А.), ТУ 14-3P-197-2001, ТУ 14-3-935-80 (только для трубопроводов группы С.), ТУ 21-4-83, ТУ 108-713-77, ТУ 3113-004-16801570-2002, ТУ 187-ТУ-039С, ТУ 14-158-131-2008, ТУ 14-3P-760-2006, ТУ 3113-027-07516250-2008, ТУ 95.349-86* (только для трубопроводов группы С при максимально допустимой температуре применения 350 °С.), ТУ 14-3-197-73*; Поковки: ОСТ 108.109.01-92 (с ограничением содержания кобальта в соответствии с примечанием 1 к пункту 1.5), ОСТ 95-29-72 (с обязательным выполнением УЗК), ГОСТ 25054-81 (группы 4, 4К, 5 и 5К с обязательным выполнением УЗК по п. 3.3.), ТУ 108-930-80 (без п. 4.7, с обязательным выполнением п. 1.3.6, УЗК и контроля макроструктуры.), ТУ 108.11.894-87, ОСТ108.109.01-79*, ТУ 108-668-86*; Крепежные изделия: ГОСТ 20700-75 (ГОСТ 20700-75- только для оборудования и трубопроводов группы С.), ГОСТ 23304-78; Сортовой прокат: ГОСТ 5949-75 ( с обязательным выполнением УЗК.), ОСТ 95-29-72 (с обязательным выполнением УЗК.), ОСТ 108.109.01-92 (с ограничением содержания кобальта в соответствии с примечанием 1 к пункту 1.5), ТУ 14-1-5039-91, ТУ 14-1-2583-78; Максимальная допускаемая температура применения, Tmax, °C: 600 | |
| 93. Тип материала: Хромо-никелевые стали аустенитного класса; Марка материала: 08X18H10T-Ш; Стандарт или технические условия на материалы: ТУ 08.001.05015348-92, ТУ 108.668-86; Листы: ТУ 0993-036-00212179-2009; Трубы: ТУ 14-3P-197-2001, ТУ 14-3P-760-2006; Поковки: ТУ 108.668-86; Сортовой прокат: ТУ 08.001.05015348-92, ТУ 108-668-86*; Максимальная допускаемая температура применения, Tmax, °C: 600""" | |
| CHUNK_3000_30=""" | |
| ТАБЛИЦА - из документа НП-089-15 | |
| НАЗВАНИЕ: Перечень основных материалов и крепёжных изделий, применяемых для изготовления оборудования и трубопроводов | |
| АЭУ в соответствии с требованиями федеральных норм и правил в области использования атомной энергии | |
| «Правила устройства и безопасной эксплуатации оборудования и трубопроводов атомных энергетических | |
| установок» НП-089-15 | |
| РАЗДЕЛ: Приложение № 1 к Сводному перечню документов по стандартизации | |
| ====================================================================== | |
| ЗАГОЛОВКИ: Тип материала | Марка материала | Стандарт или технические условия на материалы | Листы | Трубы | Поковки | Крепежные изделия | Сортовой прокат | Отливки | Максимальная допускаемая температура применения, Tmax, °C | |
| ДАННЫЕ: | |
| 97. Тип материала: Хромо-никелевые стали аустенитного класса | Марка материала: 09X18H9 | Стандарт или технические условия на материалы: ТУ 14-1-3409-2007, | |
| ТУ 14-3-1061-81, | |
| ТУ 14-1-1288-75, | |
| ТУ 14-159-295-2004, | |
| ТУ 14-161-216-2003, | |
| ТУ 14-123-194-2006, | |
| ТУ 14-156-101-2013, | |
| ТУ У27.2-05757883-150:2007/ТУ 14-3-1233:2007, | |
| ТУ 14-3-52-72*, | |
| ТУ 108.11.328-78*, | |
| ТУ 14-1-3409-82*, | |
| ТУ 14-3-760-78* | Листы: ТУ 14-123-194-2006 (с обязательным выполнением УЗК для листов толщиной 5 мм и более.), ТУ 14-1-3409-2007 (без примечания 3 к таблице 1.), ТУ108-111-328-78*, ТУ 14-1-3409-82* (без примечания 4 к табл. 2.) | Трубы: ТУ 14-3P-760-2006, ТУ 14-3-1061-81, ТУ 14-159-295-2004, ТУ 14-161-216-2003, ТУ 156-101-2013, ТУ У27.2-05757883-150:200/ТУ 14-3-1233:2007, ТУ 14-3-760-78*, ТУ 14-3-52-72* | Поковки: ТУ 14-1-1288-75 (в термообработанном состоянии с обязательным выполнением УЗК.) | Сортовой прокат: ТУ 14-1-1288-75 (в термообработанном состоянии с обязательным выполнением УЗК.) | Максимальная допускаемая температура применения, Tmax, °C: 600 | _idx: 97 | |
| 98. Тип материала: Хромо-никелевые стали аустенитного класса | Марка материала: 08X18H12Т | Стандарт или технические условия на материалы: ГОСТ 5632-72 (срок действия до 31 декабря 2020 года), ТУ 14-3P-197-2001, ТУ 14-3-197-73*, ТУ 14-3-1109-82* | Листы: ГОСТ 5582-75, ГОСТ 7350-77 ( с обязательным выполнением УЗК по п. 3.10б.), ТУ 14-1-394-72 (с обязательным выполнением УЗК.) | Трубы: ГОСТ 9940-81 ( только для трубопроводов и оборудования группы С в термообработанном состоянии с обязательным | |
| выполнением УЗК), ГОСТ 9941-81 (только для трубопроводов и оборудования группы С в термообработанном состоянии с обязательным выполнением УЗК), ТУ 14-3-1109-82, ТУ 95.349-2000, ОСТ 95-29-72, (с обязательным выполнением УЗК), ГОСТ 14162-79, ТУ 3113-004-16801570-2002, ТУ 187-ТУ-039С, ТУ 14-158-131-2008 | Максимальная допускаемая температура применения, Tmax, °C: 600 | _idx: 98 | |
| Строки 97-98 из 146 | |
| ====================================================================== | |
| КОНЕЦ ТАБЛИЦЫ - ИЗ НП-089-15 | |
| """ | |
| mapping = { | |
| 'X': 'Х', 'H': 'Н', 'T': 'Т', 'C': 'С', 'B': 'В', 'K': 'К', 'M': 'М', 'A': 'А', 'R': 'Р', 'P': 'Р', | |
| 'x': 'х', 'h': 'н', 't': 'т', 'c': 'с', 'b': 'в', 'k': 'к', 'm': 'м', 'a': 'а', 'r': 'р', 'p': 'р' | |
| } | |
| token_re = re.compile(r'\b[0-9A-Za-zА-Яа-яЁё\-\+_/\.]+\b') | |
| def replace_latin_in_steel_tokens(text): | |
| def repl_token(match): | |
| token = match.group(0) | |
| has_digit = any(ch.isdigit() for ch in token) | |
| has_latin = any('A' <= ch <= 'Z' or 'a' <= ch <= 'z' for ch in token) | |
| if has_digit and has_latin: | |
| new_chars = [] | |
| for ch in token: | |
| if ord(ch) < 128 and ch in mapping: | |
| new_chars.append(mapping[ch]) | |
| else: | |
| new_chars.append(ch) | |
| return ''.join(new_chars) | |
| else: | |
| return token | |
| return token_re.sub(repl_token, text) | |
| def cosine_similarity(a, b): | |
| return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))) | |
| def main(): | |
| model = SentenceTransformer(EMBEDDING_MODEL) | |
| print(f"🔹 Loaded embedding model: {EMBEDDING_MODEL}\n") | |
| query_fixed = replace_latin_in_steel_tokens(QUERY) | |
| chunk_fixed = replace_latin_in_steel_tokens(CHUNK_FULL) | |
| chunk_fixed_2 = replace_latin_in_steel_tokens(CHUNK_SHORT) | |
| chunk_fixed_3 = replace_latin_in_steel_tokens(CHUNK_3000_30) | |
| embeddings = model.encode([query_fixed, chunk_fixed, chunk_fixed_2, chunk_fixed_3]) | |
| query_emb, full_emb, short_emb, chunk_3000_emb = embeddings | |
| sim_full = cosine_similarity(query_emb, full_emb) | |
| sim_short = cosine_similarity(query_emb, short_emb) | |
| sim_3000_30 = cosine_similarity(query_emb, chunk_3000_emb) | |
| timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") | |
| result_text = ( | |
| f"Запрос: {QUERY}\n\n" | |
| f"Сходство (полный чанк): {sim_full:.4f}\n" | |
| f"Сходство (сокращённый чанк): {sim_short:.4f}\n" | |
| f"Сходство (чанк 3000 символов, 30 строк): {sim_3000_30:.4f}\n\n" | |
| f"Вывод: {'Сокращённый чанк ближе к запросу' if sim_short > sim_full else 'Полный чанк ближе к запросу'}\n" | |
| ) | |
| output_file = f"chunk_similarity_results_{timestamp}.txt" | |
| with open(output_file, "w", encoding="utf-8") as f: | |
| f.write(result_text) | |
| print(result_text) | |
| print(f"✅ Результаты сохранены в файл: {output_file}") | |
| if __name__ == "__main__": | |
| main() |