My Tech Life

Memo by a Japanese Software Developer in his late 50s.

Pythonで日本語分析。分かち書きした語句のカウント

Pythonでテキスト分析する時に最低限必要な前処理を記載します。

 

・テキストを読み込む

分かち書きする

分かち書きした語句をカウントする

 

以下サンプルです。

 

まずは、データの準備です。

Wikipedia日本語版のページを参照し、

test_dir/isaac_asimov_wikipedia.txtとして格納します。

 

アイザック・アシモフIsaac Asimov1920年1月2日 - 1992年4月6日)は、アメリカ合衆国の生化学者(ボストン大学教授)・作家。その著作は500冊以上を数える[2]。彼が扱うテーマは科学、言語、歴史、聖書など多岐にわたり、デューイ十進分類法の10ある主要カテゴリのうち9つにわたるが[3][注 1]、特にSF、一般向け科学解説書、推理小説によってよく知られている。

 

 以下のコードをtest1.pyとして格納します。

前回の投稿からの流れで、カウントは一番単純なCountVectorizerを使用します。

#!/usr/bin/env python3
# -*- coding: utf8 -*-

from sklearn.feature_extraction.text import CountVectorizer
from separatewordsj2 import separatewordsj2

target_text = 'test_dir/isaac_asimov_wikipedia.txt'

lines = [ ]
with open(target_text, encoding='utf-8') as f:
    lines.append(f.read())

wd = separatewordsj2()
vec = CountVectorizer(analyzer=wd.extract_words)
X = vec.fit_transform(lines)

names_list = vec.get_feature_names_out()
x_list = X.toarray()

print(','.join(names_list))
print(','.join(map(str, x_list[0])))

 

 以下が実行結果です。

CSV形式でフォーマットしました。

(base) C:\pytest>python test1.py
-,1,10,1920,1992,2,3,4,500,6,9,Asimov,Isaac,SF,[,][,]、,]。,ある,いる,うち,が,その,つ,て,など,によって,にわたり,にわたる,の,は,よく,れる,を,アイザック,アシモフ,アメリカ合衆国,カテゴリ,テーマ,デューイ,ボストン,一般,主要,以上,作家,冊,分類,十,向け,多岐,大学,小説,年,彼,扱う,推理,教授,数える,日,書,月,歴史,法,特に,生化学,知る,科学,者,聖書,著作,解説,言語,進
1,2,1,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,1,1,1,1,1,1