AutoTrainで文章要約

# AutoTrain🚂🚂🚂とは

ノーコードでテキスト分類や要約などがstate-of-the-artできるサービスです。AutoNLPだとググラビリティが低かったので名称が変わったのだと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/742fcf02-89b3-df7f-ca59-c9170151eb18.png)

https://huggingface.co/autotrain

# データ準備

ハウツー系の文章を要約しようと思います。

https://www.wikihow.jp/


ハウツー系の文章(inputs)とその要約(targets)があります。
https://www.wikihow.jp/蛇に噛まれた時の対処
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/bb1ba23e-88d4-281f-7b32-eea010102e79.png)

要約する文と要約文のcsv/jsonlファイルを作成します。
ファイル作成スクリプトはColabにあります。

https://colab.research.google.com/drive/1fiA59HZOMpkhbocWUFLpQj2QaVAIOdsj?usp=sharing


## プロジェクトの作成

**Summarization** と **Japanese**を選択し、プロジェクトを作成します。

https://ui.autonlp.huggingface.co/new

![Screenshot from 2022-04-13 18-41-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/cadb893f-bd8c-b18a-7f57-567969f0286d.png)


## csvファイルをアップロード
jsonlでもアップロードできます。
今回はjsonlファイルをドラッグ・アンド・ドロップし、`text:src`と`target:tgt`カラムを選択し、プロジェクトに追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/00714e1e-f709-1caa-25de-97ff72b7ad7c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/5248ec14-67a7-6377-02a5-8c5138dabbf6.png)

**Go to trainings**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/f29afd2f-3efd-94e7-c5d8-328070adde8b.png)




# 学習
**Start models trainings**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/5966ebfa-cec6-a27d-a025-ea0772ad00c3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/f12eb3f6-4057-7b32-caae-40356509cca9.png)


# 推論
ROUGE-1 5.21の精度で分類できました。modelをクリックし、model hubで推論できます。
ROUGE-1とは、unigramでどれぐらい要約文と一致しているかという指標です。他のmt5系記事よりもいい結果がでています。
![Screenshot from 2022-04-14 01-11-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/cb86c9f6-e418-03f0-3379-46186383eecf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/8a530132-ef10-8fe2-86bd-b1c8f4a5cfbc.png)

https://qiita.com/yuko1658/items/02a2321b20dd870d6afe

右側の入力ボックスで簡単に試すことができます。

[https://huggingface.co/vabadeh213/autotrain-wikihow-737822494](https://huggingface.co/vabadeh213/autotrain-wikihow-737822494)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/d18bdcfb-cc4f-f471-0eff-8feed0da187f.png)


## モデルをダウンロード

モデルをダウンロードすることでオフラインでも推論できます。

https://colab.research.google.com/drive/1Ly7vPhLuQ3kWEyuzD0-8hNusNbjDGokT?usp=sharing

### モデルをダウンロード
```python
!curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
!sudo apt-get -qq install git-lfs
!git lfs install
#!git clone "https://$USERNAME:$PASSWORD@huggingface.co/vabadeh213/autotrain-wikihow-737822494" # set username/password for private model
!git clone https://huggingface.co/vabadeh213/autotrain-wikihow-737822494
```

### pipelineで推論

```python
!pip install -q transformers
from transformers import pipeline

text = '脅威を感じた蛇は再び襲いかかります。したがって、噛まれた際は速やかに蛇の攻撃範囲から離れましょう。 少なくとも6mは間合いを取りましょう。できる限り速やかに医療処置を求めることが大切です。ほとんどの病院は、毒蛇用の抗毒素（血清）を用意しています。病院に到着する前の応急手当だけでは、あまり症状の改善にはつながりません。被害現場からすぐさま救急サービスに通報できれば不幸中の幸いです。救急車を呼べない場合は、何としても助けを求め、みなさんまたは被害者を最寄りの病院へ搬送しなければなりません。みなさんに噛みついた蛇がガラガラヘビかどうかが分からない場合でも、すぐに病院へ直行しましょう。実際に毒が体に回り、症状が出始めたとしても、病院にいれば安心できるでしょう。噛まれた箇所を心臓よりも上に置くと、毒を含んだ血液が猛スピードで心臓に流れ込みます。救助が来るまでの間、できれば被害者の体を静止させましょう。体を動かすと血流が増大し、あっという間に毒が回ります。したがって、毒蛇に噛まれた際は体の動きを最小限に抑えて安静にすることが大切です。もちろん、みなさんの周りに誰もいなければ、じっとしている場合ではありません。すぐに助けを求めましょう。'
predict = pipeline("summarization", "autotrain-wikihow-737822494")
predict(text)
#[{'summary_text': '蛇の攻撃範囲から離れる。救急サービスに通報する。噛まれた箇所を'}]
```


# まとめ
- クレカ登録しない限り無料で使えてとても便利
- curlでpython環境がなくても使える
```bash
curl -X POST -H "Authorization: Bearer $YOUR_API_KEY" -H "Content-Type: application/json" -d '{"inputs": "I love AutoTrain"}' https://api-inference.huggingface.co/vabadeh213/autotrain-wikihow-737822494
```