Наименование сети 1
Наименование сети 2
Целевой признак
ЦИТРАМОН П-АВЕКСИМА ТАБЛ. N20, Производитель: Авексима+
Цитрамон П таб. №20, Производитель: Авексима ОАО/пр.Ирбитский ХФЗ ОАО
ЦИТРАМОН П ТАБЛ. N20, Производитель: УРАЛБИОФАРМ
Цитрамон П таб. №20, Производитель: Авексима ОАО/пр.Ирбитский ХФЗ ОАО
КОНТАКТНЫЕ ЛИНЗЫ OPTIMA FW 4 ШТ 8,4, -2,50 BAUSCH+LOMB, Производитель: БАУШ И ЛОМБ
Линзы контактные bausch+ lomb optima fw 8,7 -2,50 N4, Производитель: Бауш энд Ломб Инк
BAUSCH+ LOMB OPTIMA FW 8,7 N4/-3,50/ МЯГКИЕ КОНТАКТНЫЕ ЛИНЗЫ , Производитель: БАУШ И ЛОМБ
Линзы контактные bausch+ lomb optima fw 8,7 -2,50 N4, Производитель: Бауш энд Ломб Инк
КРЕМ Д/РУК УВЛАЖНЯЮЩИЙ COMFORTE (С ГЛИЦЕРИНОМ) ТУБА 50 МЛ Х1 , Производитель: ВЕТПРОМ
Comforte крем д/рук увлажняющий глицерин 50мл, Производитель: ВетПром АД
Comforte крем д/рук увлажняющий глицерин 50мл, Производитель: ВетПром АД
import pandas as pd
import pymorphy2
import nltk
# Загрузите необходимые ресурсы NLTK
#Модель для разбиения текста на предложения и слова.
nltk.download('punkt')
# Модель для определения частей речи в тексте.
nltk.download('averaged_perceptron_tagger')
from nltk.corpus import stopwords
# Загрузка списка стоп-слов, которые часто игнорируются при обработке текста.
nltk.download('stopwords')
russian_stopwords = stopwords.words("russian") # Функция для обработки текста
def preprocess_text(text):
# Приводим текст к нижнему регистру
text = text.lower()
# Замена "кидс" или "дет" на "детский"
text = re.sub(r'\b(kids|кидс|дет|для детей)\b', 'детский', text)
# Замена "р-р" на "раствор"
text = re.sub(r'\bр-р\b', 'раствор', text.lower())
# Замена "п/о" на "покрытые оболочкой"
# text = re.sub(r'\bп/о\b', 'покрытые оболочкой', text)
text = re.sub(r'\bкапс\b', 'капсула', text)
text = re.sub(r'\bкиш\.?/?раст\b', 'кишечнорастворимый', text)
text = re.sub(r'\bтаб\b', 'таблетка', text)
# Словарь транслитерации
translit_dict = {
'v': 'в', 'i': 'и', 't': 'т',
'r': 'р', 'u': 'у', 'm': 'м',
'v': 'в', 't': 'т',
'r': 'р', 'u': 'у', 'm': 'м',
}
# Заменяем латинские буквы на кириллицу
for lat_char, cyr_char in translit_dict.items():
text = text.replace(lat_char, cyr_char)
# Замена "№" followed by digits to "digits шт"
text = re.sub(r'№(\d+)', r'\1 шт', text)
# Заменяем ненужные символы на пробелы, оставляя числа нетронутыми
text = re.sub(r'[^\w\s,]', ' ', text) # Заменяет все кроме букв, цифр, пробелов, запятых и точек на пробелы
text = re.sub(r'(?<!\d)\,(?!\d)', ' ', text) # Заменяет точки, не окруженные цифрами, на пробелы
# Убираем лишние пробелы
text = re.sub(r'\s+', ' ', text).strip()
return text
# Создаем объект морфологического анализатора
morph = pymorphy2.MorphAnalyzer()
# Определяем словарь исключений, которые не нужно нормализовать
exceptions = {
"спрей": "спрей",
# другие слова и их леммы
}
#Функция стемминга
def stem_text(text):
words = text.split()
stemmed_words = []
for word in words:
if word in exceptions:
stemmed_words.append(exceptions[word])
else:
parsed_word = morph.parse(word)
if parsed_word:
stemmed_words.append(parsed_word[0].normal_form)
else:
stemmed_words.append(word)
return ' '.join(stemmed_words)
#Функция удаления стоп-слов
def remove_stopwords(text):
words = text.split()
filtered_words = [word for word in words if word not in russian_stopwords]
return " ".join(filtered_words)
import os
import torch
from datasets import Dataset
from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments
model_input_path = '/path/to/your/model'
tokenizer = AutoTokenizer.from_pretrained(model_input_path)
model = AutoModelForSequenceClassification.from_pretrained(model_input_path, num_labels=2)
def tokenize_function(examples):
return tokenizer(examples['text1'], examples['text2'],
truncation=True, padding='max_length', max_length=200)
tokenized_train = dataset_train.map(tokenize_function, batched=True)
training_args = TrainingArguments(
output_dir='/path/to/output',
evaluation_strategy='epoch',
save_strategy='epoch',
learning_rate=2e-5,
per_device_train_batch_size=16,
per_device_eval_batch_size=16,
num_train_epochs=3,
weight_decay=0.01,
warmup_ratio=0.1,
logging_steps=100
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_train,
eval_dataset=tokenized_eval
)
trainer.train()
model_path = "/path/to/your/model"
trainer.save_model(model_path)
tokenizer.save_pretrained(model_path)