Проблема с чат-ботом на основе трансформатора, генерирующим бессвязные ответыPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с чат-ботом на основе трансформатора, генерирующим бессвязные ответы

Сообщение Anonymous »

Я разрабатываю чат-бота, используя библиотеку трансформеров Hugging Face. Предполагается, что бот определяет язык ввода (испанский, каталанский или английский) и реагирует соответствующим образом, используя предварительно обученные модели. Однако ответы часто бессвязны или содержат повторяющиеся символы.
Вот структура проекта:

Код: Выделить всё

pythonAI/
├── download.py
├── learner.py
├── main.py
├── model_old.py
├── modelos
│   ├── ca
│   │   ├── config.json
│   │   ├── generation_config.json
│   │   ├── merges.txt
│   │   ├── model.safetensors
│   │   ├── special_tokens_map.json
│   │   ├── tokenizer_config.json
│   │   ├── tokenizer.json
│   │   └── vocab.json
│   ├── en
│   │   ├── config.json
│   │   ├── generation_config.json
│   │   ├── merges.txt
│   │   ├── model.safetensors
│   │   ├── special_tokens_map.json
│   │   ├── tokenizer_config.json
│   │   ├── tokenizer.json
│   │   └── vocab.json
│   └── es
│       ├── config.json
│       ├── generation_config.json
│       ├── model.safetensors
│       ├── special_tokens_map.json
│       ├── tokenizer_config.json
│       ├── tokenizer.json
│       └── vocab.txt
├── model.py
├── nlp_processor.py
├── __pycache__
│   ├── learner.cpython-39.pyc
│   ├── model.cpython-39.pyc
│   ├── nlp_processor.cpython-39.pyc
│   └── search_engine.cpython-39.pyc
├── README.md
├── search_engine.py
└── utils.py
Вот соответствующий код:
nlp_processor.py для определения языка и предварительной обработки текста:

Код: Выделить всё

from langdetect import detect
import re

def detect_language(text):
try:
return detect(text)
except:
return 'unknown'

def preprocess_text(text):
text = re.sub(r'\s+', ' ', text).strip()
return text
model.py для загрузки моделей и генерации ответов:

Код: Выделить всё

from transformers import AutoModelForCausalLM, AutoTokenizer

class ChatModel:
def __init__(self):
self.models = {
'es': self.load_model('./modelos/es'),
'ca': self.load_model('./modelos/ca'),
'en': self.load_model('./modelos/en')
}

def load_model(self, model_path):
model = AutoModelForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
return model, tokenizer

def get_response(self, processed_input, lang):
model, tokenizer = self.models.get(lang, (None, None))
if model is None or tokenizer is None:
return "Estoy aprendiendo, pronto podré hablar en tu idioma.  Escríbeme en Español, catalán o inglés."

inputs = tokenizer.encode(processed_input, return_tensors='pt')
outputs = model.generate(inputs, max_length=50, num_return_sequences=1, pad_token_id=tokenizer.eos_token_id)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
return response
main.py для координации работы чат-бота:

Код: Выделить всё

from nlp_processor import detect_language, preprocess_text
from model import ChatModel

def main():
chat_model = ChatModel()

while True:
user_input = input("Pregunta: ")
if user_input.lower() in ['salir', 'exit', 'quit']:
break

detected_lang = detect_language(user_input)
if detected_lang not in ['es', 'ca', 'en']:
detected_lang = 'unknown'

processed_input = preprocess_text(user_input)
response = chat_model.get_response(processed_input, detected_lang)

print(f"Chatbot: {response}")

if __name__ == "__main__":
main()
Пример проблемы:
Когда я ввожу «¿hombre o mujer?» чат-бот отвечает:

Код: Выделить всё

Chatbot: ¿ hombre o mujer? ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿lo??????????????????????????????????????
Я убедился, что модели правильно загружены и помещены в соответствующие каталоги.
Что может быть причиной этой проблемы и как я могу исправить?
Спасибо за помощь!
Вот конкретные проблемы, с которыми я столкнулся:
Ответы часто бессвязны.
Ответы содержат повторяющиеся символы или знаки препинания.
Действия, которые я предпринял:
Проверил целостность файлов модели.
Проверили версии трансформаторов, факела и других зависимостей.
Убедились, что токенизаторы правильно связаны с соответствующими моделями.
Среда:
Python 3.9
transformers 4.12.5
torch 1.10.0
langdetect 1.0.9
Я ищу органические ответы

Подробнее здесь: https://stackoverflow.com/questions/785 ... nt-answers
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Пользовательская модель чат-бота на основе трансформатора не генерирует действительные ответы
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Пользовательская модель чат-бота на основе трансформатора не генерирует действительные ответы
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с чат-ботом Telegram. Чат не найден, хотя он есть
    Anonymous » » в форуме Python
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с чат-ботом Telegram. Чат не найден, хотя он есть
    Anonymous » » в форуме Python
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Проблема с генеративным чат-ботом НЛП
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»