Skip to main content

@uec_tlに使用するマルコフ連鎖による文章生成とテキスト処理のためのパッケージ

Project description

UECTL

PyPI - Python Version PyPI Version GitHub LICENSE

@uec_tlに使用するマルコフ連鎖モデルとテキスト処理のためのパッケージです.

インストール

uectl本体:

$ pip install uectl

uectl本体+前処理用(MeCabが必要):

$ pip install uectl[preprocessing]

Dockerによる環境構築

マルコフ連鎖で文章を学習させる際, 文章を単語ごとに分ける必要があります. この単語ごとに区切る処理はMeCabというソフトウェアを使います. MeCabを各OSに応じて導入するのは少し面倒なので, Dockerで環境構築できるようにしました. ちなみにMeCabが必要なのは前処理の項だけです. uectl本体だけでも, 前処理済みのサンプルファイルsample_output.txtを使って, モデルの学習と文章生成を行うことができます.

セットアップ(初回時)とコンテナの立ち上げ

$ docker-compose up -d

uec_tl_markovという名前のイメージとuec_tl_markovという名前のコンテナが作成されます.

コンテナに移動

$ docker-compose exec app /bin/sh -c "[ -e /bin/bash ] && /bin/bash || /bin/sh"
root@コンテナID:/home/uec_tl_markov#

前処理

workspaceディレクトリに移動した後, preprocessing.pyを使って, テキストを前処理します.

$ cd workspace

sample_input.txtというサンプルファイルがあるので, それを使って試してみます.

$ cat sample_input.txt
私は電通大が好きです
調布が好きでした
好きな店は食神です
$ python preprocessing.py -i sample_input.txt -o sample_output.txt

前処理の結果はsample_output.txtに保存しました.

$ cat sample_output.txt
私  電通大  好き です 
調布  好き でし  
好き      です 

食 神以外は予想通りに区切れていますね.

モデルの学習

次にsample_output.txtの各行を学習データとして, N階マルコフ連鎖(N=2)のモデルを作成します.

$ python training_model.py -i sample_output.txt -o sample_model.json -s 2

学習したモデルはsample_model.jsonとして保存しました.

文章生成

最後に, 先ほど学習したモデルsample_model.jsonを使って, どのような文章を生成するかを確かめてみます.

$ python testing_model.py -i sample_model.json -c 5
調布が好きでした
好きな店は食神です
調布が好きでした
好きな店は食神です
私は電通大が好きでした

私は電通大が好きでしたという学習データには存在しない文章の生成を確認できました!

文章を生成し始める単語の指定もできます. 指定する単語数は1からNのいずれかです(今回の例ではN=2). それぞれの単語は空白文字で区切る必要があります.

$ python testing_model.py -i sample_model.json -c 5 -b "電通大 が"
電通大が好きでした
電通大が好きでした
電通大が好きです
電通大が好きでした
電通大が好きです

UEC18LT会登壇資料

電通大生の呟きを基に電通大生を錬成してみた

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uectl-0.2.0.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

uectl-0.2.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file uectl-0.2.0.tar.gz.

File metadata

  • Download URL: uectl-0.2.0.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.12

File hashes

Hashes for uectl-0.2.0.tar.gz
Algorithm Hash digest
SHA256 03096fcd1876048139757da5b3f258a185a443d2ea23d650794e62d299391ba6
MD5 b28f407efd4e1b628e224999cb7e54b9
BLAKE2b-256 b3ca3efdf98412aa61e767f8b636db24830055ea79a7b8c74861e3b12427c94b

See more details on using hashes here.

File details

Details for the file uectl-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: uectl-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.12

File hashes

Hashes for uectl-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 69e53953b3a033d50d48cd7c3ca2ba86362dccd0e57f9c573dec22671da8e393
MD5 edd5f1e159469f2fb33d9884c5b0b40a
BLAKE2b-256 74b3de42cebf3fd428038bd9d00ac0033b53a318d92d66c6277acf679c928d5e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page