自然言語処理 Janome のテスト

自然言語処理

N-gram は
文章を分割する単位

This is a pen なら
N-gram = 2 なら
This is
is a
a pen
というように前後2つの単語で文章を区切るようになる

N-gram = 1 なら単語ごとになり

N-gram =3 なら
This is a
is a pen
というように3つの単語で区切る

これが N-gram法

2つの単語で区切ればバイグラム
1つの単語ならユニグラム
3つの単語ならトリグラム
となる

これは英語ならできるけど
日本語だとできない
原因は単語と単語が連続しているから

なので、そのままだと日本語に N-gram が使えない

なので 形態素解析エンジンの Janome を使う

インストールは
pip コマンドを使うので
ctrl + Alt + t で端末を開き

 pip install janome

次に jupyter notebook を

jupyter notebook

で起動

これで

from janome.tokenizer import Tokenizer

tokenizer = Tokenizer()
tokens = tokenizer.tokenize('すもももももももものうち')
for token in tokens:
    print(token)

として
shift + Enter で実行すると

すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
という結果になり
解析できているのがわかる

次に分かち書き

これは
tokenize() で wakati=True を指定すればOK
あとは join()
でリストの中身をつないで
分かち書きの文字列を作成

tokenizer = Tokenizer()
tokens = tokenizer.tokenize('すもももももももものうち',wakati=True)
print(tokens)

wakati =" ".join(tokens)
print(wakati)

結果は

tokenizer = Tokenizer()

tokens = tokenizer.tokenize(‘すもももももももものうち’,wakati=True)

print(tokens)

wakati =” “.join(tokens)

print(wakati)

[‘すもも’, ‘も’, ‘もも’, ‘も’, ‘もも’, ‘の’, ‘うち’]
すもも も もも も もも の うち