Huggingface Transformers 入門 (7) - 言語モデルをサンプルスクリプトで学習
「Huggingface Transformers」の付属のサンプルスクリプトで「言語モデル」を学習して、「テキスト生成」を行います。
前回
1. Transformersのインストール
「Transformers」のインストール方法は、次のとおりです。
# Transformersのインストール
!git clone https://github.com/huggingface/transformers.git
!cd transformers/; pip install -e .
2. データセットの準備
今回は、Wikipediaの小説家の記事を使います。
import codecs
import re
import requests
from bs4 import BeautifulSoup
# URLとキーワードリスト
url = "https://ja.wikipedia.org/wiki/"
keyword_list = [
"中島敦", "太宰治", "国木田独歩",
"江戸川乱歩", "谷崎潤一郎", "宮沢賢治",
"与謝野晶子", "芥川龍之介", "樋口一葉",
"中原中也", "尾崎紅葉", "梶井基次郎",
"夢野久作", "森鷗外", "織田作之助"
]
# Wikipediaの小説家の記事のダウンロード
corpus = []
for keyword in keyword_list:
response = requests.get(url + keyword)
soup = BeautifulSoup(response.text, 'lxml')
for p_tag in soup.find_all('p'):
# 空白の削除
text = "".join(p_tag.text.strip().split(" "))
# 空行は無処理
if len(text) == 0:
continue
# 注釈の削除 (例: [注釈1], [注釈1], [1])
text = re.sub(r"\[注釈[0-9]+\]", "", text)
text = re.sub(r"\[注[0-9]+\]", "", text)
text = re.sub(r"\[[0-9]+\]", "", text)
# 行の追加
corpus.append(text)
# ファイルの保存
print(*corpus, sep="\n", file=codecs.open("wiki.txt", "w", "utf-8"))
訓練データとテストデータに分割します。
# データセットの分割
!head -n100 wiki.txt > eval.txt
!tail -n+101 wiki.txt > train.txt
!wc -ml *.txt
100 18623 eval.txt
769 127358 train.txt
869 145981 wiki.txt
1738 291962 total
訓練データ(train.txt)は769行、テストデータ(eval.txt)は100行になります。
3. 言語モデルの学習
「言語モデル」の学習には、run_language_modeling.py を使います。
# 学習
!python transformers/examples/language-modeling/run_language_modeling.py \
--output_dir=output \
--model_type=gpt2 \
--model_name_or_path=gpt2 \
--do_train \
--train_data_file=train.txt \
--do_eval \
--eval_data_file=eval.txt \
--per_device_train_batch_size=2 \
--per_device_eval_batch_size=2 \
--num_train_epochs=10 \
--save_steps=5000 \
--save_total_limit=3
outputフォルダにモデルが出力されます。
4. テキスト生成
試しにテキスト生成を行います。
!python transformers/examples/text-generation/run_generation.py \
--model_type=gpt2 \
--model_name_or_path=output \
--prompt "山田太郎。日本の小説家。 " \
--seed=${RANDOM} \
--length 1000
山田太郎。日本の小説家。 三高校会町洋紀(現・三高校会町洋紀)、帰郷籍本町東京専門学校会町洋町洋戒、浪海町東京専門屋動(現・浪海町東京試専門学校会町洋町洋)を出版「基次郎」のち町試寄、掲載まで基次郎の筆町。左京都大学在町の訳現(現・左京都大学在町の創作断)、懁運学(現・懁運学。その頃、基次郎と歩批されている。1887年(明治40年)1月、1903年(明治44年)、文芸店店在体繁にも静き、近所誌『野菊多教物誌』(卒業文経葬結核)を教究し、大阪家二発行籍者・基次郎の繁養演の姦の原崎を教究。
次文専門(現・次文専門左山田太郎秀家富)の半死に寄くなり、基次郎「中谷孝雄」の前作が刊行する。
1907年(明治50年)に同誌『中谷孝雄』(大阪家二発行籍者・基次郎が中谷と失み出版と名めに書いて、文江の全了と取り刊行する時に発表した。基次郎は山田太郎は、演演指学校会町洋紀の書いて発表し、いた公募・動で資金を引き、生前に卒業となる。
乱年の滞在入学の進向肉を国塾され、完晶冬の小説家と作家とされるが、他の資金を以前者・作家の場告が友人先った「持学校会町洋紀の書いて発表した。書いて発表から寄くなり主に見ている。可能を『戻果』に意みない持学校会町洋紀の試丸は、発表から熱した時代わった文学の前作となる。中谷と失み出版が持学校会町に寄くなり、またこれ
次回
この記事が気に入ったらサポートをしてみませんか?