どんな記事?
データフレームから普通名詞のみを抽出する処理をテンプレ化した記事です。
コピペで動きます。品詞の設定や記号の除去など毎回覚えて書くのは難しいので自分用の備忘録として書きました。
設定
データの準備
data が以下のような構造になっていることを想定しています。
index | text |
---|---|
0 | がっかりした。届いた時点で商品が壊れていました。本当… |
1 | 個人的には満足です。価格が安いので何回でも… |
2 | 丁寧に対応していただき感謝です。問題は… |
モジュールの読み込み
from janome.tokenizer import Tokenizer
from janome.analyzer import Analyzer
from janome.tokenfilter import *
from janome.charfilter import *
形態素解析器の設定
char_filters = [UnicodeNormalizeCharFilter(), RegexReplaceCharFilter(r"[IiⅠi?.*/~=()〝 <>::《°!!!?()-]+", "")]
tokenizer = Tokenizer()
token_filters = [POSKeepFilter(["名詞"]), POSStopFilter(["名詞,非自立", "名詞,数", "名詞,代名詞", "名詞,接尾"]), LowerCaseFilter()]
analyzer = Analyzer(char_filters=char_filters, tokenizer=tokenizer, token_filters=token_filters)
実行
data.loc[:,'words'] = data.text.apply(lambda x: " ".join([token.surface for token in analyzer.analyze(x)]))