問題文
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))