単語のベクトル化と文章分類は、fastTextのライブラリで実装する。
$ cat /etc/redhat-release
CentOS Linux release 8.3.2011
### fastTextの利用方法
Word representation learning(単語表現学習), Text classification(文章分類)
1.Word representation learning
-> 似ている単語の学習
2.Text classification
-> 分類された文章の学習
どちらも分かち書きした文章が必要になる。
固有表現に強い辞書「mecab-ipadic-NEologd」をインストールする
$ cd /usr/local/src
$ sudo git clone –depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n -y
### fastText install
$ cd /usr/local/src
$ sudo git clone https://github.com/facebookresearch/fastText.git
$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ sudo mkdir build && cd build && sudo cmake ..
$ sudo make && sudo make install
$ which fasttext
/usr/local/bin/fasttext
$ cd /usr/local/src/fastText
$ sudo pip3 install .
$ wget https://github.com/livedoor/datasets/archive/master.zip
$ ls
$ unzip master.zip
$ cd datasets-master/
$ gzip -d ldgourmet.tar.gz
$ tar xvf ldgourmet.tar
$ ls
README.md categories.csv prefs.csv ratings.csv stations.csv
areas.csv ldgourmet.tar rating_votes.csv restaurants.csv
### 前処理 & データセットの作成
app.py
import csv import MeCab import neologdn import re import emoji mecab = MeCab.Tagger('-Owakati -d /usr/lib64/mecab/dic/mecab-ipadic-neologd/') with open('rating.csv') as f: reader = csv.reader(f) next(reader) for row in reader: label = "__label__{0}".format(row[3]) text1 = neologdn.normalize(row[9]) text2 = re.sub(r'https?://[\w/:%#\$&\?\(\)~\.=\+\-]+','', text1) text3 = ''.join(['' if c in emoji.UNICODE_EMOJI else c for c in text2]) tmp = re.sub(r'(\d)([,.])(\d+)', r'\1\3', text3) text4 = re.sub(r'\d+', '0', tmp) tmp = re.sub(r'[!-/:-@[-`{-~]', r' ', text4) text5 = re.sub(u'[■-♯]', ' ', tmp) text = mecab.parse(text5).rstrip('\n') print(label + " , " + text)
なんやこれ、前準備が厄介やな。。。。
どうすっかな、これ。。。