🚀 パロット (Parrot)
パロット (Parrot) は、自然言語理解 (NLU) モデルのトレーニングを加速するために特別に構築された、言い換えに基づく発話拡張フレームワークです。言い換えフレームワークは、単なる言い換えモデル以上のものです。このライブラリとその使用方法の詳細については、GitHubページ を参照してください。
🚀 クイックスタート
インストール
pip install git+https://github.com/PrithivirajDamodaran/Parrot_Paraphraser.git
使用例
基本的な使用法
from parrot import Parrot
import torch
import warnings
warnings.filterwarnings("ignore")
'''
uncomment to get reproducable paraphrase generations
def random_state(seed):
torch.manual_seed(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(seed)
random_state(1234)
'''
parrot = Parrot(model_tag="prithivida/parrot_paraphraser_on_T5", use_gpu=False)
phrases = ["Can you recommed some upscale restaurants in Newyork?",
"What are the famous places we should not miss in Russia?"
]
for phrase in phrases:
print("-"*100)
print("Input_phrase: ", phrase)
print("-"*100)
para_phrases = parrot.augment(input_phrase=phrase)
for para_phrase in para_phrases:
print(para_phrase)
----------------------------------------------------------------------
Input_phrase: Can you recommed some upscale restaurants in Newyork?
----------------------------------------------------------------------
list some excellent restaurants to visit in new york city?
what upscale restaurants do you recommend in new york?
i want to try some upscale restaurants in new york?
recommend some upscale restaurants in newyork?
can you recommend some high end restaurants in newyork?
can you recommend some upscale restaurants in new york?
can you recommend some upscale restaurants in newyork?
----------------------------------------------------------------------
Input_phrase: What are the famous places we should not miss in Russia
----------------------------------------------------------------------
what should we not miss when visiting russia?
recommend some of the best places to visit in russia?
list some of the best places to visit in russia?
can you list the top places to visit in russia?
show the places that we should not miss in russia?
list some famous places which we should not miss in russia?
高度な使用法
para_phrases = parrot.augment(input_phrase=phrase,
diversity_ranker="levenshtein",
do_diverse=False,
max_return_phrases = 10,
max_length=32,
adequacy_threshold = 0.99,
fluency_threshold = 0.90)
✨ 主な機能
なぜパロット (Parrot) なのか?
Huggingface は 12の言い換えモデル をリストアップしており、RapidAPI は QuillBot のような7つのフリーミアムおよび商用の言い換えツールをリストアップしています。Rasa は、テキストデータの拡張のための実験的な言い換えツールについて こちら で議論しており、Sentence - transfomers は 言い換えマイニングユーティリティ を提供し、NLPAug は PPDB(数百万の言い換えデータベース)を使用した単語レベルの拡張を提供しています。これらの言い換えの試みは素晴らしいものですが、まだいくつかのギャップがあり、言い換えはまだNLUモデルを構築する際のテキスト拡張の主流のオプションにはなっていません。パロット (Parrot) は、これらのギャップの一部を埋めるための試みです。
良い言い換えとは何か? ほとんどの条件付きテキスト生成モデルは、2つの要素で検証されます。(1) 生成されたテキストが元の文脈と同じ意味を伝えているか(適切性)、(2) テキストが流暢で文法的に正しい英語であるか(流暢性)。たとえば、ニューラル機械翻訳の出力は、適切性と流暢性についてテストされます。しかし、良い言い換え は、表面的な語彙形式でできるだけ異なりながら、適切で流暢でなければなりません。この定義に関して、言い換えの品質を測定する3つの重要な指標は次のとおりです。
- 適切性(意味が適切に保存されているか?)
- 流暢性(言い換えは流暢な英語であるか?)
- 多様性(語彙 / 句 / 構文)(言い換えが元の文をどれだけ変更したか?)
パロット (Parrot) は、あなたのニーズに応じて適切性、流暢性、多様性を制御するための機能を提供します。
言い換えツールが良い拡張ツールになる条件は何か? NLUモデルをトレーニングするためには、単に大量の発話が必要なだけでなく、意図とスロット/エンティティが注釈付けされた発話が必要です。典型的なフローは次のとおりです。
- 与えられた 入力発話 + 入力注釈 に対して、良い拡張ツールはN個の 出力言い換え を生成し、意図とスロットを保存します。
- 出力言い換えは、ステップ1で得た入力注釈を使用して注釈付きデータに変換されます。
- 出力言い換えから作成された注釈付きデータは、あなたのNLUモデルのトレーニングデータセットになります。
しかし、一般的に生成モデルである言い換えツールは、スロット/エンティティを保存することを保証しません。したがって、意図とスロットを損なうことなく、制約された方法で高品質の言い換えを生成する能力が、言い換えツールを良い拡張ツールにします。これについては、以下のセクション3で詳しく説明します。
🔧 技術詳細
適用範囲
会話エンジンの分野では、知識ボットは 「ベルリンの壁はいつ取り壊されたか?」 のような質問をするためのもので、トランザクションボットは 「音楽を再生してください」 のようなコマンドを与えるためのもので、ボイスアシスタントは質問に答えることとコマンドを実行することの両方ができるものです。パロット (Parrot) は主に、堅牢なNLUモデルを構築するために、会話インターフェイスに入力または発話されるテキストを拡張することに焦点を当てています。(通常、人々は会話インターフェイスに長い文章を入力したり叫んだりすることはありません。したがって、事前学習モデルは最大長32のテキストサンプルでトレーニングされています。)
パロット (Parrot) は主に、良いNLUモデルを構築するためのテキスト拡張ツールを目指していますが、純粋な言い換えツールとしても使用できます。