テキスト処理のプログラム
普段からブログを書いていると、「なんとなく似通った感じの記事になっちゃうなー」とか「自分が作る前に、うまい具合に記事が出来ると良いなー」とか思う日があります。
記事も大量にプールされてきましたし、ここらで一つ、今後記事作成の助けになるプログラムを製造しようと思い至りました。
かなり初歩的といいますか、まだまだ作成途上ではあるのですが、暇があったらソースを更新しようと思います。
イメージする挙動
入力:自分が作成した記事とする。
処理:文章として有意になる文字列とする。
出力:txt形式のファイルに加工する。
とはいえ、ご想像のとおり、処理の過程が難しいです。
完全に有意な文字列の並びにするのは、それこそAIの作動が必要でしょうし、いま現実的に作るのは技術的に難しいです。
処理過程は今後の課題として、ひとまず今回のところはランダムに並べ替えることとし、出力のループ回数を増やすことで上手い文字列を洗う方法とします。
ソースコード
以下、ソースコード(python3系)です。
作成するpythonのスクリプトファイルと同じディレクトリに、データ元となる文字列を入力したtxtファイル(下ではtest.txt)を設置します。同じディレクトリに置いておかないと、何も起きないので注意。初歩的ですが。
import random filename = 'test.txt' with open (filename,encoding='UTF-8') as file_object: lines = file_object.readlines() for line in lines: print(line.rstrip()) print("*************************") for i in range(4): random.shuffle(lines) a = "" for line in lines: a += line with open(f"{i}.txt",'w',encoding='UTF-8') as file_object: file_object.write(a)
動作原理
・入力工程は、webスクレピングなどで得た情報をもとにするのもアリなのかも知れませんが、完全にコピーコンテンツになる恐れがあり、あまり良くありません。というか悪いことなので、やるなら自分の作った文章にするのが無難。
open関数でファイルを開き、生成されたファイルオブジェクトをreadlines()で読み込み、文字列リストとして変数linesに代入しています。なおopen関数を使う際に、ファイルに日本語が混じっている場合、encodingは'UTF-8'指定しないとバグります。
なおopen関数のあとにprint関数で標準出力させていますが、あくまで確認用なので省いて構いません。というか、省かないと助長なので無視してください。
・処理工程は、上記ではランダムに並び替え、切り替える処置。
forループを使います。randomモジュールにあるshuffle関数を用い、先ほどのリストlinesを並べ替える工程です。空の文字列である a を用意するのがミソ。forループの内部にあるforループで、aに文字列を代入演算子+=で加えていき、巨大な一列の文字列に加工する工程です。
・出力工程は、同じくtxt形式ファイルとしています。
ループ回数はrange()関数で4に設定していますが、大きくとればファイルを量産できます。
課題
本格的な完成プログラムとするには、処理工程に学習させる工程が必要でしょう。
僕が前に勤務していた病院でも、サマリー(病歴のまとめ)を似たような要領で加工し、自動で作ろうと研究する大学院生がいました。
なかなか有意語とするには難しく、当然ながらこちらの技術力の問題もあるでしょうが、ちまちまAIの勉強もしようと思いました。
語郎