chinda_fall_desu’s diary

竹内豊の日記

ヒューマンコンピューターインターフェースをもっと知りたいなー

pythonとMeCabで文章を単語ごとに分割

MeCab: Yet Another Part-of-Speech and Morphological Analyzer
Mecabを使えば形態素解析を行えるので、それを使って文章を単語ごとに分割する


①文章を単語ごとに分割する
ソースコード

import MeCab
document="【りょうやん】みんなの「お前おかしいよ!」っていう5対1を見つけ合おう!!!"
words=[]

t=MeCab.Tagger('-Ochasen')
parsed=t.parse(document)
for line in parsed.splitlines()[:-1]:
    words.append(line.split('\t')[0])
print(words)

(実行結果)

> python .\words.py
['【', 'りょう', 'やん', '】', 'みんな', 'の', '「', 'お前', 'おかしい', 'よ', '!', '」', 'っていう', '5', '対', '1', 'を', '見つけ', '合お', 'う', '!', '!', '!']


②複数文を単語ごとに分割する
ソースコード

import MeCab
sentences=['【りょうやん】みんなの「お前おかしいよ!」っていう5対1を見つけ合おう!!!', '【46道府県旅行の旅!滋賀県編】〜黄昏の湖、道化師の鎮魂歌〜', '【穴を制せ】負けたらピアスの対決!!穴王!!!']
t=MeCab.Tagger('-Ochasen')
words_list=[]

for sentence in sentences:
    words=[]
    parsed=t.parse(sentence)
    for line in parsed.splitlines()[:-1]:
        words.append(line.split('\t')[0])
    words_list.append(words)
print(words_list)

(実行結果)

> python .\words2.py
[['【', 'りょう', 'やん', '】', 'みんな', 'の', '「', 'お前', 'おかしい', 'よ', '!', '」', 'っていう', '5', '対', '1', 'を', '見つけ', '合お', 'う', '!', '!', '!'], ['【', '4', '6', '道府県', '旅行', 'の', '旅', '!', '滋賀', '県', '編', '】', '〜', '黄昏', 'の', '湖', '、', '道化師', 'の', '鎮魂歌', '〜'], ['【', '穴', 'を', '制せ', '】', '負け', ' たら', 'ピアス', 'の', '対決', '!', '!', '穴', '王', '!', '!', '!']]


③ファイルから文章を取り出し、分割する
ソースコード

import MeCab
import pickle

file=open("sample.pickle", "rb")
sentences=pickle.load(file)
file.close()
print(sentences)

t=MeCab.Tagger('-Ochasen')
words_list=[]

for sentence in sentences:
    words=[]
    parsed=t.parse(sentence)
    for line in parsed.splitlines()[:-1]:
        words.append(line.split('\t')[0])
    words_list.append(words)
print(words_list)

(実行結果)

> python .\words3.py
['【りょうやん】みんなの「お前おかしいよ!」っていう5対1を見つけ合おう!!!', '【46道府県旅行の旅!滋賀県編】〜黄昏の湖、道化師の鎮魂歌〜', '【穴を制せ】負けたらピアスの対決!!穴王!!!']
[['【', 'りょう', 'やん', '】', 'みんな', 'の', '「', 'お前', 'おかしい', 'よ', '!', '」', 'っていう', '5', '対', '1', 'を', '見つけ', '合お', 'う', '!', '!', '!'], ['【', '4', '6', '道府県', '旅行', 'の', '旅', '!', '滋賀', '県', '編', '】', '〜', '黄昏', 'の', '湖', '、', '道化師', 'の', '鎮魂歌', '〜'], ['【', '穴', 'を', '制せ', '】', '負け', ' たら', 'ピアス', 'の', '対決', '!', '!', '穴', '王', '!', '!', '!']]


④活用形を終止形にする
(変更点)

   words.append(line.split('\t')[2])

(実行結果)

> python .\words3.py
['【りょうやん】みんなの「お前おかしいよ!」っていう5対1を見つけ合おう!!!', '【46道府県旅行の旅!滋賀県編】〜黄昏の湖、道化師の鎮魂歌〜', '【穴を制せ】負けたらピアスの対決!!穴王!!!']
[['【', 'りょう', 'やん', '】', 'みんな', 'の', '「', 'お前', 'おかしい', 'よ', '!', '」', 'っていう', '5', '対', '1', 'を', '見つける', '合う', 'う', '!', '!', '!'], ['【', ' 4', '6', '道府県', '旅行', 'の', '旅', '!', '滋賀', '県', '編', '】', '〜', '黄昏', 'の', '湖', '、', '道化師', 'の', '鎮魂歌', '〜'], ['【', '穴', 'を', '制す', '】', '負ける', 'た', 'ピアス', 'の', '対決', '!', '!', '穴', '王', '!', '!', '!']]


参考
寺田学 『Pythonによるあたらしいデータ分析の教科書 (AI&TECHNOLOGY)』 翔泳社 (2018/9/19)



(間違い等あればコメントよろしくお願いいたします。)