# Write NLU Data Programmatically

**URL:** <https://forum.rasa.com/t/write-nlu-data-programmatically/46715>\
**Category:** Rasa Open Source\
**Created:** [August 10, 2021, 5:41am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715 "2021-08-10T05:41:46Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mushahid2521](https://avatars.discourse-cdn.com/v4/letter/m/e480ec/32.png) [@Mushahid2521](https://forum.rasa.com/u/Mushahid2521)\
**Post date:** [August 10, 2021, 5:41am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/1 "2021-08-10T05:41:46Z")

</div>

I was trying to write the YML files of rasa using the following python code. But it doesn’t load successfully when I try to start training it.

`yaml.dump(data_, file, default_flow_style=False, sort_keys=False)`

How can I write the data using Rasa’s format that loads correctly? I am assuming that my training data and config file will change dynamically.

Thanks a lot

---

<div class="post-metadata">

**Author:** ![souvikg10](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/souvikg10/32/93_2.png) [@souvikg10](https://forum.rasa.com/u/souvikg10)\
**Post date:** [August 10, 2021, 8:58am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/2 "2021-08-10T08:58:54Z")

</div>

I will recommend writing a custom training data importer instead of a converter to yaml

> **[Training Data Importers](https://rasa.com/docs/rasa/training-data-importers#writing-a-custom-importer)**
>
> Change the way Rasa imports training data by replacing the default importer or writing your own importer.

---

<div class="post-metadata">

**Author:** ![nik202](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/nik202/32/16098_2.png) [@nik202](https://forum.rasa.com/u/nik202)\
**Post date:** [August 10, 2021, 10:48am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/3 "2021-08-10T10:48:47Z")

</div>

@Mushahid2521 Heya!

If I get you right; do you want to convert or write .yml for your training data as per Rasa Format? Where do you had data, I mean in excel, txt etc

---

<div class="post-metadata">

**Author:** ![Mushahid2521](https://avatars.discourse-cdn.com/v4/letter/m/e480ec/32.png) [@Mushahid2521](https://forum.rasa.com/u/Mushahid2521)\
**Post date:** [August 11, 2021, 2:17am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/4 "2021-08-11T02:17:51Z")

</div>

Yes. Let’s say I have an initial rasa project. I want to open the data files like nlu.yml, stories.yml, rules.yml, domain.yml and append new intents, responses etc and save it back again.

---

<div class="post-metadata">

**Author:** ![nik202](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/nik202/32/16098_2.png) [@nik202](https://forum.rasa.com/u/nik202)\
**Post date:** [August 11, 2021, 9:26am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/5 "2021-08-11T09:26:09Z")

</div>

@Mushahid2521 You want to open, write or create?

---

<div class="post-metadata">

**Author:** ![sML](https://avatars.discourse-cdn.com/v4/letter/s/aca169/32.png) [@sML](https://forum.rasa.com/u/sML)\
**Post date:** [October 6, 2021, 4:25am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/6 "2021-10-06T04:25:40Z")

</div>

Hello Team. Can I get more info on this ? Assume I have csv file with intents and corresponding training examples, how do I programatically convert it to the way rasa expects and successfully train the model.

Thanks

---

<div class="post-metadata">

**Author:** ![nik202](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/nik202/32/16098_2.png) [@nik202](https://forum.rasa.com/u/nik202)\
**Post date:** [October 24, 2021, 12:44pm UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/7 "2021-10-24T12:44:13Z")

</div>

@sML Is this still a issue or you solved this?

---

<div class="post-metadata">

**Author:** ![sML](https://avatars.discourse-cdn.com/v4/letter/s/aca169/32.png) [@sML](https://forum.rasa.com/u/sML)\
**Post date:** [October 25, 2021, 4:28am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/8 "2021-10-25T04:28:01Z")

</div>

Hi @nik202. yes, managed to solve it. Did not find a direct option to convert from csv/json to yaml in the way rasa wants; had to convert to `md` first, and then used `rasa convert`. Any other better way than this?

Thanks.

---

<div class="post-metadata">

**Author:** ![nik202](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/nik202/32/16098_2.png) [@nik202](https://forum.rasa.com/u/nik202)\
**Post date:** [October 25, 2021, 9:29am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/9 "2021-10-25T09:29:02Z")

</div>

@sML no worries, I will give you one method, to directly convert to yml training format ok?

Demo code:

```auto
 class GetAnswer(Action):
     def __init__ (self):
         self.faq_data = pd.read_csv('./data/faq_d.csv')
         qs = list(self.faq_d['question'])
         with open("./data/nlu/faq.yml", "wt", encoding="utf-8") as f:
             f.write('version: "2.0"\n')
             f.write("nlu: \n- intent: question\n examples: | \n")
             for q in qs:
                 f.write(f" - {q}\n")

```

I hope this will help you 😉

---

<div class="post-metadata">

**Author:** ![sML](https://avatars.discourse-cdn.com/v4/letter/s/aca169/32.png) [@sML](https://forum.rasa.com/u/sML)\
**Post date:** [October 25, 2021, 10:30am UTC](https://forum.rasa.com/t/write-nlu-data-programmatically/46715/10 "2021-10-25T10:30:52Z")

</div>

@nik202 Thanks a lot!
