Tweet

2018年12月1日土曜日

【AmzonAlexaスキル開発】CSVでスロットタイプを追加する際の注意事項 ビルドに失敗しました エラーメッセージ

こういう人向け

  • スロットタイプ追加後、モデルの保存は成功したが「ビルドに失敗しました」と出てしまう人
  • CSVでスロットタイプを追加している人

そもそもスロットタイプをCSVで追加作業行うのは正しいのか。


合ってます。
(脱線)
CSVでエラー起きるから管理画面でチマチマ追加するのはやめてほしい。
君の本職は言語開発であって単純作業ではないはずだ。


Amazon Developer Consoleを使ってスロットタイプを管理するのと比較して
CSVで管理するのは下記メリットあります。
  • GoogleスプレッドシートなどでCSVを作成すれば、履歴が残り、遡れる。
  • 大量のデータ処理、コピペが容易。
  • 置き換えや検索、同一セルの重複確認など容易。
以前も話しましたが20件を超える場合、超えそうな場合は絶対CSVを使いましょう。

Googleスプレッドシートは無料で使える機能なので、使ってください。

モデルのビルドで、こういうエラーが出てしまうはず。

ビルドに失敗しました 
ID field "id " for slot value "value" cannot contain white space.エラーコード: InvalidSlotValueId 

なんでだろう?
でもスロットの編集を行った直後なのでスロットがおかしいのかな。

正しいです。

今回追加したCSVファイル(元データ)とテキストファイル



注目するべきは「synonym2,synonym3が空白の値」が混在している事。
(スロットによって同義語の個数に差が1件でもある場合)

これをCSVにしてテキストエディタで開くと下記のようになります。

value,id ,synonym1,synonym2,synonym3
ベイマックス,disneyMovie001,白いマシュマロ,風船ロボット,世界一強いケアロボット
モンスターズインク,disneyMovie002,怖い映画,,


結論から言うと「怖い映画,,」これがアウトです。
「,,」は削除して管理画面上に登録しないといけません。


解決方法

  • 管理画面上で二度目の登録を行う。(一応推奨)
  • Googleスプレッドシートで関数駆使する。(非推奨なので軽く触れる程度にする)
    1. A列追加し、counta関数で行あたりの有効セル個数を記載
    2. A列をソート
    3. synonym1件までの場合は「B2&"C2&","&D1」としてCSVテキストを作る
    4. これをsynonym登録数のパターンだけ登録する。
個人的にはもっとスマートにやりたかったですけどね。
1個目を紹介します。

管理画面上で「,,,」を削除する方法(解決策)

まず「適当なスロット」を作成してください。僕は「setTekito」スロットを作りました。

1行目にvalue,id記述がある場合は「下のCSVにはヘッダーが含まれます」をチェック。
これで一旦登録します。このままではエラー出てしまいます。


登録しました。管理画面上では問題無さそうに見えますよね。

でも、内部では空白のsynonym(同義語)を保有しているスロットタイプという事になり、
処理されます。


この画面上部の「一括編集」を押してください。


「怖い映画..」じゃなくなってますね。
整理されてます。これで「送信」ではありません。

注意:これを送信しないでください。内部では何の処理も変わっていません。


次は上記テキストボックスから「Ctrl+A」などで全選択してコピー(Ctrl+C)してください。
普通にコピーしてくださいね。


次は「本命」のスロットタイプ名を入力し、
同じように「一括編集」で先程のテキストを貼り付ける。
※今回は分かりやすくsetHonmeiSlotを作成いたしました。


これで保存し、
setTekitouスロットタイプを完全に消去してください。

これでOKです。


手順まとめ(CSVに,,,,が混ざる時)

  1. 一度ダミースロットに上記CSVを登録しちゃう。
  2. ダミースロットの「一括編集」からテキストをコピー。
  3. 本命スロットを作成し、「一括編集」からテキストをペースト。
  4. 本命スロットを残し、ダミースロットを全削除。
  5. ビルド成功まで確認。



0 件のコメント:

コメントを投稿