File size: 18,170 Bytes
fbed18d
 
 
9ce9909
fbed18d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9ce9909
 
fbed18d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9ce9909
 
 
 
 
fbed18d
9ce9909
fbed18d
 
 
9ce9909
fbed18d
 
 
 
 
9ce9909
fbed18d
 
 
 
 
 
 
 
 
 
 
 
9ce9909
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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()