Google collabでの動作確認: 2024年2月23日時点
コラボ側のバージョンアップによりマイナーチェンジが要求される場合がある
エラーが出て動かない場合は、大前まで連絡

形態素解析: 文章を品詞レベルに分解

準備:
まず、以下を1回だけ実行します。

### MeCab辞書をインストール
!sudo apt install mecab
!sudo apt install libmecab-dev
!sudo apt install mecab-ipadic-utf8

### 辞書を使える場所に移す
!mv /etc/mecabrc /usr/local/etc/

### pipでインストール
!pip3 install mecab-python3

### インポート
import MeCab
dic = MeCab.Tagger("-Ochasen")

使い方:
以下、形態素解析の最小限のコードです。

Sentence = "今日はいい天気です。"

######
node = dic.parseToNode(Sentence)
info01, info02, word = [], [], []
while node:
    info01.append(node.feature.split(",")[0]) # 品詞情報1
    info02.append(node.feature.split(",")[1]) # 品詞情報2
    word.append(node.surface.split(",")[0]) # 単語
    node=node.next
######

print(info01)
print(info02)
print(word)

Tips:
info01、wordはリストなので、for文で1つずつ解析可能
info01に品詞情報が格納されているので、if文を利用すると、形容詞や名詞だけを取り出すことができる
これ単体で使うというよりも、以下のword2vecなどと組み合わせると効果的

Word2Vec: 単語同士の類似度を測定

準備:
以下は、1回だけ実行すれば良い。2分くらいかかるので、ぐるぐるしていても、気長に待ちます。

!pip3 install gensim
!wget http://int-info.com/PyLearn/usedat/model.vec
import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('model.vec', binary=False)

使い方:

w1 = "りんご"
w2 = "みかん"
dist = model.similarity(w1, w2)
print(dist)

Tips:
内部辞書に存在しない単語を入れるとエラーが出るので、注意。例えば、「りんごん」など。
最小0〜最大1のレンジ
体感的に、関係がある2単語を入れると、0.4以上が出る。
無関係な2単語を入れると、0.2未満くらいの値が出る。
何か閾値があるわけではないので、自分で解釈する必要があり。

極性判定(ネガポジ判定): 単語や文章のポジを測定

準備:
以下は1回だけ実行すれば良い。何度もやらないこと。

!pip install oseti
import oseti
analyzer = oseti.Analyzer()

使い方:

te = "今日の試合で勝ちました。"
re = analyzer.analyze(te)
print(re[0])

Tips:
-1だとネガティブ、+1だとポジティブ、0だとどちらでもない。
ネガポジが混ざった文章だと、0.333などになる。
analyzer関数は、リストでネガポジ結果を返却してくるため、0番目のインデックスにアクセスして取り出した方が良い
文章レベルで入れても良いし、単語レベルで入れても良い。後者の場合、形態素解析と組み合わる必要がある