|
0 / 0 / 0
Регистрация: 20.11.2023
Сообщений: 4
|
|
Wikipedia API09.06.2024, 10:59. Показов 329. Ответов 0
Приветствую! Решился я сделать чат-бота, который будет отвечать на вопросы пользователя используя данные из Википедии. И возникли некоторые сложности: чат-бот на часть вопросов отвечает правильно ('Вопрос: Кто такой Алексей Михайлович?
Ответ: Алексе́й Миха́йлович Тиша́йший (9 (19) марта 1629, Москва — 29 января (8 февраля) 1676, Москва) — второй русский царь из династии Романовых (14 (24) июля 1645 — 29 января (8 февраля) 1676), сын Михаила Фёдоровича и его второй жены Евдокии. Алексей Михайлович получил образование у своего воспитателя Бориса Морозова, прежде чем взойти на престол в возрасте 16 лет.'), но на некоторых начинает прям тупить ('Вопрос: Что такое СССР? Ответ: «Что такое? Кто такой?» — универсальная энциклопедия в двух (позже — в трёх) томах, предназначенная для детей. ). Как это исправить я не знаю, спрашивал у CHAT GPT, он сделал только хуже, еле поправил. Может у кого-нибудь есть идеи что где и как исправить, чтобы все работало? import spacy import wikipedia import wikipediaapi import random import string from transformers import pipeline, GPT2LMHeadModel, GPT2Tokenizer # Загрузка модели SpaCy для русского языка nlp = spacy.load('ru_core_news_md') # Указание идентификатора модели из Hugging Face model_name_or_path = 'sberbank-ai/rugpt3small_based_on_gpt2' # Загрузка модели и токенизатора model = GPT2LMHeadModel.from_pretrained(model_na me_or_path) tokenizer = GPT2Tokenizer.from_pretrained(model_name _or_path) # Создание генератора текста generator = pipeline('text-generation', model=model, tokenizer=tokenizer) def classify_question(query): query_lower = query.lower() if any(keyword in query_lower for keyword in ["кто", "кто такой", "кто такая"]): return "who" elif any(keyword in query_lower for keyword in ["что", "что такое"]): return "what" elif any(keyword in query_lower for keyword in ["когда"]): return "when" elif any(keyword in query_lower for keyword in ["почему", "зачем"]): return "why" elif "расшифровывается" in query_lower: return "abbreviation" return "general" import wikipedia def search_wikipedia(query): try: # Установка языка поиска на русский wikipedia.set_lang("ru") # Поиск страницы по запросу page = wikipedia.page(query) # Получение краткого резюме страницы summary = wikipedia.summary(query, sentences=2) return summary except wikipedia.exceptions.PageError: return "Страница не найдена." except wikipedia.exceptions.DisambiguationError : return "Найдено несколько возможных страниц. Уточните запрос." def generate_answer(question): prompt = f"Вопрос: {question}\nОтвет:" response = generator(prompt, max_new_tokens=100, num_return_sequences=1, truncation=True) generated_text = response[0]['generated_text'] start_index = generated_text.find("Ответ:") + len("Ответ:") return generated_text[start_index:].strip() def get_abbreviation_meaning(query): # Добавьте здесь логику для расшифровки сокращений return "Расшифровка сокращения не найдена." def main(): while True: user_input = input("Задайте ваш вопрос: ") if user_input.lower() in ['выход', 'exit']: break question_type = classify_question(user_input) print(f"Тип вопроса: {question_type}") # Попробуем найти ответ в Wikipedia wiki_answer = search_wikipedia(user_input) if wiki_answer: print(f"Вопрос: {user_input}") print(f"Ответ: {wiki_answer}") else: # Если не удалось найти ответ в Wikipedia, используем генеративную модель answer = generate_answer(user_input) print(f"Вопрос: {user_input}") print(f"Ответ: {answer}") if __name__ == "__main__": main()
0
|
|
| 09.06.2024, 10:59 | |
|
Ответы с готовыми решениями:
0
Парсинг страницы сайта ru.wikipedia.org/wiki/Россия Wikipedia API Работа с wikipedia api |
| 09.06.2024, 10:59 | |
|
Помогаю со студенческими работами здесь
1
Wikipedia в Топ 1 Excel + wikipedia Wikipedia NoFollow
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|