Введение
Семантический поиск — это передовой метод, направленный на повышение точности поиска за счет понимания намерений пользователя и контекстуального значения терминов. Используя алгоритмы машинного обучения, мы можем создать семантическую поисковую систему, которая выдает более релевантные результаты, повышая удобство работы пользователей. В этой статье мы проведем вас через процесс создания семантической поисковой системы с использованием Python, машинного обучения и Jupyter Notebooks. Мы также предоставим примеры данных и примеры выходных данных.
Предпосылки
Прежде чем погрузиться в код, убедитесь, что у вас есть следующее:
- Базовые знания программирования на Python
- Знакомство с блокнотами Jupyter.
- Понимание концепций машинного обучения
- Установленные ноутбуки Python 3.x и Jupyter
Настройка среды
Сначала создайте виртуальную среду и установите необходимые библиотеки:
python -m venv semantic_search source semantic_search/bin/activate pip install numpy pandas scikit-learn tensorflow_hub sentence_transformers
Затем откройте Jupyter Notebooks и создайте новый блокнот с именем «Semantic_Search.ipynb».
Подготовка данных и предварительная обработка
Мы будем использовать набор данных статей или документов в качестве нашего поискового корпуса. В демонстрационных целях давайте создадим небольшой набор данных из пяти статей. На практике вы должны использовать больший набор данных.
Очистите и предварительно обработайте текстовые данные:
data = pd.DataFrame({ 'title': [ 'Introduction to Natural Language Processing', 'Deep Learning for Computer Vision', 'Reinforcement Learning: An Overview', 'A Comprehensive Guide to Convolutional Neural Networks', 'Text Classification with Machine Learning'], 'text': [ 'Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence concerned with the interactions between computers and human language...', 'Deep learning has revolutionized the field of computer vision, enabling computers to interpret and understand visual information with unprecedented accuracy...', 'Reinforcement learning is an area of machine learning where an agent learns to make decisions by interacting with its environment...', 'Convolutional Neural Networks (CNNs) are a class of deep learning algorithms that have shown great success in various computer vision tasks...', 'Text classification is a common task in natural language processing, which involves assigning predefined categories to a given text...'] })
Очистите и предварительно обработайте текстовые данные:
def preprocess_text(text): # Add your text preprocessing steps here (e.g., lowercasing, removing stopwords, stemming) return preprocessed_text data['cleaned_text'] = data['text'].apply(preprocess_text)
Создание семантической модели
Мы будем использовать предварительно обученную модель Sentence-BERT для создания вложений документов. Загрузите модель и создайте вложения:
model = SentenceTransformer('paraphrase-distilroberta-base-v2') embeddings = model.encode(data['cleaned_text'].tolist(), convert_to_tensor=True)
Реализация функции поиска
Определите функцию поиска, которая принимает запрос, предварительно обрабатывает его, вычисляет косинусное сходство между запросом и встраиванием документа и возвращает лучшие результаты:
from sklearn.metrics.pairwise import cosine_similarity def search(query, top_n=5): query_preprocessed = preprocess_text(query) query_embedding = model.encode(query_preprocessed, convert_to_tensor=True) similarities = cosine_similarity(query_embedding, embeddings) top_indices = np.argsort(-similarities[0])[:top_n] top_results = data.iloc[top_indices].reset_index(drop=True) top_results['similarity'] = similarities[0][top_indices] return top_results
Оценка модели
Протестируйте функцию поиска с помощью примера запроса:
query = "natural language processing" results = search(query, top_n=3) print(results)
Пример вывода:
title \ 0 Introduction to Natural Language Processing 1 Text Classification with Machine Learning 2 Reinforcement Learning: An Overview text \ 0 Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence concerned with the interactions between computers and human language... 1 Text classification is a common task in natural language processing, which involves assigning predefined categories to a given text... 2 Reinforcement learning is an area of machine learning where an agent learns to make decisions by interacting with its environment... similarity 0 0.921572 1 0.687315 2 0.642183
Настройте модель или настройте функцию поиска по мере необходимости, чтобы повысить производительность.
Заключение
В этой статье мы показали, как создать семантическую поисковую систему с использованием Python, машинного обучения и Jupyter Notebooks. Следуя этим шагам, вы сможете создать мощную поисковую систему, которая понимает намерения пользователя и возвращает более релевантные результаты. Поэкспериментируйте с различными предварительно обученными моделями или настройте их на своих данных, чтобы еще больше повысить эффективность поиска.