👩‍💻

言語処理100本ノック 2020 (Rev 2) 第1章: 準備運動 05. n-gram

2023/01/06に公開約900字

問題

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を作る関数を作成します。

https://github.com/kurokawa5/nlp100_2020/blob/main/chapter01/solution05.py

参考記事

第1章: 準備運動
N-gramの作り方

Discussion

ログインするとコメントできます