自然言語処理100本ノック2020から逃げるな「05. n-gram」

自然言語処理100本ノック2020の挑戦記録です。
他の問題はこちら → 自然言語処理100本ノック2020から逃げるな まとめ

05. n-gram

与えられたシーケンス(文字列やリストなど)からn-gramを作る関数を作成せよ.この関数を用い,”I am an NLPer”という文から単語bi-gram,文字bi-gramを得よ.

import re


def n_gram(_list, n):
    result = []
    for i in range(len(_list) - n + 1):
        result.append(_list[i:i+n])
    return result


def word_bi_gram(string):
    string_sp = re.findall('[^,. ]+', string)
    return n_gram(string_sp, 2)


def string_bi_gram(string):
    return n_gram(string, 2)


if __name__ == '__main__':
    test_str = "I am an NLPer"
    print(string_bi_gram(test_str))
    print(word_bi_gram(test_str))