python

【Python】言語処理100本ノック  05. n-gram

この記事の内容

問題文

05. n-gram

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

https://nlp100.github.io/ja/ch01.html

回答

sentence = 'I am an NLPer'

# n_gram関数を作成
def n_gram(sentence, n):
    answer = []
    
    # sentenceの文字数分ループ処理
    for i in range(len(sentence)):

        # 文字数を超えたらanswerを返す
        if i + n > len(sentence):
            return answer
        # iからi+n番目までの文字をanswerに追加
        answer.append(sentence[i: i + n])

# 文字n_gram
# ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
print(n_gram(sentence, n=2))
# 単語n_gram
# [['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
print(n_gram(sentence.split(), n=2))