Kaggle - 災害ツイートについての自然言語処理(1)

今回からはNatural Language Processing with Disaster Tweetsrコンペに参加していきたいと思います。

Natural Language Processing with Disaster Tweets

簡単に説明すると、ツイートが実際の災害に関するものか否かを判定するコンペとのことです。

ちなみに自然言語処理とは、「人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野」ということです。

探索的データ解析 (Exploratory data analysis)

探索的データ分析を行います。つまりどんなデータかを確認していきたいと思います。

まずは必要なライブラリをインポートします。

(Kaggleノートブックで動作確認しています。)

[ソース]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import os
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from nltk.corpus import stopwords
from nltk.util import ngrams
from sklearn.feature_extraction.text import CountVectorizer
from collections import defaultdict
from collections import Counter
plt.style.use('ggplot')
stop=set(stopwords.words('english'))
import re
from nltk.tokenize import word_tokenize
import gensim
import string
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from tqdm import tqdm
from keras.models import Sequential
from keras.layers import Embedding,LSTM,Dense,SpatialDropout1D
from keras.initializers import Constant
from sklearn.model_selection import train_test_split
from keras.optimizers import Adam

訓練データと検証データを読み込みます。

訓練データの一部を表示してデータを確認します。

[ソース]

1
2
3
tweet= pd.read_csv('../input/nlp-getting-started/train.csv')
test=pd.read_csv('../input/nlp-getting-started/test.csv')
tweet.head(10)

[結果]

keywordとlocationが欠損値ばかりです。

targetが予測すべき項目(1が災害関連。0が災害に無関係)なので、ほとんど残りのtext(ツイート)から予測することになりそうです。

検証データの一部も表示してみます、

[ソース]

1
test.head(10)

[結果]

keyword,location,text項目はありますが、target項目がありませんので、このデータを予測する必要があることが確認できました。

分布確認

targetごとのデータ数を分布図で確認してみます。

[ソース]

1
2
3
x=tweet.target.value_counts()
sns.barplot(x.index,x)
plt.gca().set_ylabel('samples')

[結果]

災害関連ツイート(=1)よりも災害に関連しないツイート(=0)の方が多いことが分かります。

次回からはツイート(text)に関するEDA(探索的データ解析)を行っていきます。