Python 実践 データ加工/可視化 100本ノック」を購入したので、
一通りやっているところです。今日はノック60を行います。
資料は以下から入手できます。
Python実践 データ加工/可視化 100本ノック|サポート|秀和システム
ノック60 : n-gramを作ってみよう
特長エンジニアリングの1つであるn-gramを作成します。
n-gramは文字列やbンしょうを連続するn個のまとまりで分割する手法です。
表層形データを使用します。
まずリストを作成します。
実行結果
6712
ngramを実行します。ngramはとくにnが1の場合をuni-gram(ユニグラム)、2の場合をbi-gram(バイグラム)、3の場合をtri-gram(トライグラム)と呼びます。
今回は引数に2を指定しているのでバイグラムと呼ばれる形式です。
collectionsを使用してbigramの数を数えています。
collectionsの詳細については以下を参照下さい。
collections --- コンテナデータ型 — Python 3.10.4 ドキュメント
実行結果
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)