前処理
Contents
前処理¶
import pandas as pd
import numpy as np
形態素解析¶
spaCyを使うことで形態素解析とトークナイズを行うことができます。
import spacy
nlp = spacy.load("ja_core_news_md")
doc = nlp("今日は銀座から池袋へ向かいました。")
list(doc)
品詞によるフィルタリング¶
# 形態素の品詞の形態について書く (Universal Dependencies)
# https://hironsan.hatenablog.com/entry/visualize-dependencies-per-bunsetsu
doc = nlp("今日は銀座から池袋へ向かいました。")
# 内容語のみを残すようにフィルタリング
for token in nlp(doc):
if token.pos_ in {"NOUN", "PROPN", "VERB"}:
print(token.pos_, token.lemma_)
ストップワードによるフィルタリング¶
ストップワードの集合を作成し、トークンがストップワードに含まれていれば出力しないようにします。 ストップワードを考慮してトークナイズする関数を定義してみましょう。
def tokenize(text, stopwords=set()):
return [t.lemma_ for t in nlp(text) if t.lemma_ not in stopwords]
stopwords = {
"は", "から", "へ",
"ます", "た",
"。", "、",
}
tokenize("今日は銀座から池袋へ向かいました。", stopwords=stopwords)
小文字化¶
strオブジェクトのlowerを使います。
doc = nlp("spaCyの練習")
for token in doc:
print(token.text, token.text.lower())
絵文字の変換¶
SNSのデータを処理する際には絵文字が出現することが多いです。 絵文字を事前に文字に変換しておくと処理しやすいです。
絵文字の変換にはemojiパッケージが便利です。
Note
emojiパッケージを利用するにはインストールが必要です。
pip install emoji==1.7.0
import emoji
絵文字を文字列に変換します。
emoji.demojize("今日はケーキを食べます🍰")
文字列を絵文字に変換します。
emoji.emojize("今日はケーキを食べます:shortcake:")
絵文字を除去します。
emoji.replace_emoji("今日はケーキを食べます🍰")