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)
(間違い等あればコメントよろしくお願いいたします。)