WordPress記事インポート方法(MEMO)

USER

WordPressに、日付、本文、の2カラムからできるファイルを記事としてインポートする方法をおしえてください。日付は、WordPressの記事の投稿日に適応してください。タイトルは適当でいいです。

ASSISTANT

WordPressへ日付と本文からなるファイルをインポートするには、CSVファイルを使用して、記事を一括インポートする方法が便利です。これには、WordPressプラグイン「WP All Import」を使用します。

手順は以下の通りです。

  1. CSVファイルの準備:
    まず、日付と本文を含むCSVファイルを作成します。各行が1つの記事に対応し、カンマ区切りで各カラムが記述されます。例えば、以下のような形式になります。
2023-03-01,本文1
2023-03-02,本文2
2023-03-03,本文3
  1. 「WP All Import」プラグインのインストールと有効化:
    WordPress管理画面から「プラグイン」>「新規追加」へ移動し、「WP All Import」と検索してプラグインをインストールしてください。インストールが完了したら、プラグインを有効化します。
  2. CSVファイルのインポート:
    WordPress管理画面の左側のメニューから「All Import」をクリックし、「New Import」を選択します。ファイルアップロード画面で、先ほど作成したCSVファイルをアップロードし、「Continue to Step 2」をクリックします。
  3. インポート設定:
    インポート設定画面で、以下の設定を行います。
  • 「Post Type」で「Posts」を選択
  • 「Post Title」には適当なタイトルを入力、または任意の固定タイトルにしたい場合はタイトル名を入力しておきます(例: “Imported Post”)
  • 「Post Date」の右側のファンクションエディタボタンをクリックし、ドラッグ&ドロップで「date」カラムを選択します。
  • 「Post Content」の右側のファンクションエディタボタンをクリックし、ドラッグ&ドロップで「content」カラムを選択します。
  1. インポートの実行:
    設定が完了したら、「Continue」をクリックし、最終的な設定確認画面で問題がなければ、「Confirm & Run Import」をクリックしてインポートを実行します。

以上の手順で、CSVファイル内の記事が投稿日と共にWordPressにインポートされます。

USER

日付と、記事、2カラム持つCSVを私が持っています。そのCSVをあなたにお渡しして、3カラム目に記事を適当に短縮した「タイトル」を作ってほしく思います。できますか?できる場合は、そのやりかたをおしえてください。

ASSISTANT

はい、できます。PythonのPandasというライブラリを使って、CSVファイルを読み込んで処理し、新しいカラムに短縮したタイトルを作成できます。以下は、その手順です。

  1. 必要なライブラリをインストールします。Pythonがインストールされている環境で、以下のコマンドを実行してください。
pip install pandas
  1. 以下のサンプルコードを参考に、自分のCSVファイルに合わせてコードを変更し、Pythonスクリプトとして保存してください(例: generate_titles.py)。
import pandas as pd

def shorten_title(article: str, max_length: int = 10) -> str:
    words = article.split()
    shortened_words = words[:max_length]
    return ' '.join(shortened_words)

def main():
    input_file = 'your_input_csv.csv'  # 入力CSVファイル名を指定してください。
    output_file = 'your_output_csv.csv'  # 出力CSVファイル名を指定してください。

    df = pd.read_csv(input_file)

    df['title'] = df['article'].apply(shorten_title)  # 'article'は記事のカラム名を指定してください。

    df.to_csv(output_file, index=False)

if __name__ == '__main__':
    main()
  1. 上記のスクリプトを実行してください。CSVファイルが読み込まれ、新しいカラムに短縮されたタイトルが作成され、別のCSVファイルに出力されます。
python generate_titles.py

このサンプルコードでは、shorten_title関数を使って、記事の最初の10単語をタイトルとしています。必要に応じて、max_lengthの値を変更することで、タイトルの長さを調整できます。また、短縮方法を変更する場合は、shorten_title関数を編集してください。

USER

短縮方法は、単語数で単純に短くするのではなくて、記事の内容から要約してほしいです。

ASSISTANT

要約を生成するために、PythonのGensimというライブラリを使用できます。Gensimを使って、文章の内容からキーフレーズを抽出し、短縮されたタイトルを作成することができます。

まず、Gensimをインストールします。Pythonがインストールされている環境で、以下のコマンドを実行してください。

pip install gensim

次に、以下のコードを参考にして、要約機能を追加してください。サンプルコードは、前の回答で提供したコードに変更を加えたものです。

import pandas as pd
from gensim.summarization import keywords

def shorten_title(article: str, max_words: int = 3) -> str:
    key_phrases = keywords(article, words=max_words, lemmatize=True, split=True)
    return ' '.join(key_phrases)

