#!/opt/homebrew/bin/python3
# usage: aozora.py infile outfile
# infile is taken from https://www.aozora.gr.jp -> txt download
import MeCab
import re
import sys
infile = sys.argv[1]
outfile = sys.argv[2]
bindata = open(infile, 'rb').read()
textdata = bindata.decode('shift_jis')
# 青空文庫のための固有処理
textdata = re.split(r'\-{5,}', textdata)[2]
textdata = re.split(r'底本:', textdata)[0]
textdata = textdata.strip()
# 人によっては以下のパスは異なるので確認してね
mecab = MeCab.Tagger('-d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd')
mecab.parse('') # バグ対処
results = []
lines = textdata.split("\r\n")
for line in lines:
r = []
# 学習に使わない表現の削除処理
s = line
s = s.replace("|", "")
s = re.sub(r'《.+?》', "", s)
s = re.sub(r'[.+?]', '', s)
# Mecab
node = mecab.parseToNode(s)
while node:
# 単語を取得
if node.feature.split(",")[6] == '*':
word = node.surface
else:
word = node.feature.split(",")[6]
# 品詞を取得
part = node.feature.split(",")[0]
if part in ["名詞", "形容詞", "動詞", "記号"]:
r.append(word)
node = node.next
rl = (" ".join(r)).strip()
results.append(rl)
# write to a file
with open(outfile, 'w', encoding='utf-8') as wf:
wf.write("\n".join(results))
芥川龍之介が「蜘蛛の糸」を発表して百年。高二の秋の文化祭,クラスの仮装行列のテーマが 蜘蛛の糸だった。お釈迦様の極楽タワーの竹を近所から切り出し,地獄の焔と煙の絵を描いた。犍陀多に続いて蜘蛛の糸(登山部の赤いザイル)に群がる地獄の亡者だったころ。
2022年12月20日火曜日
mecab-neologd(3)
mecab-neologd(2)からの続き
とりあえず,最新単語を含む形態素解析のmecab-ipadic-neologdが使えるようになった。次の課題は,これをpython プログラムの中から使えるようにすることだ。これは事例がたくさんころがっていたので,そのまま写経してみた。
2018年,Qiitaにsudo5in5kさんが書いた,mecab + NEologd + python3 で形態素解析という記事があるのでそのまま使える。import MeCab のCが小文字のtypoになっているところでつまづいた。その後,辞書ディレクトリを自分の環境に合わせて指定したところ,青空文庫の人間失格のテキストファイルをとってきて,無事に形態素分解した結果が出力された。
そこで,入出力ファイルをコマンドラインで指定し,任意のテキストファイルを変換できるように数行だけ修正したのが以下のコードである(ほぼsudo5in5kさんのもの)。
0 件のコメント:
コメントを投稿