読者です 読者をやめる 読者になる 読者になる

mu chance or much chance ?

日々の戯れ言

言語処理100本ノック 2015 05

  • 問題

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

  • 解答例
def ngram(n, sentence):
    gram = []
    for i in range(len(sentence) - n + 1):
        gram.append(''.join(sentence[i:i + n]))
    return gram

str = "I am an NLPer"
ans1 = ngram(2, str.split())
ans2 = ngram(2, str)
print(ans1)
print(ans2)
  • コメント

splitで単語分割した配列データとして扱えるころができるので,
単語bi-gram,文字bi-gramも同じ関数で扱えるので楽で良いですね.