def main():
    input_file = 'your_input_csv.csv'  # 入力CSVファイル名を指定してください。
    output_file = 'your_output_csv.csv'  # 出力CSVファイル名を指定してください。

    df = pd.read_csv(input_file)

    df['title'] = df['article'].apply(shorten_title)  # 'article'は記事のカラム名を指定してください。

    df.to_csv(output_file, index=False)

if __name__ == '__main__':
    main()

このコードでは、shorten_title関数がGensimのkeywords関数を使って記事のキーフレーズを抽出し、それらを結合してタイトルを作成しています。max_wordsパラメータは、抽出するキーフレーズの最大数を制御します。必要に応じて、この値を変更してタイトルの長さを調整できます。

このスクリプトを実行すると、入力CSVファイルに基づいて新しいCSVファイルが生成され、そのファイルには要約されたタイトルが含まれます。

USER

import pandas as pd
from gensim.summarization import summarize

def shorten_title(article: str, max_words: int = 3) -> str:
summary = summarize(article, word_count=max_words, split=True)
return ' '.join(summary)

def main():
input_file = 'output.csv' # 入力CSVファイル名を指定してください。
output_file = 'output2.csv' # 出力CSVファイル名を指定してください。
df = pd.read_csv(input_file)

df['title'] = df['article'].apply(shorten_title)  # 'article'は記事のカラム名を指定してください。

df.to_csv(output_file, index=False)
if name == 'main':
main()

このプログラムについて、output.csvはタイトル行が無いため、次のように改修してください。
・2カラム目に記事が書いてあります。この記事のデータから要約を作成して、3カラム目に追加します
・結果の3カラムをもつCSVデータをoutput2.csvに出力します

ASSISTANT

入力ファイルにヘッダーがない場合、Pandasのread_csv関数でheader=Noneオプションを使用して読み込みます。また、カラムに名前を付けるために、namesオプションを使ってカラム名をリストとして指定します。以下のコードは、前回提供したコードをこれらの変更点に対応させたものです。

import pandas as pd
from gensim.summarization import summarize

def shorten_title(article: str, max_words: int = 3) -> str:
    summary = summarize(article, word_count=max_words, split=True)
    return ' '.join(summary)

def main():
    input_file = 'output.csv'  # 入力CSVファイル名を指定してください。
    output_file = 'output2.csv'  # 出力CSVファイル名を指定してください。

    # カラム名を指定して、ヘッダーがないことを示すheader=Noneを使用してCSVを読み込みます。
    df = pd.read_csv(input_file, header=None, names=['date', 'article'])

    df['title'] = df['article'].apply(shorten_title)  # 'article'は記事のカラム名を指定してください。

    df.to_csv(output_file, index=False)

if __name__ == '__main__':
    main()

このスクリプトは、入力CSVファイル(output.csv)を読み込み、2カラム目の記事から要約を作成し、3カラム目に追加します。そして、結果の3カラムを持つCSVデータをoutput2.csvに出力します。

USER

上記はgensimを使って要約していますが、pysummarizationを使って要約する形に変更できますか?

ASSISTANT

もちろん、pysummarizationを使って要約を作成するように変更できます。まず、pysummarizationをインストールします。Pythonがインストールされている環境で、以下のコマンドを実行してください。

pip install pysummarization

次に、以下のコードを参考にして、pysummarizationを使用するように変更します。

import pandas as pd
from pysummarization.abstractablesemantics.auto_abstractor import AutoAbstractor
from pysummarization.tokenizabledoc.simple_tokenizer import SimpleTokenizer
from pysummarization.abstractabledoc.top_n_rank_abstractor import TopNRankAbstractor

def shorten_title(article: str, max_sentences: int = 1) -> str:
    auto_abstractor = AutoAbstractor()
    auto_abstractor.tokenizable_doc = SimpleTokenizer()
    auto_abstractor.abstractable_doc = TopNRankAbstractor()

    result_dict = auto_abstractor.summarize(document=article, max_sentences=max_sentences)
    summary = ' '.join([sentence.strip() for sentence in result_dict['summarize_result']])
    return summary

def main():
    input_file = 'output.csv'  # 入力CSVファイル名を指定してください。
    output_file = 'output2.csv'  # 出力CSVファイル名を指定してください。

    df = pd.read_csv(input_file, header=None, names=['date', 'article'])

    df['title'] = df['article'].apply(shorten_title)  # 'article'は記事のカラム名を指定してください。

    df.to_csv(output_file, index=False)

if __name__ == '__main__':
    main()

このコードでは、shorten_title関数がpysummarizationを使って要約を生成しています。max_sentencesパラメータは、抽出する要約文の最大数を制限します。

タイトルとURLをコピーしました