見出し画像

【Python】CSVを読み込んでhのカラムで絞って、content列ごとにマージして要約する【Colaboratory】

Google Drive

from google.colab import drive 
drive.mount('/content/drive/')
%cd "/content/drive/My Drive/googleseo/data"

テキスト読み込み

import pandas as pd
df = pd.read_csv("marge.txt")

h列のユニークなリストを作っておいて、あとでループ処理する

# h列のユニークなリストを作っておいて、あとでループ処理する。
h_list = pd.unique(df['h'])

ループ(のテスト用でbreakも入っている)

for h_word in h_list:
  print(df.query('@h_word == h'))
  df_x = df.query('@h_word == h')
  df_xx = df_x['content'].tolist()
  content = "".join((map(str,df_xx)))
  #break 

要約に必要なライブラリを入れる

!pip install pysummarization
!pip install mecab-python3 unidic-lite

mecabの動作確認も兼ねて読み込み

from pysummarization.nlpbase.auto_abstractor import AutoAbstractor
from pysummarization.tokenizabledoc.mecab_tokenizer import MeCabTokenizer
from pysummarization.abstractabledoc.top_n_rank_abstractor import TopNRankAbstractor
from pysummarization.nlp_base import NlpBase
from pysummarization.similarityfilter.tfidf_cosine import TfIdfCosine
import MeCab
print(MeCab.Tagger().parse("TESTです。"))

ループの処理と適当にマージする

similarity_filter.similarity_limitの数値は類似性の判定。

for h_word in h_list:
  print(df.query('@h_word == h'))
  df_x = df.query('@h_word == h')
  df_xx = df_x['content'].tolist()
  content = "".join((map(str,df_xx)))

  yoyaku_list = []

  # NLPのオブジェクト
  nlp_base = NlpBase()
  nlp_base.tokenizable_doc = MeCabTokenizer()
  similarity_filter = TfIdfCosine()
  similarity_filter.nlp_base = nlp_base
  similarity_filter.similarity_limit = 0.6

  #document  = '\n'.join(y.txt)

  auto_abstractor = AutoAbstractor()
  auto_abstractor.tokenizable_doc = MeCabTokenizer()
  auto_abstractor.delimiter_list = [".", "\n"]
  abstractable_doc = TopNRankAbstractor()
  result_dict = auto_abstractor.summarize(content, abstractable_doc,similarity_filter)

  # 変数を渡し文書を要約
  result_dict = auto_abstractor.summarize(content, abstractable_doc)

  # 出力
  for sentence in result_dict["summarize_result"]:
      #print (sentence)
      yoyaku_list.append(sentence) 

  for sentence in result_dict["scoring_data"]:
      pass
      #print (sentence)
  #break 


いつもお読みいただき、ありがとうございます。 書くだけでなく読みたいので、コメント欄で記事名入れてもらうと見に行きます。