Python 実践 データ加工/可視化 100本ノック に挑戦 ノック60

Python 実践 データ加工/可視化 100本ノック」を購入したので、

一通りやっているところです。今日はノック60を行います。

資料は以下から入手できます。

Python実践 データ加工/可視化 100本ノック|サポート|秀和システム

 

ノック60 : n-gramを作ってみよう

 

特長エンジニアリングの1つであるn-gramを作成します。

n-gramは文字列やbンしょうを連続するn個のまとまりで分割する手法です。

表層形データを使用します。

まずリストを作成します。

target = mecab_df['表層形'].to_list()
print(len(target))

 

実行結果

6712

 

ngramを実行します。ngramはとくにnが1の場合をuni-gram(ユニグラム)、2の場合をbi-gram(バイグラム)、3の場合をtri-gram(トライグラム)と呼びます

今回は引数に2を指定しているのでバイグラムと呼ばれる形式です。

 

from nltk import ngrams
bigram = ngrams(target,2)

 

collectionsを使用してbigramの数を数えています。

collectionsの詳細については以下を参照下さい。

collections --- コンテナデータ型 — Python 3.10.4 ドキュメント

 

import collections
counter = collections.Counter(bigram)
print(counter)

 

 

 

 

実行結果

Counter({('た', '。'): 142, ('は', '、'): 129, ('だ', '。'): 72, ('。', '」'): 55, ('メロス', 'は'): 47, ('の', 'だ'): 45, ('て', '、'): 39, ('私', 'は'): 36, ('。', '私'): 34, ('。', 'メロス'): 33, ('て', 'いる'): 33, ('。', '「'): 31, ('し', 'た'): 25, ('し', 'て'): 25, ('」', '「'): 24, ('に', 'は'): 22, ('た', 'の'): 22, ('ぬ', '。'): 21, ('が', '、'): 21, ('も', '、'): 20, ('を', '、'): 18, ('に', '、'): 18, (' 
、', 'メロス'): 18, ('て', 'くれ'): 18, ('、', '私'): 17, ('て', '来'): 16, ('私', 'を'): 16, ('無い', '。'): 15, ('で', '、'): 15, ('ああ', '、'): 15, ('ある', '。'): 14, ('来', 'た'): 14, ('い', 'た'): 14, ('なら', 'ぬ'): 13, ('で', 'ある'): 13, ('て', 'い'): 13, ('れ', 'た'): 
13, ('ない', '。'): 13, ('》', 'の'): 12, ('の', 'は'): 12, (・・・

 

 

n-gram

例: I have an apple

ユニグラムで分類されると(I),(have),(an),(apple)

バイグラムで分類されると(I have),(have an),(an apple)

トライグラムで分類されると(I have an),(have an apple)

 

 

 

 

/* -----codeの行番号----- */