目的
英語の長文を読むとき、とても苦労してしまう。自分が読むときは一番最初に全体の要約を知りたい。その次はもう少し細かくした要約。その次はもっともっと細かい要約という様にどんどん細かくして要約が欲しい。
そこで今回は全体をn分割したツールの作成を行う
ツールの挙動
- M行の文章があった時
- M行をN分割する
- N分割した文章を翻訳する
- 翻訳した結果を要約する。
- 要約した内容を合併する
完成
コード
from deep_translator import GoogleTranslator
from pysummarization.nlpbase.auto_abstractor import AutoAbstractor
from pysummarization.tokenizabledoc.mecab_tokenizer import MeCabTokenizer
from pysummarization.abstractabledoc.top_n_rank_abstractor import TopNRankAbstractor
import pymsteams, re, time, math, sys
args = sys.argv
b=args[1]
b=int(b)
translist=[]
translists=[]
f = open('text2.txt', 'r')
intext = f.read()
f.close()
split_text = intext.split('. ')
print(len(split_text))
n = math.ceil(len(split_text) / b)
result = [ split_text[idx: idx + n] for idx in range(0,len(split_text), n)]
for splitsaki in result:
documentlist=[]
for sourcetext in splitsaki:
sourcetext = sourcetext.replace('\n+', ' ')
sourcetext = re.sub('\s+', ' ', sourcetext)
try:
document = GoogleTranslator(source='auto',target='ja').translate(sourcetext)
documentlist.append(document)
except:
pass
documents=''.join(documentlist)
auto_abstractor = AutoAbstractor()
auto_abstractor.tokenizable_doc = MeCabTokenizer()
auto_abstractor.delimiter_list = ["。", "\n"]
abstractable_doc = TopNRankAbstractor()
result_dict = auto_abstractor.summarize(documents, abstractable_doc)
for x in result_dict["summarize_result"]:
translist.append(x)
print(x)
transresult = ''.join(translist)
print(transresult)
f = open('youyaku.txt', 'x')
f.write(transresult)