Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.11.2023
Сообщений: 4

Wikipedia API

09.06.2024, 10:59. Показов 305. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.06.2024, 10:59
Ответы с готовыми решениями:

Парсинг страницы сайта ru.wikipedia.org/wiki/Россия
Парсинг страницы сайта ru.wikipedia.org/wiki/Россия Осуществите парсинг страницы сайта в блоке статьи...

Wikipedia API
Всем привет! Может кто когда пользовался этой штукой? Буду рад любой инфе (желательно на русском). Может у вас есть свои проекты с...

Работа с wikipedia api
Хотелось бы поинтересоваться, возможно ли адекватно работать с wikipedia api в java? Информация везде поверхностная. Так же интересует...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2024, 10:59
Помогаю со студенческими работами здесь

Wikipedia в Топ 1
А знате ли Вы что если по ННому запросу в ТОП1 стоит Wikipedia то конкуренция по запросу ничтожно мала и в топ запрос можно вывести парой...

Excel + wikipedia
На странице википедия есть несколько таблиц. И таких страниц несколько. Структура всех таблиц одинакова. Я могу и вручную скопировать...

Wikipedia NoFollow
Вот такая вот "информация к размышлению": <i>24.01.2007 12:19 Мэтт Каттс комментирует Wikipedia nofollow Закрытие всех...

Парсинг wikipedia
Добрый день! Не могу приумать, как пропарсить страницы wikipedia с помощью питона. Библиотеку wikipedia-master пробовал,но она русские...

Парсинг страниц ru.wikipedia.org
Добрый день. Пытаюсь взаимодействовать с API русской википедии так: import http.client connection =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru