Создание собственной базы ответов на русском языке

Здравствуйте! Сделал все как в документации “Building your own response base for bert ranking” удалил и поставил свои в .csv файл русские вопросы и ответы, но почему то показывается так:
x::Привет

[‘Привет’] [0.9185912609100342]
x::

видимо я должен установить русский разговорный bert или это проблема кодировки? Но я как то не смог найти в документации где и как это делается. Еще заметил на своих базах ответах на английском не правильно выбирается ответы, хотя в точь-точь создал вопрос, возможно это из-за ответах какие то знаки нужно ставить типа “eou ,” “) eou eot” не понятно что это

запускал по python -m deeppavlov interact ranking_ubuntu_v2_bert_sep_interact

1 Like

А ваш csv файл в какой кодировке сохранен? (попробуйте сохранить в utf-8)

Да файл в utf-8 проверил.

Вообще rank_ubuntu_v2_bert_sep_interact можно создать базу ответов на русском языке? Или это только для английского языка?

Здравствуйте! В rank_ubuntu_v2_bert_sep_interact используется uncased_L-12_H-768_A-12 BERT (то есть модель только для английского языка).

а на какой модели можно так же создать базу ответов или нужно как то поменять модель bert?

Попробовал изменить в файле rank_ubuntu_v2_bert_sep_interact.json название uncased_L-12_H-768_A-12 BERT на ru_conversational_cased_L-12_H-768_A-12 и загрузил в папку рядом пишет ошибка(часть):
File “C:\Users\gtyri\PycharmProjects\rtyy\venv\lib\site-packages\deeppavlov\core\models\tf_model.py”, line 55, in load
saver.restore(self.sess, path)
File “C:\Users\gtyri\PycharmProjects\rtyy\venv\lib\site-packages\tensorflow_core\python\training\saver.py”, line 1326, in restore
err, “a mismatch between the current graph and the graph”)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Restoring from checkpoint failed. This is most likely due to a mismatch between the current graph and the graph from the checkpoint. Please ensure that you have not altered
the graph expected based on the checkpoint. Original error:

Assign requires shapes of both tensors to match. lhs shape= [119547,768] rhs shape= [30522,768]
[[node save/Assign_4 (defined at \PycharmProjects\rtyy\venv\lib\site-packages\tensorflow_core\python\framework\ops.py:1748) ]]

Original stack trace for ‘save/Assign_4’:
File “\AppData\Local\Programs\Python\Python36\lib\runpy.py”, line 193, in _run_module_as_main
main”, mod_spec)
File “\AppData\Local\Programs\Python\Python36\lib\runpy.py”, line 85, in _run_code
exec(code, run_globals)

У вас вообще можно сделать на русском базу ответов?

Здравствуйте. Да, можно. Во-первых у вас действительно поблема с кодировкой в вашем файле. Если напишите почтовый адрес, то можем скинуть простой пример файла с русскими ответами. Во-вторых, если вы подставляете ru_conversational_cased_L-12_H-768_A-12, то нужно удалить файлы {MODEL_PATH}/model*, поскольку это модель, которая была обучена начиная с uncased_L-12_H-768_A-12 BERT и она несовместима с ru_conversational_cased_L-12_H-768_A-12. Тогда будет работать. Но нужно также понимать, что работать будет не очень хорошо, поскольку ru_conversational_cased_L-12_H-768_A-12 не обучалась для ранижирования. Готовых моделей для ранжирования на русском сейчас нет, вы можете самостоятельно взять ваши данные на русском и обучить модель с помощью конфига https://github.com/deepmipt/DeepPavlov/blob/master/deeppavlov/configs/ranking/ranking_default.json по инструкции http://docs.deeppavlov.ai/en/master/features/models/neural_ranking.html#training-and-inference-on-your-own-data.

Да пример было бы замечательно.
почта: bairto.c@gmail.com

Отправил простой пример базы ответов на русском на почту. У меня на ubuntu он нормально работает.

Вот еще вопрос по обучению модели ranking_default. Получается в конфиге ничего менять не надо? Надо просто в папку где находится конфиг кинуть train.csv, valid.csv, test.csv.

Можно еще пример по этим трем файлам как они представляются а то в документации примера заполнения не нашел.

from deeppavlov import configs, train_model, build_model

rank_model = train_model(configs.ranking.ranking_default)
rank_model = build_model(configs.ranking.ranking_default)

print(rank_model([‘Привет’]))

Выводится так:

Skipping registering GPU devices…
2020-10-26 11:00:38.399351: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1180] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-10-26 11:00:38.400183: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1186] 0
2020-10-26 11:00:38.400703: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1199] 0: N
2020-10-26 11:00:40.326 INFO in ‘deeppavlov.models.ranking.keras_siamese_model’[‘keras_siamese_model’] at line 85: [initializing BiLSTMSiameseNetwork from saved]
[]

Process finished with exit code 0

Instructions for updating:
If using Keras pass *_constraint arguments to layers.
2020-10-26 10:55:36.459 INFO in ‘deeppavlov.models.ranking.keras_siamese_model’[‘keras_siamese_model’] at line 85: [initializing BiLSTMSiameseNetwork from saved]
2020-10-26 10:55:38.457 INFO in ‘deeppavlov.core.trainers.nn_trainer’[‘nn_trainer’] at line 199: Initial best r@1 of 1.0
{“valid”: {“eval_examples_count”: 2, “metrics”: {“r@1”: 1.0, “r@2”: 1.0, “r@5”: 1.0, “rank_response”: 0.0}, “time_spent”: “0:00:01”, “epochs_done”: 0, “batches_seen”: 0, “train_examples_seen”: 0, “impatience”: 0, “patience_limit”: 3}}
WARNING:tensorflow:From C:\Users\gtyri\PycharmProjects\rtyy\venv\lib\site-packages\tensorflow_core\python\ops\math_grad.py:1424: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
{“train”: {“eval_examples_count”: 4, “metrics”: {“f1”: 0.8, “acc”: 0.75}, “time_spent”: “0:00:05”, “epochs_done”: 0, “batches_seen”: 1, “train_examples_seen”: 4, “loss”: 0.12913791835308075}}
{“valid”: {“eval_examples_count”: 2, “metrics”: {“r@1”: 1.0, “r@2”: 1.0, “r@5”: 1.0, “rank_response”: 0.0}, “time_spent”: “0:00:05”, “epochs_done”: 1, “batches_seen”: 1, “train_examples_seen”: 4, “impatience”: 1, “patience_limit”: 3}}
2020-10-26 10:55:42.196 INFO in ‘deeppavlov.core.trainers.nn_trainer’[‘nn_trainer’] at line 212: Did not improve on the r@1 of 1.0
{“train”: {“eval_examples_count”: 4, “metrics”: {“f1”: 0.8, “acc”: 0.75}, “time_spent”: “0:00:05”, “epochs_done”: 1, “batches_seen”: 2, “train_examples_seen”: 8, “loss”: 0.13247206807136536}}
2020-10-26 10:55:42.372 INFO in ‘deeppavlov.core.trainers.nn_trainer’[‘nn_trainer’] at line 212: Did not improve on the r@1 of 1.0
{“valid”: {“eval_examples_count”: 2, “metrics”: {“r@1”: 1.0, “r@2”: 1.0, “r@5”: 1.0, “rank_response”: 0.0}, “time_spent”: “0:00:05”, “epochs_done”: 2, “batches_seen”: 2, “train_examples_seen”: 8, “impatience”: 2, “patience_limit”: 3}}
{“train”: {“eval_examples_count”: 4, “metrics”: {“f1”: 0.6667, “acc”: 0.5}, “time_spent”: “0:00:05”, “epochs_done”: 2, “batches_seen”: 3, “train_examples_seen”: 12, “loss”: 0.11719633638858795}}
2020-10-26 10:55:42.548 INFO in ‘deeppavlov.core.trainers.nn_trainer’[‘nn_trainer’] at line 212: Did not improve on the r@1 of 1.0
2020-10-26 10:55:42.548 INFO in ‘deeppavlov.core.trainers.nn_trainer’[‘nn_trainer’] at line 329: Ran out of patience
{“valid”: {“eval_examples_count”: 2, “metrics”: {“r@1”: 0.5, “r@2”: 1.0, “r@5”: 1.0, “rank_response”: 0.5}, “time_spent”: “0:00:05”, “epochs_done”: 3, “batches_seen”: 3, “train_examples_seen”: 12, “impatience”: 3, “patience_limit”: 3}}
2020-10-26 10:55:44.960 INFO in ‘deeppavlov.core.data.simple_vocab’[‘simple_vocab’] at line 115: [loading vocabulary from E:.deeppavlov\models\default_ranking_vocabs\sent.dict]
2020-10-26 10:55:44.961 INFO in ‘deeppavlov.core.data.simple_vocab’[‘simple_vocab’] at line 115: [loading vocabulary from E:.deeppavlov\models\default_ranking_vocabs\tok.dict]
2020-10-26 10:55:44.986 INFO in ‘deeppavlov.models.embedders.fasttext_embedder’[‘fasttext_embedder’] at line 53: [loading fastText embeddings from E:\.deeppavlov\downloads\embeddings\wiki.ru.bin]

2020-10-26 10:57:14.836772: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1639] Found device 0 with properties:
name: GeForce GTX 660 major: 3 minor: 0 memoryClockRate(GHz): 1.0975
pciBusID: 0000:01:00.0
2020-10-26 10:57:15.025076: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cudart64_100.dll’; dlerror: cudart64_100.dll not found
2020-10-26 10:57:15.040113: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cublas64_100.dll’; dlerror: cublas64_100.dll not found
2020-10-26 10:57:15.044421: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cufft64_100.dll’; dlerror: cufft64_100.dll not found
2020-10-26 10:57:15.047532: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘curand64_100.dll’; dlerror: curand64_100.dll not found
2020-10-26 10:57:15.050277: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cusolver64_100.dll’; dlerror: cusolver64_100.dll not found
2020-10-26 10:57:15.052951: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cusparse64_100.dll’; dlerror: cusparse64_100.dll not found
2020-10-26 10:57:15.057293: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cudnn64_7.dll’; dlerror: cudnn64_7.dll not found
2020-10-26 10:57:15.057702: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1662] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices…
2020-10-26 10:57:15.061049: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1180] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-10-26 10:57:15.061280: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1186] 0
2020-10-26 10:57:15.061450: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1199] 0: N
2020-10-26 10:57:16.435 INFO in ‘deeppavlov.models.ranking.keras_siamese_model’[‘keras_siamese_model’] at line 85: [initializing BiLSTMSiameseNetwork from saved]
{“valid”: {“eval_examples_count”: 2, “metrics”: {“r@1”: 1.0, “r@2”: 1.0, “r@5”: 1.0, “rank_response”: 0.0}, “time_spent”: “0:00:01”}}
{“test”: {“eval_examples_count”: 2, “metrics”: {“r@1”: 1.0, “r@2”: 1.0, “r@5”: 1.0, “rank_response”: 0.0}, “time_spent”: “0:00:01”}}
2020-10-26 10:57:21.879 WARNING in ‘deeppavlov.core.commands.infer’[‘infer’] at line 55: No “save_path” parameter for the siamese_preprocessor component, so “load_path” will not be renewed
2020-10-26 10:57:21.910 INFO in ‘deeppavlov.core.data.simple_vocab’[‘simple_vocab’] at line 115: [loading vocabulary from E:.deeppavlov\models\default_ranking_vocabs\sent.dict]
2020-10-26 10:57:21.957 INFO in ‘deeppavlov.core.data.simple_vocab’[‘simple_vocab’] at line 115: [loading vocabulary from E:.deeppavlov\models\default_ranking_vocabs\tok.dict]
2020-10-26 10:57:21.985 INFO in ‘deeppavlov.models.embedders.fasttext_embedder’[‘fasttext_embedder’] at line 53: [loading fastText embeddings from E:\.deeppavlov\downloads\embeddings\wiki.ru.bin]

Из за чего выдает пустую строку [] ?

Возможно у меня не правильно train.csv, valid.csv, test.csv
в test.csv так должно выглядеть?

Hi Hello 1 Pi 0
Hi Hi Bay 1 Go 0
Hello World Good 1 response 0
Hello man Money 1 label 0

test.csv

Hi Hello Bay
Hello Good Hello

При обучении ranking_default файлы train.csv, valid.csv, test.csv заполняются английским текстом
а мои варианты вопросов и ответов пропали

примерно таким заполняются:
be Tiaa Cref a good retirement plan TIAA Cref stand for Teachers Insurance and Annuity Association college retirement equity fund TIAA Cref be 1 the most highly rate insurance company in the U.S. they offer insurance product and financial service that include retirement plan they have also expand their service from just educator to the public … еще там много текста

Мне кажется Ranking_default конфиг не понимает кириллицу, только английские буквы. Может быть такое?