👩💻
言語処理100本ノック 2020 (Rev 2) 第1章: 準備運動 05. n-gram
問題
05. n-gram
与えられたシーケンス(文字列やリストなど)からn-gramを作る関数を作成せよ.この関数を用い,”I am an NLPer”という文から単語bi-gram,文字bi-gramを得よ.
solution05.py
def n_gram(target, n):
return [target[idx:idx + n] for idx in range(len(target) - n + 1)]
text = 'I am an NLPer'
for i in range(1, 4):
print(n_gram(text, i))#空白を含めた文字
print(n_gram(text.split(' '), i))#単語
output
['I', ' ', 'a', 'm', ' ', 'a', 'n', ' ', 'N', 'L', 'P', 'e', 'r']
[['I'], ['am'], ['an'], ['NLPer']]
['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
[['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
['I a', ' am', 'am ', 'm a', ' an', 'an ', 'n N', ' NL', 'NLP', 'LPe', 'Per']
[['I', 'am', 'an'], ['am', 'an', 'NLPer']]
この問題では、n-gramを作る関数を作成します。
Discussion